/********************************************************************** *< oExporter plugin Private Beta (see License.txt) FILE: ogreAnimationCompiler.h DESCRIPTION: OE_XMLScene reader (oe_scene) include header IMPLEMENTED BY: Lioric HISTORY: Original implementation by Lasse Tassing (Channex) 2005 ITE ApS, Lasse Tassing *> Copyright (c) 2005, All Rights Reserved. **********************************************************************/ #ifndef __OGRE_XML_SCENE__ #define __OGRE_XML_SCENE__ #include "Ogre.h" #include "OgreSharedPtr.h" #include "..\TinyXML\tinyxml.h" #include "IOSMSceneCallbacks.h" class TiXmlDocumentPtr : public Ogre::SharedPtr { public: TiXmlDocumentPtr() : Ogre::SharedPtr() {} explicit TiXmlDocumentPtr(TiXmlDocument* rep) : Ogre::SharedPtr(rep) {} }; class OSMScene { public: typedef std::vector CameraList; typedef std::vector LightList; typedef std::vector EntityList; OSMScene(Ogre::SceneManager* pSceneMgr = 0, Ogre::RenderWindow* win = 0); ~OSMScene(void); // Initialise bool initialise(const char *pszXMLFile, OSMSceneCallbacks* pCallbacks = NULL); // Declare all resources used in the scene void declareResources(void); // Create scene, optionally attaching it to a parent node bool createScene(Ogre::SceneNode *pParent = NULL); // Get list of cameras in this scene CameraList& getCameraList(void); // Get list of lights in this scene LightList& getLightList(void); // Get list of lights in this scene EntityList& getEntityList(void); // Get created scene manager Ogre::SceneManager* getSceneManager(void) { return mSceneMgr; } private: // Create node from information Ogre::SceneNode* createNode(TiXmlElement* pElem, Ogre::SceneNode *pSceneRoot); // Creation helpers void setSceneProperties(TiXmlElement* sceneProp); void createEntities(TiXmlElement* pEntityNode, Ogre::SceneNode *pSceneRoot); void createLights(TiXmlElement* pLightNode, Ogre::SceneNode *pSceneRoot); void createCameras(TiXmlElement* pCameraNode, Ogre::SceneNode *pSceneRoot); // Created objects CameraList mCameras; LightList mLights; EntityList mEntities; // Callback interface OSMSceneCallbacks* mCallbacks; // Scene manager Ogre::SceneManager* mSceneMgr; Ogre::RenderWindow* mWindow; // Scene XML document TiXmlDocumentPtr mXMLDoc; }; #endif