88 lines
2.3 KiB
C
88 lines
2.3 KiB
C
|
#ifndef CSCENEMANAGER_h
|
||
|
#define CSCENEMANAGER_h
|
||
|
|
||
|
#include <string>
|
||
|
#include <vector>
|
||
|
#include <GL/glew.h>
|
||
|
|
||
|
#include "CAreaAttributes.h"
|
||
|
#include "CRenderer.h"
|
||
|
#include <Common/SRayIntersection.h>
|
||
|
#include <Common/types.h>
|
||
|
#include <Scene/CSceneNode.h>
|
||
|
#include <Scene/CRootNode.h>
|
||
|
#include <Scene/CLightNode.h>
|
||
|
#include <Scene/CModelNode.h>
|
||
|
#include <Scene/CScriptNode.h>
|
||
|
#include <Scene/CStaticNode.h>
|
||
|
#include <Scene/CCollisionNode.h>
|
||
|
#include <Resource/CGameArea.h>
|
||
|
#include <Resource/CWorld.h>
|
||
|
|
||
|
class CSceneManager
|
||
|
{
|
||
|
bool mShowTerrain;
|
||
|
bool mShowCollision;
|
||
|
bool mShowObjects;
|
||
|
bool mShowLights;
|
||
|
bool mSplitTerrain;
|
||
|
|
||
|
u32 mNodeCount;
|
||
|
std::vector<CModelNode*> mModelNodes;
|
||
|
std::vector<CStaticNode*> mStaticNodes;
|
||
|
std::vector<CCollisionNode*> mCollisionNodes;
|
||
|
std::vector<CScriptNode*> mScriptNodes;
|
||
|
std::vector<CLightNode*> mLightNodes;
|
||
|
CRootNode *mpSceneRootNode;
|
||
|
|
||
|
CGameArea *mpArea;
|
||
|
CWorld *mpWorld;
|
||
|
CToken mAreaToken;
|
||
|
CToken mWorldToken;
|
||
|
CRootNode *mpAreaRootNode;
|
||
|
|
||
|
// Environment
|
||
|
std::vector<CAreaAttributes> mAreaAttributesObjects;
|
||
|
CAreaAttributes *mpActiveAreaAttributes;
|
||
|
|
||
|
// Objects
|
||
|
std::unordered_map<u32, CScriptNode*> mScriptNodeMap;
|
||
|
|
||
|
public:
|
||
|
CSceneManager();
|
||
|
~CSceneManager();
|
||
|
|
||
|
// Scene Management
|
||
|
CModelNode* AddModel(CModel *mdl);
|
||
|
CStaticNode* AddStaticModel(CStaticModel *mdl);
|
||
|
CCollisionNode* AddCollision(CCollisionMesh *mesh);
|
||
|
CScriptNode* AddScriptObject(CScriptObject *obj);
|
||
|
CLightNode* AddLight(CLight *Light);
|
||
|
void SetActiveArea(CGameArea *_area);
|
||
|
void SetActiveWorld(CWorld *_world);
|
||
|
void ClearScene();
|
||
|
void AddSceneToRenderer(CRenderer *pRenderer);
|
||
|
SRayIntersection SceneRayCast(const CRay& Ray);
|
||
|
void PickEnvironmentObjects();
|
||
|
CScriptNode* ScriptNodeByID(u32 InstanceID);
|
||
|
CScriptNode* NodeForObject(CScriptObject *pObj);
|
||
|
CLightNode* NodeForLight(CLight *pLight);
|
||
|
|
||
|
// Setters/Getters
|
||
|
CModel* GetActiveSkybox();
|
||
|
CGameArea* GetActiveArea();
|
||
|
|
||
|
void SetBackfaceCulling(bool on);
|
||
|
void SetWorld(bool on);
|
||
|
void SetCollision(bool on);
|
||
|
void SetObjects(bool on);
|
||
|
void SetLights(bool on);
|
||
|
bool IsBackfaceCullEnabled();
|
||
|
bool IsTerrainEnabled();
|
||
|
bool IsCollisionEnabled();
|
||
|
bool AreLightsEnabled();
|
||
|
bool AreScriptObjectsEnabled();
|
||
|
};
|
||
|
|
||
|
#endif // CSCENEMANAGER_H
|