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();
	}
}
Beispiel #2
0
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);
    }
}
Beispiel #3
0
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));
    }
}
Beispiel #4
0
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;
}
Beispiel #5
0
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 );
}
Beispiel #8
0
void psCharAppearance::FaceTexture(csString& faceMaterial)
{
    ChangeMaterial("Head", faceMaterial);
}
Beispiel #9
0
void lterrain::ChangeMainMaterial(material* NewMaterial, int SpecialFlags) { ChangeMaterial(MainMaterial, NewMaterial, 0, SpecialFlags); }