1 //|||||||||||||||||||||||||||||||||||||||||||||||
2 
3 #ifndef OGRE_FRAMEWORK_H
4 #define OGRE_FRAMEWORK_H
5 
6 //|||||||||||||||||||||||||||||||||||||||||||||||
7 
8 #include <OgreCamera.h>
9 #include <OgreEntity.h>
10 #include <OgreLogManager.h>
11 #include <OgreOverlay.h>
12 #include <OgreOverlayElement.h>
13 #include <OgreOverlayManager.h>
14 #include <OgreRoot.h>
15 #include <OgreViewport.h>
16 #include <OgreSceneManager.h>
17 #include <OgreRenderWindow.h>
18 #include <OgreConfigFile.h>
19 
20 #include <OISEvents.h>
21 #include <OISInputManager.h>
22 #include <OISKeyboard.h>
23 #include <OISMouse.h>
24 
25 #ifdef OGRE_STATIC_LIB
26 #  define OGRE_STATIC_GL
27 #  if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
28 #    define OGRE_STATIC_Direct3D9
29 // dx10 will only work on vista, so be careful about statically linking
30 #    if OGRE_USE_D3D10
31 #      define OGRE_STATIC_Direct3D10
32 #    endif
33 #  endif
34 #  define OGRE_STATIC_CgProgramManager
35 #  ifdef OGRE_USE_PCZ
36 #    define OGRE_STATIC_PCZSceneManager
37 #    define OGRE_STATIC_OctreeZone
38 #  endif
39 #  if OGRE_VERSION >= 0x10800
40 #    if OGRE_PLATFORM == OGRE_PLATFORM_APPLE_IOS
41 #      define OGRE_IS_IOS 1
42 #    endif
43 #  else
44 #    if OGRE_PLATFORM == OGRE_PLATFORM_IPHONE
45 #      define OGRE_IS_IOS 1
46 #    endif
47 #  endif
48 #  ifdef OGRE_IS_IOS
49 #    undef OGRE_STATIC_CgProgramManager
50 #    undef OGRE_STATIC_GL
51 #    define OGRE_STATIC_GLES 1
52 #    ifdef OGRE_USE_GLES2
53 #      define OGRE_STATIC_GLES2 1
54 #      define INCLUDE_RTSHADER_SYSTEM
55 #      undef OGRE_STATIC_GLES
56 #    endif
57 #    ifdef __OBJC__
58 #      import <UIKit/UIKit.h>
59 #    endif
60 #  endif
61 #  include "OgreStaticPluginLoader.h"
62 #endif
63 
64 #ifdef OGRE_IS_IOS
65 #   include <OISMultiTouch.h>
66 #endif
67 
68 #include <SdkTrays.h>
69 
70 //|||||||||||||||||||||||||||||||||||||||||||||||
71 
72 #ifdef OGRE_IS_IOS
73 class OgreFramework : public Ogre::Singleton<OgreFramework>, OIS::KeyListener, OIS::MultiTouchListener, OgreBites::SdkTrayListener
74 #else
75 class OgreFramework : public Ogre::Singleton<OgreFramework>, OIS::KeyListener, OIS::MouseListener, OgreBites::SdkTrayListener
76 #endif
77 {
78 public:
79 	OgreFramework();
80 	~OgreFramework();
81 
82 #ifdef OGRE_IS_IOS
83     bool initOgre(Ogre::String wndTitle, OIS::KeyListener *pKeyListener = 0, OIS::MultiTouchListener *pMouseListener = 0);
84 #else
85 	bool initOgre(Ogre::String wndTitle, OIS::KeyListener *pKeyListener = 0, OIS::MouseListener *pMouseListener = 0);
86 #endif
87 	void updateOgre(double timeSinceLastFrame);
88 	void moveCamera();
89 	void getInput();
90 
isOgreToBeShutDown()91 	bool isOgreToBeShutDown()const{return m_bShutDownOgre;}
92 
93 	bool keyPressed(const OIS::KeyEvent &keyEventRef);
94 	bool keyReleased(const OIS::KeyEvent &keyEventRef);
95 
96 #ifdef OGRE_IS_IOS
97 	bool touchMoved(const OIS::MultiTouchEvent &evt);
98 	bool touchPressed(const OIS::MultiTouchEvent &evt);
99 	bool touchReleased(const OIS::MultiTouchEvent &evt);
100 	bool touchCancelled(const OIS::MultiTouchEvent &evt);
101 #else
102 	bool mouseMoved(const OIS::MouseEvent &evt);
103 	bool mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
104 	bool mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
105 #endif
106 
107 	Ogre::Root*                 m_pRoot;
108 	Ogre::SceneManager*			m_pSceneMgr;
109 	Ogre::RenderWindow*			m_pRenderWnd;
110 	Ogre::Camera*				m_pCamera;
111 	Ogre::Viewport*				m_pViewport;
112 	Ogre::Log*                  m_pLog;
113 	Ogre::Timer*				m_pTimer;
114 
115 	OIS::InputManager*			m_pInputMgr;
116 	OIS::Keyboard*				m_pKeyboard;
117 #ifdef OGRE_IS_IOS
118 	OIS::MultiTouch*			m_pMouse;
119 #else
120 	OIS::Mouse*					m_pMouse;
121 #endif
122 
123 protected:
124    // Added for Mac compatibility
125    Ogre::String                 m_ResourcePath;
126 
127 private:
128 	OgreFramework(const OgreFramework&);
129 	OgreFramework& operator= (const OgreFramework&);
130 
131 	OgreBites::SdkTrayManager*  m_pTrayMgr;
132     Ogre::FrameEvent            m_FrameEvent;
133 	int                         m_iNumScreenShots;
134 
135 	bool                        m_bShutDownOgre;
136 
137 	Ogre::Vector3				m_TranslateVector;
138 	Ogre::Real                  m_MoveSpeed;
139 	Ogre::Degree				m_RotateSpeed;
140 	float                       m_MoveScale;
141 	Ogre::Degree				m_RotScale;
142 #ifdef OGRE_STATIC_LIB
143     Ogre::StaticPluginLoader    m_StaticPluginLoader;
144 #endif
145 };
146 
147 //|||||||||||||||||||||||||||||||||||||||||||||||
148 
149 #endif
150 
151 //|||||||||||||||||||||||||||||||||||||||||||||||
152