00001 /* 00002 * GraphicsInteractionManager.h 00003 * 00004 * Created on: Dec 20, 2011 00005 * Author: sushil 00006 */ 00007 00008 00009 #ifndef GRAPHICSINTERACTIONMANAGER_H_ 00010 #define GRAPHICSINTERACTIONMANAGER_H_ 00011 00012 00013 #include <map> 00014 00015 #include <OgreCamera.h> 00016 /* 00017 * 00018 #include <OgreLogManager.h> 00019 */ 00020 #include <OgreRoot.h> 00021 #include <OgreViewport.h> 00022 #include <OgreSceneManager.h> 00023 #include <OgreRenderWindow.h> 00024 #include <OgreConfigFile.h> 00025 #include <OgreSceneNode.h> 00026 00027 /* 00028 #include <OISEvents.h> 00029 #include <OISInputManager.h> 00030 #include <OISKeyboard.h> 00031 #include <OISMouse.h> 00032 */ 00033 00034 //#include <SdkTrays.h> 00035 //#include <SdkCameraMan.h> 00036 #include <OgreFrameListener.h> 00037 #include <OgreWindowEventUtilities.h> 00038 00039 #include <gfxNode.h> 00040 #include <const.h> 00041 #include <engine.h> 00042 #include <uiMgr.h> 00043 #include <widgetMgr.h> 00044 #include <gfxConst.h> 00045 00046 00047 extern const int FastEcslent::MaxEnts; 00048 00049 namespace OgreGFX { 00050 00051 //class GraphicsInteractionManager : public Ogre::FrameListener, public Ogre::WindowEventListener, public OIS::KeyListener, public OIS::MouseListener, OgreBites::SdkTrayListener 00052 class GraphicsInteractionManager : public Ogre::FrameListener, public Ogre::WindowEventListener { 00053 public: 00054 GraphicsInteractionManager(FastEcslent::Engine* eng); 00055 ~GraphicsInteractionManager(void); 00056 00057 void go(void); 00058 FastEcslent::Engine* engine; 00059 UIMgr* uiMgr; 00060 WidgetMgr* widgetMgr; 00061 00062 Ogre::Root *mRoot; 00063 Ogre::SceneManager* mSceneMgr; 00064 Ogre::RenderWindow* mWindow; 00065 Ogre::Camera* mCamera; 00066 00067 Ogre::SceneNode* headNode; 00068 Ogre::SceneNode* referenceNode; 00069 Ogre::SceneNode* armoury; 00070 Ogre::SceneNode* commandCenter; 00071 GFXNode gfxNodes[FastEcslent::MaxEnts]; 00072 std::map<Ogre::SceneNode*, int> sceneNodeToEntIdMap; 00073 int nGFXNodes; 00074 /* 00075 Ogre::SceneNode* entityNodes[FastEcslent::MaxEnts]; 00076 bool selectable[FastEcslent::MaxEnts]; 00077 */ 00078 00079 Ogre::Plane oceanSurface; 00080 00081 public: 00082 bool setup(); 00083 void initManagers(); 00084 bool configure(void); 00085 void chooseSceneManager(void); 00086 void createCamera(void); 00087 void createFrameListener(void); 00088 00089 void createUIMgr(void); 00090 void createWidgetMgr(void); 00091 // void createInputSystem(void); 00092 00093 void createScene(void);// = 0; // Override me! 00094 void destroyScene(void); 00095 void createViewports(void); 00096 void setupResources(void); 00097 void createResourceListener(void); 00098 void loadResources(void); 00099 00100 // Ogre::FrameListener 00101 bool frameRenderingQueued(const Ogre::FrameEvent& evt); 00102 00103 // Ogre::WindowEventListener 00104 //Adjust mouse clipping area 00105 void windowResized(Ogre::RenderWindow* rw); 00106 //Unattach OIS before window shutdown (very important under Linux) 00107 void windowClosed(Ogre::RenderWindow* rw); 00108 00109 //Simulation bridge 00110 void makeInitialEntityNodes(); 00111 void makeNode(FastEcslent::Entity *); 00112 00113 void handleDevelopingEnts(); 00114 void handleBornEnts(); 00115 void copySimState(); 00116 00117 Ogre::String mResourcesCfg; 00118 Ogre::String mPluginsCfg; 00119 00120 bool mCursorWasVisible; // was cursor visible before dialog appeared 00121 bool mShutDown; 00122 00123 }; 00124 00125 } 00126 00127 #endif /* GRAPHICSINTERACTIONMANAGER_H_ */