105 lines
2.9 KiB
C++
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();
|
|
}; |