Files
FC1/Editor/SurfaceType.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

105 lines
2.9 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2001.
// -------------------------------------------------------------------------
// File name: SurfaceType.cpp
// Version: v1.00
// Created: 19/11/2001 by Timur.
// Compilers: Visual C++ 6.0
// Description: Surface type class implementation.
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "SurfaceType.h"
#include "GameEngine.h"
//////////////////////////////////////////////////////////////////////////
CSurfaceType::CSurfaceType()
{
m_detailScale[0] = 1;
m_detailScale[1] = 1;
m_projAxis = ESFT_Z;
}
//////////////////////////////////////////////////////////////////////////
CSurfaceType::~CSurfaceType()
{
m_detailScale[0] = 1;
m_detailScale[1] = 1;
}
//////////////////////////////////////////////////////////////////////////
void CSurfaceType::Serialize( CXmlArchive &xmlAr )
{
if (xmlAr.bLoading)
{
XmlNodeRef sfType = xmlAr.root;
// Name
sfType->getAttr( "Name",m_name );
sfType->getAttr( "DetailTexture",m_detailTexture );
sfType->getAttr( "DetailScaleX",m_detailScale[0] );
sfType->getAttr( "DetailScaleY",m_detailScale[1] );
sfType->getAttr( "Material",m_material );
sfType->getAttr( "ProjectAxis",m_projAxis );
sfType->getAttr( "Bumpmap",m_bumpmap );
XmlNodeRef sfDetObjs = sfType->findChild( "DetailObjects" );
m_detailObjects.clear();
/*for (int i = 0; i < sfDetObjs->getChildCount(); i++)
{
CString s = "";
sfDetObjs->getChild(i)->getAttr( "Name",s );
m_detailObjects.push_back( s );
}*/
}
else
{
////////////////////////////////////////////////////////////////////////
// Storing
////////////////////////////////////////////////////////////////////////
XmlNodeRef sfType = xmlAr.root;
// Name
sfType->setAttr( "Name",m_name );
sfType->setAttr( "DetailTexture",m_detailTexture );
sfType->setAttr( "DetailScaleX",m_detailScale[0] );
sfType->setAttr( "DetailScaleY",m_detailScale[1] );
sfType->setAttr( "Material",m_material );
sfType->setAttr( "ProjectAxis",m_projAxis );
sfType->setAttr( "Bumpmap",m_bumpmap );
switch (m_projAxis)
{
case 0:
sfType->setAttr( "ProjAxis","X" );
break;
case 1:
sfType->setAttr( "ProjAxis","Y" );
break;
case 2:
default:
sfType->setAttr( "ProjAxis","Z" );
};
XmlNodeRef sfDetObjs = sfType->newChild( "DetailObjects" );
for (int i = 0; i < m_detailObjects.size(); i++)
{
XmlNodeRef sfDetObj = sfDetObjs->newChild( "Object" );
sfDetObj->setAttr( "Name",m_detailObjects[i] );
}
}
}
//////////////////////////////////////////////////////////////////////////
void CSurfaceType::SetMaterial( const CString &mtl )
{
m_material = mtl;
GetIEditor()->GetGameEngine()->PutSurfaceTypesToGame();
};