#pragma once #include #include #include #include #include #include #include namespace RNR { struct WorldUndeserialized { Instance* instance; pugi::xml_node node; }; class World { private: std::map m_refs; std::stack m_undeserialized; Instance* m_datamodel; Workspace* m_workspace; Ogre::Root* m_ogreRoot; Ogre::SceneManager* m_ogreSceneManager; TopMenuBar* m_tmb; void xmlAddItem(pugi::xml_node node, Instance* parent); public: Instance* getRef(std::string ref) { return m_refs[ref]; } World(Ogre::Root* ogre, Ogre::SceneManager* ogreScene); ~World(); void load(char* path); void preStep(); double step(float timestep); void update(); Instance* getDatamodel() { return m_datamodel; } void setDatamodel(Instance* instance) { m_datamodel = instance; } Workspace* getWorkspace() { return m_workspace; } void setWorkspace(Workspace* workspace) { m_workspace = workspace; } Ogre::Root* getOgreRoot() { return m_ogreRoot; } Ogre::SceneManager* getOgreSceneManager() { return m_ogreSceneManager; } }; }