19#include <OgreTextAreaOverlayElement.h>
20#include <OgreOverlay.h>
21#include <OgreOverlayManager.h>
22#include <Bites/OgreWindowEventUtilities.h>
30extern Ogre::Root*
root;
35extern Ogre::RenderWindow*
window;
40extern std::vector<Ogre::Entity*>
entities;
45extern Ogre::Camera*
camera;
61 public Ogre::FrameListener,
public Ogre::WindowEventListener,
62 public OIS::KeyListener,
public OIS::MouseListener
79 Ogre::LogManager::getSingletonPtr()->logMessage(
"[OIS] Initializing...");
81 size_t window_hnd = 0;
82 std::ostringstream window_hnd_str;
83 win->getCustomAttribute(
"WINDOW", &window_hnd);
84 window_hnd_str << window_hnd;
85 pl.insert(std::make_pair(std::string(
"WINDOW"), window_hnd_str.str()));
91 mouse_ =
static_cast<OIS::Mouse*
>(
94 mouse_->setEventCallback(
this);
96 Ogre::WindowEventUtilities::addWindowEventListener(
window_,
this);
98 info_text =
new Ogre::TextAreaOverlayElement(
"DebugText");
100 info_text->setMetricsMode(Ogre::GMM_PIXELS);
104 info_overlay = Ogre::OverlayManager::getSingleton().create(
"DebugOverlay");
114 Ogre::WindowEventUtilities::removeWindowEventListener(
window_,
this);
139 if (
exit_ ==
true)
return false;
143 for (
unsigned int i = 0; i <
entities.size(); ++ i){
144 if (
entities[i]->isVisible() ==
true){
145 Ogre::AnimationStateIterator animations
146 =
entities[i]->getAllAnimationStates()->getAnimationStateIterator();
147 while (animations.hasMoreElements() ==
true){
148 Ogre::AnimationState* state = animations.getNext();
149 if (state->getEnabled() ==
true){
150 state->addTime(evt.timeSinceLastFrame);
152 entities[i]->getName() +
": " + state->getAnimationName()
161 camera_->getParentSceneNode()->translate(
162 Ogre::Vector3(-0.005f, 0.0f, 0.0f), Ogre::Node::TS_LOCAL
167 camera_->getParentSceneNode()->translate(
168 Ogre::Vector3(0.005f, 0.0f, 0.0f), Ogre::Node::TS_LOCAL
173 camera_->getParentSceneNode()->translate(
174 Ogre::Vector3(0.0f, 0.0f, -0.005f), Ogre::Node::TS_LOCAL
179 camera_->getParentSceneNode()->translate(
180 Ogre::Vector3(0.0f, 0.0f, 0.005f), Ogre::Node::TS_LOCAL
206 for (
unsigned int i = 0; i <
entities.size(); ++ i){
221 for(
int i =
entities.size() - 1; i >= 0; -- i){
226 if (
entities[i]->isVisible() ==
true && i != 0){
236 for (
unsigned int i = 0; i <
entities.size(); ++ i){
237 if (
entities[i]->isVisible() ==
true){
238 Ogre::AnimationStateIterator animations
239 =
entities[i]->getAllAnimationStates()
240 ->getAnimationStateIterator();
241 Ogre::AnimationState* old_state;
242 Ogre::AnimationState* new_state = animations.getNext();
243 while (animations.hasMoreElements() ==
true){
244 old_state = new_state;
245 new_state = animations.getNext();
246 if (new_state->getEnabled() ==
true){
247 new_state->setEnabled(
false);
248 new_state->setLoop(
false);
249 old_state->setEnabled(
true);
250 old_state->setLoop(
true);
260 for (
unsigned int i = 0; i <
entities.size(); ++ i){
261 if (
entities[i]->isVisible() ==
true){
262 Ogre::AnimationStateIterator animations
263 =
entities[i]->getAllAnimationStates()->getAnimationStateIterator();
264 while (animations.hasMoreElements() ==
true){
265 Ogre::AnimationState* state = animations.getNext();
267 state->setEnabled(
true);
268 state->setLoop(
true);
272 state->getEnabled() ==
true
273 && animations.hasMoreElements() !=
false
275 state->setEnabled(
false);
276 state->setLoop(
false);
DisplayFrameListener * frame_listener
The display frame listener.
Definition: OgreBase.cpp:30
Ogre::Root * root
The Ogre system root component.
Definition: OgreBase.cpp:22
std::vector< Ogre::Entity * > entities
List of Ogre entities.
Definition: OgreBase.cpp:26
void DeinitializeOgreBase()
Destructs the Ogre system.
Definition: OgreBase.cpp:123
void InitializeOgreBase(const Ogre::String &name)
Initializes the Ogre system.
Definition: OgreBase.cpp:32
Ogre::RenderWindow * window
The Ogre render window.
Definition: OgreBase.cpp:24
Ogre::Camera * camera
The Ogre camera.
Definition: OgreBase.cpp:28
The display frame listener.
Definition: OgreBase.h:63
float mouse_move_y_
Mouse vertical movement.
Definition: OgreBase.h:385
bool mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id)
Handles mouse button-up events.
Definition: OgreBase.h:330
OIS::Keyboard * keyboard_
The OIS keyboard.
Definition: OgreBase.h:365
DisplayFrameListener(Ogre::RenderWindow *win)
Constructor.
Definition: OgreBase.h:73
bool mouseMoved(const OIS::MouseEvent &e)
Handles mouse movement events.
Definition: OgreBase.h:305
bool frameStarted(const Ogre::FrameEvent &evt)
Called when a frame is about to begin rendering.
Definition: OgreBase.h:135
bool keyReleased(const OIS::KeyEvent &e)
Handles key releasing events.
Definition: OgreBase.h:297
float mouse_move_x_
Mouse horizontal movement.
Definition: OgreBase.h:380
Ogre::TextAreaOverlayElement * info_text
The information text.
Definition: OgreBase.h:338
OIS::InputManager * input_manager_
The OIS input manager.
Definition: OgreBase.h:360
virtual void setCamera(Ogre::Camera *camera)
Sets the viewport camera.
Definition: OgreBase.h:348
bool exit_
Flag for application exit.
Definition: OgreBase.h:395
Ogre::Camera * camera_
The camera.
Definition: OgreBase.h:375
bool mouse_rotate_
Indicates if the mouse is being rotated.
Definition: OgreBase.h:390
bool keyPressed(const OIS::KeyEvent &e)
The key listener.
Definition: OgreBase.h:201
Ogre::RenderWindow * window_
The render window.
Definition: OgreBase.h:355
OIS::Mouse * mouse_
The OIS mouse.
Definition: OgreBase.h:370
Ogre::Overlay * info_overlay
The information overlay.
Definition: OgreBase.h:343
bool mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id)
Handles mouse button-down events.
Definition: OgreBase.h:318
virtual void windowClosed(Ogre::RenderWindow *rw)
Called on window closing.
Definition: OgreBase.h:123
virtual ~DisplayFrameListener()
Definition: OgreBase.h:110
Ogre::String String
Definition: TypeDefine.h:37