#ifndef CSCENEMANAGER_h #define CSCENEMANAGER_h #include #include #include #include "CAreaAttributes.h" #include "CRenderer.h" #include #include #include #include #include #include #include #include #include #include #include class CSceneManager { bool mShowTerrain; bool mShowCollision; bool mShowObjects; bool mShowLights; bool mSplitTerrain; u32 mNodeCount; std::vector mModelNodes; std::vector mStaticNodes; std::vector mCollisionNodes; std::vector mScriptNodes; std::vector mLightNodes; CRootNode *mpSceneRootNode; CGameArea *mpArea; CWorld *mpWorld; CToken mAreaToken; CToken mWorldToken; CRootNode *mpAreaRootNode; // Environment std::vector mAreaAttributesObjects; CAreaAttributes *mpActiveAreaAttributes; // Objects std::unordered_map 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