/* * CollisionManager.h * * Författare: Matthew Casperson * Email: [email protected] * Hemsida: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONMANAGER_H_ # definierar COLLISIONMANAGER_H_ # include "PersistentFrameListener. h "#include" CollisionObject.h "#include" lista "#define COLLISIONMANAGER CollisionManager :: instansrätten () typedef std :: lista CollisionObjectList, klass CollisionManager: public PersistentFrameListener {public: ~ CollisionManager (); statisk CollisionManager & instansrätten () {statisk CollisionManager instans; retur exempel; } Void start (); void avstängning (); void AddCollisionObject (CollisionObject * objekt); void RemoveCollisionObject (CollisionObject * objekt); bool FrameEnded (const FrameEvent & evt); skyddas: CollisionManager (); void AddNewObjects (); void RemoveDeletedObjects (); CollisionObjectList collisionObjectList; CollisionObjectList newObjects; CollisionObjectList deletedObjects;}; # endif
CollisionManager.
cpp Omdömen
#include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: Startup () {PersistentFrameListener :: Startup ();} void CollisionManager :: avstängning () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: avstängning ();}
En av anledningarna till att skapa PersistentFrameListener klassen var att komma runt ett problem i Ogre där FrameListeners fortfarande kunde ha deras evenemang funktion som kallas även efter att de togs bort från samlingen upprätthålls av OgreRoot objektet med removeFrameListener funktionen. Den CollisionManager visar varför detta är fallet. Omdömen
I FUNKTION FrameEnded den CollisionManager loopar igenom alla CollisionObjects checkar för kollisioner.
Om en kollision hittas är kollisionsfunktionen på de kolliderande CollisionObjects kallas. Som tidigare nämnts, kan ett av resultaten av en kollision är att en av de kolliderande föremålen avlägsnas genom att ringa sin avstängning funktion. Utan en liten lösning, kommer detta avstängning funktionen bort CollisionObject från samlingen sköts av CollisionManager - precis samma som vi skulle kretsa över att upptäcka kollisionen i första hand. Detta är ett problem eftersom om du ändrar en samling (genom att säga att ta bort ett objekt från det), medan looping över den ansökan skulle krascha.
Omdömen
För att undvika det här problemet alla
Komma igång med Activeperl
- Farm Hantering Software
- Vad är datastrukturer?
- Skapa ett Flash plattformsspel med flixel och Flex - Enemies
- Papervision 3D programmering tutorials - Clipping & amp; amp; Culling
- Akta stress !!!!
- Snabb introduktion till Uml
- ASP.
NET - C # - Hjälpen Mailer klass för mallbaserade e - post med inbäddade …
- Att göra en Space Invaders klon med tryckknapp - De första enemy
- Fönster Class Styles
- Php Array