2015-07-26 21:39:49 +00:00
# ifndef CGAMEAREA_H
# define CGAMEAREA_H
2015-09-26 22:55:14 +00:00
# include "CCollisionMeshGroup.h"
2015-07-26 21:39:49 +00:00
# include "CLight.h"
# include "CMaterialSet.h"
# include "model/CModel.h"
# include "model/CStaticModel.h"
# include "CResource.h"
# include <Common/types.h>
# include <Common/CTransform4f.h>
# include <unordered_map>
2015-12-13 20:52:17 +00:00
class CScriptLayer ;
class CScriptObject ;
2015-07-26 21:39:49 +00:00
class CGameArea : public CResource
{
2015-12-13 21:06:24 +00:00
DECLARE_RESOURCE_TYPE ( eArea )
2015-07-26 21:39:49 +00:00
friend class CAreaLoader ;
u32 mVertexCount ;
u32 mTriangleCount ;
bool mTerrainMerged ;
CTransform4f mTransform ;
CAABox mAABox ;
// Geometry
CMaterialSet * mMaterialSet ;
std : : vector < CModel * > mTerrainModels ; // TerrainModels is the original version of each model; this is used by the editor (bounding box checks, material editing, etc)
std : : vector < CStaticModel * > mStaticTerrainModels ; // StaticTerrainModels is the merged terrain for faster rendering in the world editor
// Script
std : : vector < CScriptLayer * > mScriptLayers ;
CScriptLayer * mpGeneratorLayer ;
std : : unordered_map < u32 , CScriptObject * > mObjectMap ;
// Collision
2015-09-26 22:55:14 +00:00
CCollisionMeshGroup * mCollision ;
2015-07-26 21:39:49 +00:00
// Lights
std : : vector < std : : vector < CLight * > > mLightLayers ;
public :
CGameArea ( ) ;
~ CGameArea ( ) ;
void AddWorldModel ( CModel * mdl ) ;
void MergeTerrain ( ) ;
void ClearTerrain ( ) ;
void ClearScriptLayers ( ) ;
// Getters
CTransform4f GetTransform ( ) ;
u32 GetTerrainModelCount ( ) ;
u32 GetStaticModelCount ( ) ;
CModel * GetTerrainModel ( u32 mdl ) ;
CStaticModel * GetStaticModel ( u32 mdl ) ;
2015-09-26 22:55:14 +00:00
CCollisionMeshGroup * GetCollision ( ) ;
2015-07-26 21:39:49 +00:00
u32 GetScriptLayerCount ( ) ;
CScriptLayer * GetScriptLayer ( u32 index ) ;
CScriptLayer * GetGeneratorLayer ( ) ;
CScriptObject * GetInstanceByID ( u32 InstanceID ) ;
u32 GetLightLayerCount ( ) ;
u32 GetLightCount ( u32 layer ) ;
CLight * GetLight ( u32 layer , u32 light ) ;
CAABox AABox ( ) ;
} ;
# endif // CGAMEAREA_H