аннулированию CollisionObject :: Startup () {PersistentFrameListener :: Ввод в эксплуатацию ();} недействительным CollisionObject :: Shutdown () {PersistentFrameListener :: Shutdown ();} <р> PersistentFrameListener.h
другой большой вопрос с столкновения Обнаружение убедившись объекты не перемещаются через друг друга во время кадра. Мы будем решать это, установив максимальное время на каждом кадре, что, предполагая, сталкивающиеся объекты не слишком мал, и движется слишком быстро, будет гарантировать, что два объекта. Это делается в классе PersistentFrameListener, который в настоящее время также включает функцию, называемую FrameEnded, что называется один раз за кадр после FrameStarted был призван на всех активных объектов
/* * * * PersistentFrameListener.h Автор:.Мэтью Касперсон * E-mail: * Веб-сайт [email protected]: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# IfNDef PERSISTENTFRAMELISTENER_H_ # определить PERSISTENTFRAMELISTENER_H_ # включить "Ogre.h" #include "OgreEngineManager.h "#include" GameConstants.h "класс PersistentFrameListener: общественная FrameListener {общественности: PersistentFrameListener (): isStarted (ложь) {ENGINEMANAGER.GetRoot () -> addFrameListener (это); } Виртуальный ~ PersistentFrameListener () {если (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.
GetRoot () -> removeFrameListener (это); } Недействительным запуска () {isStarted = TRUE; } Недействительным выключение () {isStarted = ложь; } BOOL frameStarted (строительства FrameEvent & ЭВТ) {если (this-> isStarted) вернуться FrameStarted (GetFixedFrameEvent (ЭВТ)); вернуться верно; } BOOL frameEnded (строительства FrameEvent & ЭВТ) {если (this-> isStarted) вернуться FrameEnded (GetFixedFrameEvent (ЭВТ)); вернуться верно; } Виртуальный BOOL FrameStarted (Пост FrameEvent и ЭВТ) {вернуться верно;} виртуальный Ьоо FrameEnded (Пост FrameEvent & ЭВТ) {вернуться верно;} BOOL IsStarted () строительства {вернуться isStarted;} защищены: FrameEvent GetFixedFrameEvent (строительства FrameEvent & ЭВТ) {FrameEvent фиксированной; fixed.
timeSinceLastFrame = evt.timeSinceLastFrame>