CollisionManager.
cpp
# include "CollisionManager.h"CollisionManager::CollisionManager(){}CollisionManager::~CollisionManager(){}void CollisionManager :: Startup () {PersistentFrameListener :: Startup ();} void CollisionManager :: sammutus () {newObjects.clear (); deletedObjects.clear (); collisionObjectList.clear (); PersistentFrameListener :: sammutus ();}
Yksi syy luomiseen PersistentFrameListener luokka oli kiertää ongelman Ogre jossa FrameListeners voisi silti olla niiden tapahtuma toiminto nimeltään vaikka ne poistettiin kokoelma ylläpitämään OgreRoot esine kanssa removeFrameListener toiminto. CollisionManager osoittaa, miksi näin on.
FrameEnded toimiakseen CollisionManager silmukoiden läpi kaikki CollisionObjects tarkistaa törmäyksiä. Jos törmäys löytyy, Collision toiminto törmäävän CollisionObjects kutsutaan.
Kuten aiemmin todettiin, yksi tulosten yhteentörmäys voi olla, että yksi törmäävän esineet poistetaan kutsumalla sen sammutus toiminto. Ilman pieni kiertotapaa, tämä sammutus toiminto poistaa CollisionObject kokoelmasta ylläpitämästä CollisionManager - aivan sama, joka olimme silmukoiden yli havaita törmäyksen ensiksi. Tämä on ongelma, koska jos muokkaat kokoelma (mukaan vaikkapa poistamalla erä siitä), kun kiehkura päälle soveltaminen kaatua.
Voit välttää tämän ongelman kaikki uudet ja poistetut kohteet tallennetaan väliaikainen kokoelmissa newObjects ja deletedObjects (kautta AddCollisionObject ja RemoveCollisionObject toiminnot), jossa uusi ja poistetut kohteet synkronoidaan pääkokoelman (kautta Add
Aloitusopas Activeperl
- Luominen JavaScript Objects Literal Notation
- Windows Scroll Bar
- Saada Selkeys tiimityöskentelyyn SharePoint Web Parts
- PHP merkkijonon ja päivämäärä Basics
- PushButton opetusohjelma sarja - Enemies
- Java Variables
- Kirjoittaminen Page Frame Allocator
- Miten Kirjoita oma tukemat System
- Windows Staattinen Control
- Uusi Famous HTML Canvas Element