/* * CollisionManager.h * * Auteur: Matthew Casperson * E-mail: [email protected] * Website: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONMANAGER_H_ # definiëren COLLISIONMANAGER_H_ # include "PersistentFrameListener. h "#include" CollisionObject.h "#include" lijst "#define COLLISIONMANAGER CollisionManager :: aanleg () typedef std :: lijst CollisionObjectList; klasse CollisionManager: public PersistentFrameListener {public: ~ CollisionManager (); statische CollisionManager & aanleg () {statische CollisionManager bijvoorbeeld; Zo keren; } Leegte Startup (); leegte Shutdown (); ongeldig AddCollisionObject (CollisionObject * object); ongeldig RemoveCollisionObject (CollisionObject * object); bool FrameEnded (const FrameEvent & EVT); beschermd: CollisionManager (); leegte AddNewObjects (); leegte RemoveDeletedObjects (); CollisionObjectList collisionObjectList; CollisionObjectList newObjects; CollisionObjectList deletedObjects;} # endif
CollisionManager.
cpp
#include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: Startup () {PersistentFrameListener :: Startup ();} leegte CollisionManager :: Shutdown () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: Shutdown ();}
Een van de redenen voor het creëren van de klasse PersistentFrameListener was om te werken rond een probleem in Ogre, waar FrameListeners nog zou kunnen hebben hun functie gebeurtenis riep zelfs nadat ze werden verwijderd uit de collectie in stand gehouden door de OgreRoot object de removeFrameListener functie. De CollisionManager laat zien waarom dit het geval is.
In het functioneren FrameEnded de CollisionManager lussen door alle CollisionObjects controleren op botsingen.
Wanneer een botsing wordt gevonden wordt de Collision functie op de botsende CollisionObjects genoemd. Zoals eerder opgemerkt, kan een van de uitkomsten van een botsing die een van de botsende objecten verwijderd door de afsluitfunctie belt. Zonder een kleine tijdelijke oplossing, zal dit Shutdown functie de CollisionObject te verwijderen uit de collectie onderhouden door de CollisionManager - precies dezelfde die we een lus over aan de botsing in de eerste plaats op te sporen.
Dit is een probleem, want als je een verzameling wijzigen (door bijvoorbeeld het verwijderen van een item uit is), terwijl een lus overheen de t
Aan de slag met Activeperl
- Draad Framing een Key Web Designing Tool:
- PushButton Tutorial Series - Tracking & amp; amp; Jumping
- C # - Het bouwen van een Fahrenheit /Celsius Converter
- Hoe je het MAC-adres van onze machine met behulp van VB .net krijgen?
- Network Security Management voor Grote Overheid, School, bedrijven en Homes
- C Object Identifiers
- Mobile Video Game Development: Een Quick Overview
- De C ++ String Class
- ASP.NET - C # - Met behulp van UserControls als Mail Templates
- Eenvoudige welkom en Print Console toepassing in C # ( C scherp) ( Dot Net )