void CDoorPanelBehavior::RestoreOriginalMaterial( CDoorPanel& doorPanel ) { if (m_pOriginalAnimatedMaterial) { ChangeMaterial(doorPanel, DOOR_PANEL_MODEL_NORMAL_SLOT, m_pOriginalAnimatedMaterial); ChangeMaterial(doorPanel, DOOR_PANEL_MODEL_DESTROYED_SLOT, m_pOriginalAnimatedMaterial); m_pActualAnimatedMaterial.reset(); } }
void psCharAppearance::Equip( csString& slotname, csString& mesh, csString& part, csString& subMesh, csString& texture ) { //Bracers must be managed separately as we have two slots in cal3d but only one slot here //To resolve the problem we call recursively this same function with the "corrected" slot names //which are rightarm leftarm if (slotname == "bracers") { for(unsigned int position = 0; position < bracersSlotCount; position++) Equip(BracersSlots[position], mesh, part, subMesh, texture); return; } if ( slotname == "helm" ) { ShowHair(false); } // If it's a new mesh attach that mesh. if ( mesh.Length() ) { if( texture.Length() && !subMesh.Length() ) Attach(slotname, mesh, texture); else Attach(slotname, mesh); } // This is a subMesh on the model change so change the mesh for that part. if ( subMesh.Length() ) { // Change the mesh on the part of the model. ChangeMesh(part, subMesh); // If there is also a new material ( texture ) then place that on as well. if ( texture.Length() ) { ChangeMaterial( ParseStrings(part,subMesh), texture); } } else if ( part.Length() ) { ChangeMaterial(part, texture); } }
void psCharAppearance::DefaultMaterial(csString& part) { bool skinToneSetFound = false; for ( size_t z = 0; z < skinToneSet.GetSize(); z++ ) { if ( part == skinToneSet[z].part ) { skinToneSetFound = true; ChangeMaterial(part, skinToneSet[z].material); } } // Set stateFactory defaults if no skinToneSet found. if ( !skinToneSetFound && stateFactory.IsValid() ) { ChangeMaterial(part, stateFactory->GetDefaultMaterial(part)); } }
bool psCharAppearance::Dequip(csString& slotname, csString& mesh, csString& part, csString& subMesh, csString& texture) { //look Equip() for more informations on this: bracers must be managed separately if (slotname == "bracers") { for(unsigned int position = 0; position < bracersSlotCount; position++) Dequip(BracersSlots[position], mesh, part, subMesh, texture); return true; } if ( slotname == "helm" ) { ShowHair(true); } if ( mesh.Length() ) { ClearEquipment(slotname); Detach(slotname); } // This is a part mesh (ie Mesh) set default mesh for that part. if ( subMesh.Length() ) { DefaultMesh(part); } if ( part.Length() ) { if ( texture.Length() ) { ChangeMaterial(part, texture); } else { DefaultMaterial(part); } DefaultMaterial(part); } ClearEquipment(slotname); return true; }
void psCharAppearance::SetSkinTone(csString& part, csString& material) { if (!baseMesh || !part || !material) { return; } else { SkinToneSet s; s.part = part; s.material = material; skinToneSet.Push(s); ChangeMaterial(part, material); } }
void CDoorPanelBehavior::ReplaceAnimatedMaterial( CDoorPanel& doorPanel, IMaterial* pAnimatedMaterial ) { ChangeMaterial( doorPanel, DOOR_PANEL_MODEL_NORMAL_SLOT, pAnimatedMaterial ); ChangeMaterial( doorPanel, DOOR_PANEL_MODEL_DESTROYED_SLOT, pAnimatedMaterial ); // For now destroyed model is using an animated texture as well m_pActualAnimatedMaterial = pAnimatedMaterial; }
void CDoorPanelBehavior::ChangeMaterial( CDoorPanel& doorPanel, const int iSlot, const char* szMaterial ) { IMaterial* pMaterial = gEnv->p3DEngine->GetMaterialManager()->LoadMaterial( szMaterial ); ChangeMaterial( doorPanel, iSlot, pMaterial ); }
void psCharAppearance::FaceTexture(csString& faceMaterial) { ChangeMaterial("Head", faceMaterial); }
void lterrain::ChangeMainMaterial(material* NewMaterial, int SpecialFlags) { ChangeMaterial(MainMaterial, NewMaterial, 0, SpecialFlags); }