Ticket #143: receiveshadows_r11037_02072012.patch
File receiveshadows_r11037_02072012.patch, 6.3 KB (added by , 12 years ago) |
---|
-
source/graphics/Model.cpp
462 462 if (source->m_Flags & MODELFLAG_CASTSHADOWS) 463 463 m_Flags |= MODELFLAG_CASTSHADOWS; 464 464 465 m_Flags &= ~MODELFLAG_RECEIVESHADOWS; 466 if (source->m_Flags & MODELFLAG_RECEIVESHADOWS) 467 m_Flags |= MODELFLAG_RECEIVESHADOWS; 468 465 469 m_ObjectBounds.SetEmpty(); 466 470 InvalidateBounds(); 467 471 } -
source/graphics/Model.h
36 36 class CSkeletonAnimDef; 37 37 class CSkeletonAnimManager; 38 38 39 #define MODELFLAG_CASTSHADOWS (1<<0) 40 #define MODELFLAG_NOLOOPANIMATION (1<<1) 41 #define MODELFLAG_SILHOUETTE_DISPLAY (1<<2) 42 #define MODELFLAG_SILHOUETTE_OCCLUDER (1<<3) 43 #define MODELFLAG_FILTERED (1<<4) // used internally by renderer 39 #define MODELFLAG_CASTSHADOWS (1<<0) 40 #define MODELFLAG_RECEIVESHADOWS (1<<1) 41 #define MODELFLAG_NOLOOPANIMATION (1<<2) 42 #define MODELFLAG_SILHOUETTE_DISPLAY (1<<3) 43 #define MODELFLAG_SILHOUETTE_OCCLUDER (1<<4) 44 #define MODELFLAG_FILTERED (1<<5) // used internally by renderer 44 45 45 46 /////////////////////////////////////////////////////////////////////////////// 46 47 // CModel: basically, a mesh object - holds the texturing and skinning -
source/graphics/ObjectBase.cpp
34 34 CObjectBase::CObjectBase(CObjectManager& objectManager) 35 35 : m_ObjectManager(objectManager) 36 36 { 37 m_Properties.m_CastShadows = true; 37 m_Properties.m_CastShadows = false; 38 m_Properties.m_ReceiveShadows = false; 38 39 m_Properties.m_AutoFlatten = false; 39 40 m_Properties.m_FloatOnWater = false; 40 41 } … … 53 54 #define AT(x) int at_##x = XeroFile.GetAttributeID(#x) 54 55 EL(actor); 55 56 EL(castshadow); 57 EL(receiveshadow); 56 58 EL(float); 57 59 EL(material); 58 60 EL(group); … … 245 247 } 246 248 else if (child_name == el_castshadow) 247 249 { 248 m_Properties.m_CastShadows = true; // TODO: this is the default, so it's a bit useless250 m_Properties.m_CastShadows = true; 249 251 } 252 else if (child_name == el_receiveshadow) 253 { 254 m_Properties.m_ReceiveShadows = true; 255 } 250 256 else if (child_name == el_float) 251 257 { 252 258 m_Properties.m_FloatOnWater = true; -
source/graphics/ObjectBase.h
147 147 bool m_AutoFlatten; 148 148 // cast shadows from this object 149 149 bool m_CastShadows; 150 // this object receives shadows 151 bool m_ReceiveShadows; 150 152 // float on top of water 151 153 bool m_FloatOnWater; 152 154 } m_Properties; -
source/graphics/ObjectEntry.cpp
227 227 model->SetFlags(model->GetFlags()|MODELFLAG_CASTSHADOWS); 228 228 } 229 229 230 if (m_Base->m_Properties.m_ReceiveShadows) 231 { 232 model->SetFlags(model->GetFlags()|MODELFLAG_RECEIVESHADOWS); 233 } 234 230 235 return true; 231 236 } 232 237 -
source/tools/atlas/AtlasUI/ActorEditor/ActorEditor.cpp
73 73 m_CastShadows = new wxCheckBox(propertiesPanel, wxID_ANY, _("Cast shadow")); 74 74 propertiesSizer->Add(m_CastShadows, wxSizerFlags().Border(wxALL, 5)); 75 75 76 m_ReceiveShadows = new wxCheckBox(propertiesPanel, wxID_ANY, _("Receive shadow")); 77 propertiesSizer->Add(m_ReceiveShadows, wxSizerFlags().Border(wxALL, 5)); 78 76 79 m_Float = new wxCheckBox(propertiesPanel, wxID_ANY, _("Float on water")); 77 80 propertiesSizer->Add(m_Float, wxSizerFlags().Border(wxALL, 5)); 78 81 … … 107 110 m_ActorEditorListCtrl->ThawData(actor); 108 111 109 112 m_CastShadows->SetValue(actor["castshadow"].defined()); 113 m_ReceiveShadows->SetValue(actor["receiveshadow"].defined()); 110 114 m_Float->SetValue(actor["float"].defined()); 111 115 m_Material->SetValue((wxString)actor["material"]); 112 116 } … … 118 122 if (m_CastShadows->IsChecked()) 119 123 actor.set("castshadow", L""); 120 124 125 if (m_ReceiveShadows->IsChecked()) 126 actor.set("receiveshadow", L""); 127 121 128 if (m_Float->IsChecked()) 122 129 actor.set("float", L""); 123 130 … … 173 180 174 181 if (wxString(in["Object"]["Properties"]["@castshadows"]) == _T("1")) 175 182 actor.add("castshadow", L""); 183 184 if (wxString(in["Object"]["Properties"]["@receiveshadows"]) == _T("1")) 185 actor.add("receiveshadow", L""); 176 186 177 187 // Things to strip leading strings (for converting filenames, since the 178 188 // new format doesn't store the entire path) … … 247 257 AtObj actor; 248 258 249 259 if (in["actor"]["castshadow"].defined()) actor.add("castshadow", in["actor"]["castshadow"]); 260 if (in["actor"]["receiveshadow"].defined()) actor.add("receiveshadow", in["actor"]["receiveshadow"]); 250 261 if (in["actor"]["material"].defined()) actor.add("material", in["actor"]["material"]); 251 262 252 263 for (AtIter grpit = in["actor"]["group"]; grpit.defined(); ++grpit) … … 317 328 m_ActorEditorListCtrl->ImportData(actor); 318 329 319 330 m_CastShadows->SetValue(actor["castshadow"].defined()); 331 m_ReceiveShadows->SetValue(actor["receiveshadow"].defined()); 320 332 m_Float->SetValue(actor["float"].defined()); 321 333 m_Material->SetValue((wxString)actor["material"]); 322 334 } … … 330 342 331 343 if (m_CastShadows->IsChecked()) 332 344 actor.set("castshadow", L""); 345 346 if (m_ReceiveShadows->IsChecked()) 347 actor.set("receiveshadow", L""); 333 348 334 349 if (m_Float->IsChecked()) 335 350 actor.set("float", L""); -
source/tools/atlas/AtlasUI/ActorEditor/ActorEditor.h
48 48 ActorEditorListCtrl* m_ActorEditorListCtrl; 49 49 50 50 wxCheckBox* m_CastShadows; 51 wxCheckBox* m_ReceiveShadows; 51 52 wxCheckBox* m_Float; 52 53 wxComboBox* m_Material; 53 54