El CollisionManager es donde todos los objetos son probados uno contra el otro para las colisiones
CollisionManager.h
/* * CollisionManager.h * * Autor: Matthew Casperson * Email: [email protected] * Sitio web: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONMANAGER_H_ # define COLLISIONMANAGER_H_ # incluyen "PersistentFrameListener. h "#include" CollisionObject.h "#include" lista "#define COLLISIONMANAGER CollisionManager :: Instancia () typedef std :: Lista CollisionObjectList; clase CollisionManager: PersistentFrameListener pública {public: ~ CollisionManager (); estática y CollisionManager Instancia () {instancia CollisionManager estática; volver instancia; } Void inicio (); void apagado (); anular AddCollisionObject (CollisionObject * objeto); anular RemoveCollisionObject (CollisionObject * objeto); bool FrameEnded (const FrameEvent y evt); protegida: CollisionManager (); AddNewObjects void (); RemoveDeletedObjects void (); CollisionObjectList collisionObjectList; NewObjects CollisionObjectList; DeletedObjects CollisionObjectList;}; # endif
CollisionManager.
cpp
#include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: inicio () {PersistentFrameListener :: inicio ();} void CollisionManager :: apagado () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: Apagar ();}Una de las razones para la creación de la clase PersistentFrameListener era trabajar en torno a un tema en Ogre donde FrameListeners aún podrían tener su función evento llamado incluso después de que fueron retirados de la colección mantenida por el objeto OgreRoot con la función removeFrameListener.
El CollisionManager muestra por qué este es el caso.
En funcionan los FrameEnded la CollisionManager recorre todos los CollisionObjects comprobación de colisiones. Si se encuentra una colisión, la función de colisión en el CollisionObjects que chocan se llama. Como se ha señalado anteriormente, uno de los resultados de una colisión puede ser que uno de los objetos en colisión se retira llamando a su función de apagado.
Sin una pequeña solución, esta función de apagado eliminará el CollisionObject de la colección mantenida por el CollisionManager - el mismo que nos bucle sobre para detectar la colisión en el primer lugar. Esto es un problema porque
Primeros pasos con Activeperl
- Añadir Streaming de audio a su Website
- Creación de una lista Box
- El objeto HTML Archivo Attribute
- Aplicación de consola en Reflexión en C # 1.
1 y 2.0 ( Dot Net )
- C Basic Input Y Output
- Sobre la escritura Blogs
- Cómo centrar un mensaje de una línea en un C ++ program
- Mejor 7 Aplicaciones Android Para Entertainment
- Pseudo-Types en Php
- Algunos Javascript predefinidas Objects