[21] | 1 | /* |
---|
| 2 | ----------------------------------------------------------------------------- |
---|
| 3 | This source file is part of OGRE |
---|
| 4 | (Object-oriented Graphics Rendering Engine) |
---|
| 5 | For the latest info, see http://www.ogre3d.org/ |
---|
| 6 | |
---|
| 7 | Copyright (c) 2000-2006 The OGRE Team |
---|
| 8 | Also see acknowledgements in Readme.html |
---|
| 9 | |
---|
| 10 | You may use this sample code for anything you like, it is not covered by the |
---|
| 11 | LGPL like the rest of the engine. |
---|
| 12 | ----------------------------------------------------------------------------- |
---|
| 13 | */ |
---|
| 14 | |
---|
| 15 | #ifndef _ColladaDemo_H_ |
---|
| 16 | #define _ColladaDemo_H_ |
---|
| 17 | |
---|
| 18 | #include "Ogre.h" |
---|
| 19 | #include "CEGUI/CEGUI.h" |
---|
| 20 | #include "CEGUI/CEGUIRenderer.h" |
---|
| 21 | |
---|
| 22 | //--------------------------------------------------------------------------- |
---|
| 23 | class UIHandler; |
---|
| 24 | |
---|
| 25 | class ColladaDemo |
---|
| 26 | { |
---|
| 27 | protected: |
---|
| 28 | Ogre::Root* mRoot; |
---|
| 29 | Ogre::SceneManager* mSceneMgr; |
---|
| 30 | UIHandler* mFrameListener; |
---|
| 31 | Ogre::RenderWindow* mWindow; |
---|
| 32 | Ogre::Camera* mActiveCamera; |
---|
| 33 | |
---|
| 34 | CEGUI::Renderer* mGUIRenderer; |
---|
| 35 | CEGUI::System* mGUISystem; |
---|
| 36 | CEGUI::Window* mLoadingWindow; |
---|
| 37 | Ogre::String mActiveDaeFileName; |
---|
| 38 | unsigned int mLastUpdateTime; |
---|
| 39 | float mElapsedTime; |
---|
| 40 | bool mAutoReload; |
---|
| 41 | bool mLoadQued; |
---|
| 42 | unsigned long mLastFrameNumber; |
---|
| 43 | |
---|
| 44 | // These internal methods package up the stages in the startup process |
---|
| 45 | /** Sets up the application - returns false if the user chooses to abandon configuration. */ |
---|
| 46 | bool setup(); |
---|
| 47 | |
---|
| 48 | /** Configures the application - returns false if the user chooses to abandon configuration. */ |
---|
| 49 | bool configure(); |
---|
| 50 | void createDefaultCamera(); |
---|
| 51 | void createViewports(); |
---|
| 52 | void updateAvailableCameras(); |
---|
| 53 | void updateDaeFileList(); |
---|
| 54 | |
---|
| 55 | /// Method which will define the source of resources (other than current folder) |
---|
| 56 | void setupResources(); |
---|
| 57 | bool setupGUI(); |
---|
| 58 | void createFrameListener(); |
---|
| 59 | |
---|
| 60 | void initDemoEventWiring(); |
---|
| 61 | |
---|
| 62 | void doErrorBox(const char* text); |
---|
| 63 | void viewColladaDocument(const Ogre::String& daeFileName); |
---|
| 64 | |
---|
| 65 | bool handleQuit(const CEGUI::EventArgs& e); |
---|
| 66 | bool handleDaeComboChanged(const CEGUI::EventArgs& e); |
---|
| 67 | bool handleCameraComboChanged(const CEGUI::EventArgs& e); |
---|
| 68 | bool handleAutoReloadChanged(const CEGUI::EventArgs& e); |
---|
| 69 | bool handleErrorBox(const CEGUI::EventArgs& e); |
---|
| 70 | bool handleUpdateList(const CEGUI::EventArgs& e); |
---|
| 71 | |
---|
| 72 | public: |
---|
| 73 | ColladaDemo() |
---|
| 74 | : mRoot(0) |
---|
| 75 | , mFrameListener(0) |
---|
| 76 | , mGUIRenderer(0) |
---|
| 77 | , mGUISystem(0) |
---|
| 78 | , mLoadingWindow(0) |
---|
| 79 | , mLastUpdateTime(0) |
---|
| 80 | , mElapsedTime(0.0) |
---|
| 81 | , mAutoReload(false) |
---|
| 82 | , mLoadQued(false) |
---|
| 83 | , mLastFrameNumber(0) |
---|
| 84 | { |
---|
| 85 | } |
---|
| 86 | |
---|
| 87 | ~ColladaDemo(); |
---|
| 88 | |
---|
| 89 | void go(); |
---|
| 90 | |
---|
| 91 | void ColladaDemo::setActiveCamera(const Ogre::String& cameraName); |
---|
| 92 | Ogre::Camera* getActiveCamera() const { return mActiveCamera; } |
---|
| 93 | Ogre::SceneManager* getSceneManager() const { return mSceneMgr; } |
---|
| 94 | Ogre::RenderWindow* getRenderWindow() const { return mWindow; } |
---|
| 95 | |
---|
| 96 | void clearScene(); |
---|
| 97 | void loadActiveDae(); |
---|
| 98 | void updateAutoReload(float time); |
---|
| 99 | bool checkActiveFileUpdated(); |
---|
| 100 | void showLoadingWindow(const bool show); |
---|
| 101 | |
---|
| 102 | }; |
---|
| 103 | |
---|
| 104 | |
---|
| 105 | #endif // end _ColladaDemo_H_ |
---|