/* ----------------------------------------------------------------------------- This source file is part of OGRE (Object-oriented Graphics Rendering Engine) For the latest info, see http://www.ogre3d.org/ Copyright (c) 2000-2006 The OGRE Team Also see acknowledgements in Readme.html You may use this sample code for anything you like, it is not covered by the LGPL like the rest of the engine. ----------------------------------------------------------------------------- */ #ifndef _ColladaDemo_H_ #define _ColladaDemo_H_ #include "Ogre.h" #include "CEGUI/CEGUI.h" #include "CEGUI/CEGUIRenderer.h" //--------------------------------------------------------------------------- class UIHandler; class ColladaDemo { protected: Ogre::Root* mRoot; Ogre::SceneManager* mSceneMgr; UIHandler* mFrameListener; Ogre::RenderWindow* mWindow; Ogre::Camera* mActiveCamera; CEGUI::Renderer* mGUIRenderer; CEGUI::System* mGUISystem; CEGUI::Window* mLoadingWindow; Ogre::String mActiveDaeFileName; unsigned int mLastUpdateTime; float mElapsedTime; bool mAutoReload; bool mLoadQued; unsigned long mLastFrameNumber; // These internal methods package up the stages in the startup process /** Sets up the application - returns false if the user chooses to abandon configuration. */ bool setup(); /** Configures the application - returns false if the user chooses to abandon configuration. */ bool configure(); void createDefaultCamera(); void createViewports(); void updateAvailableCameras(); void updateDaeFileList(); /// Method which will define the source of resources (other than current folder) void setupResources(); bool setupGUI(); void createFrameListener(); void initDemoEventWiring(); void doErrorBox(const char* text); void viewColladaDocument(const Ogre::String& daeFileName); bool handleQuit(const CEGUI::EventArgs& e); bool handleDaeComboChanged(const CEGUI::EventArgs& e); bool handleCameraComboChanged(const CEGUI::EventArgs& e); bool handleAutoReloadChanged(const CEGUI::EventArgs& e); bool handleErrorBox(const CEGUI::EventArgs& e); bool handleUpdateList(const CEGUI::EventArgs& e); public: ColladaDemo() : mRoot(0) , mFrameListener(0) , mGUIRenderer(0) , mGUISystem(0) , mLoadingWindow(0) , mLastUpdateTime(0) , mElapsedTime(0.0) , mAutoReload(false) , mLoadQued(false) , mLastFrameNumber(0) { } ~ColladaDemo(); void go(); void ColladaDemo::setActiveCamera(const Ogre::String& cameraName); Ogre::Camera* getActiveCamera() const { return mActiveCamera; } Ogre::SceneManager* getSceneManager() const { return mSceneMgr; } Ogre::RenderWindow* getRenderWindow() const { return mWindow; } void clearScene(); void loadActiveDae(); void updateAutoReload(float time); bool checkActiveFileUpdated(); void showLoadingWindow(const bool show); }; #endif // end _ColladaDemo_H_