00001 #include "FrameListener.h"
00002 #include "Application.h"
00003
00004 FrameListener::FrameListener(Ogre::RenderWindow* _window)
00005 {
00006 m_window = _window;
00007
00008
00009 windowResized(m_window);
00010
00011
00012 Ogre::WindowEventUtilities::addWindowEventListener(m_window, this);
00013 }
00014
00015 FrameListener::~FrameListener()
00016 {
00017 Ogre::WindowEventUtilities::removeWindowEventListener(m_window, this);
00018 windowClosed(m_window);
00019 }
00020
00021
00022 void FrameListener::windowResized(Ogre::RenderWindow* _window)
00023 {
00024 unsigned int width, height, depth;
00025 int left, top;
00026 _window->getMetrics(width, height, depth, left, top);
00027
00028 Application::getSingleton()->getInputHandler()->setWindowSize(width,height);
00029 }
00030
00031 void FrameListener::windowClosed(Ogre::RenderWindow* _window)
00032 {
00033 Application::getSingleton()->getInputHandler()->destroy(_window);
00034 }
00035
00036
00037 bool FrameListener::frameRenderingQueued(const Ogre::FrameEvent& _event)
00038 {
00039 m_timeSinceLastFrame = _event.timeSinceLastFrame;
00040
00041 if(m_window->isClosed()) return false;
00042
00043 Application::getSingleton()->getInputHandler()->getInput();
00044 Application::getSingleton()->getCameraManager()->update();
00045 Application::getSingleton()->getPhysicsManager()->update(m_timeSinceLastFrame);
00046 Application::getSingleton()->getObjectManager()->update(m_timeSinceLastFrame);
00047
00048
00049 return true;
00050 }
00051
00052 bool FrameListener::frameEnded(const Ogre::FrameEvent& evt)
00053 {
00054 return true;
00055 }
00056
00057 Ogre::Real FrameListener::getTimeSinceLastFrame() const
00058 {
00059 return m_timeSinceLastFrame;
00060 }