Le CollisionManager est l'endroit où tous les objets sont testés les uns contre les autres pour les collisions
CollisionManager.h
/* * CollisionManager.h * * Auteur: Matthew Casperson * Email: [email protected] * Site Web: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef COLLISIONMANAGER_H_ # définissent COLLISIONMANAGER_H_ # include "PersistentFrameListener. h "#include" CollisionObject.h "#include" liste "#define COLLISIONMANAGER CollisionManager :: instance () typedef std :: liste CollisionObjectList; classe CollisionManager: PersistentFrameListener {public: ~ CollisionManager (); statique CollisionManager & instance () {Instance CollisionManager statique; retourner instance; } Vide démarrage (); void shutdown (); annuler AddCollisionObject (CollisionObject * objet); annuler RemoveCollisionObject (CollisionObject * objet); bool FrameEnded (const FrameEvent & EVT); protégée: CollisionManager (); AddNewObjects void (); RemoveDeletedObjects void (); CollisionObjectList collisionObjectList; NewObjects CollisionObjectList; DeletedObjects CollisionObjectList;}; # endif
CollisionManager.
cpp
# include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: démarrage () {PersistentFrameListener :: démarrage ();} vide CollisionManager :: shutdown () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: shutdown ();}
Une des raisons de la création de la classe PersistentFrameListener était de travailler autour d'une question à Ogre où FrameListeners pourraient encore avoir leur fonction d'événement appelé, même après qu'ils ont été retirés de la collection conservée par l'objet OgreRoot avec la fonction de removeFrameListener. Le CollisionManager montre pourquoi cela est le cas.
Dans la fonction FrameEnded l'CollisionManager parcourt tous les CollisionObjects vérification de collisions.
Si une collision est détectée, la fonction anti-collision sur les CollisionObjects collision est appelé. Comme on l'a noté plus haut, l'un des résultats d'une collision peut être que l'un des objets en collision est retiré en appelant sa fonction d'arrêt. Sans une petite solution de contournement, cette fonction d'arrêt va supprimer le CollisionObject de la collection conservée par le CollisionManager - celui-l
Premiers pas avec Activeperl
- Fenêtres Bar
- Comment est-il difficile d'apprendre la programmation?
- Comment configurer votre réseau Windows Vista connections
- Contrats de coût cible - Programmation Agile Methodology
- Dernières tendances de programmation entre developers
- Apprendre à connaître Windows
- Importance de l'assurance qualité de jeux pour la marque Value
- Mysql Scheduler
- JSON File
- Création d'un jeu de plateforme flash avec Flixel et Flex - Enemies
Construire votre première appl…