CollisionManager где все объекты проверяются друг с другом за столкновений
<р> CollisionManager.h
/* * CollisionManager.h * * Автор: Мэтью Касперсон * E-mail: * Веб-сайт matthewcasperson@gmail.com: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# IfNDef COLLISIONMANAGER_H_ # определить COLLISIONMANAGER_H_ # включить "PersistentFrameListener. ч "#include" CollisionObject.h "#include" список "#define COLLISIONMANAGER CollisionManager :: Экземпляр () ЬурейеЕ STD :: список CollisionObjectList; класс CollisionManager: общественная PersistentFrameListener {общественности: ~ CollisionManager (); статическая CollisionManager & экземпляра () {статического экземпляра CollisionManager; вернуться экземпляр; } Недействительным запуска (); Выключение недействительными (); аннулированию AddCollisionObject (CollisionObject * объект); аннулированию RemoveCollisionObject (CollisionObject * объект); BOOL FrameEnded (строительства FrameEvent & ЭВТ); защищены: CollisionManager (); недействительными AddNewObjects (); недействительными RemoveDeletedObjects (); CollisionObjectList collisionObjectList; CollisionObjectList newObjects; CollisionObjectList deletedObjects;}; # ENDIF <р> CollisionManager.
cpp
#include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: Ввод в эксплуатацию () {PersistentFrameListener :: Ввод в эксплуатацию ();} недействительным CollisionManager :: Shutdown () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: Shutdown ();} <р> Одна из причин для создания класса PersistentFrameListener было обойти проблему в Огре, где FrameListeners еще может иметь свои функции мероприятие под названием даже после они были удалены из коллекции, поддерживаемой объектом OgreRoot с функцией removeFrameListener. CollisionManager показывает, почему это так.
<Р> в FrameEnded функционируют так CollisionManager перебирает все CollisionObjects проверки столкновений. Если столкновение обнаружено, функция столкновения на встречных CollisionObjects называется.
Как было отмечено ранее, одним из итогов столкновения может быть, что одна из сталкивающихся объектов удаляются с помощью вызова функции отключения его. Без малого обхода, эта функция отключения снимет CollisionObje