#ifndef CSCENE_H #define CSCENE_H #include "CSceneNode.h" #include "CRootNode.h" #include "CLightNode.h" #include "CModelNode.h" #include "CScriptNode.h" #include "CStaticNode.h" #include "CCollisionNode.h" #include "FShowFlags.h" #include "Core/Render/CRenderer.h" #include "Core/Render/SViewInfo.h" #include "Core/Resource/CGameArea.h" #include "Core/Resource/CWorld.h" #include "Core/CAreaAttributes.h" #include "Core/SRayIntersection.h" #include #include #include class CScene { bool mSplitTerrain; u32 mNumNodes; CRootNode *mpSceneRootNode; std::unordered_map> mNodes; TResPtr mpArea; TResPtr mpWorld; CRootNode *mpAreaRootNode; // Environment std::vector mAreaAttributesObjects; // Objects std::unordered_map mScriptNodeMap; public: CScene(); ~CScene(); // Scene Management CModelNode* CreateModelNode(CModel *pModel); CStaticNode* CreateStaticNode(CStaticModel *pModel); CCollisionNode* CreateCollisionNode(CCollisionMeshGroup *pMesh); CScriptNode* CreateScriptNode(CScriptObject *pObj); CLightNode* CreateLightNode(CLight *pLight); void SetActiveArea(CGameArea *pArea); void SetActiveWorld(CWorld *pWorld); void ClearScene(); void AddSceneToRenderer(CRenderer *pRenderer, const SViewInfo& rkViewInfo); SRayIntersection SceneRayCast(const CRay& rkRay, const SViewInfo& rkViewInfo); CScriptNode* ScriptNodeByID(u32 InstanceID); CScriptNode* NodeForObject(CScriptObject *pObj); CLightNode* NodeForLight(CLight *pLight); // Setters/Getters CModel* GetActiveSkybox(); CGameArea* GetActiveArea(); }; #endif // CSCENE_H