oppstart og avslutning funksjoner legge til og fjerne den lokale objektet fra CollisionManager
ugyldig CollisionObject :: Startup () {PersistentFrameListener :: Startup ();} void CollisionObject :: Shutdown () {PersistentFrameListener :: Shutdown ();}PersistentFrameListener.h
Det andre store problemet med kollisjon deteksjon er å sørge for at objekter ikke bevege seg gjennom hverandre under rammen.
Vi vil løse dette ved å sette en maksimal tid på hvert bilde, som, forutsatt at de kolliderende objektene er ikke for lite og går for fort, vil sikre at to stedene. Dette gjøres i PersistentFrameListener klassen, som nå også inkluderer en funksjon kalt FrameEnded som kalles en gang per ramme etter FrameStarted har blitt kalt på alle de aktive objektene
/* * PersistentFrameListener.h * * Forfatter:. Matthew Casperson * E-post: [email protected] * Nettside: https://www.brighthub.com/hubfolio/matthew-casperson.aspx * /# ifndef PERSISTENTFRAMELISTENER_H_ # definere PERSISTENTFRAMELISTENER_H_ # include "Ogre.h" #include "OgreEngineManager.h "# include" GameConstants.h "class PersistentFrameListener: public FrameListener {public: PersistentFrameListener (): isStarted (false) {ENGINEMANAGER.GetRoot () -> addFrameListener (denne); } Virtuell ~ PersistentFrameListener () {if (! ENGINEMANAGER.GetRoot () = NULL) ENGINEMANAGER.
GetRoot () -> removeFrameListener (denne); } Void Startup () {isStarted = true; } Void Shutdown () {isStarted = false; } Bool frameStarted (konst FrameEvent & evt) {if (this-> isStarted) tilbake FrameStarted (GetFixedFrameEvent (evt)); return true; } Bool frameEnded (konst FrameEvent & evt) {if (this-> isStarted) tilbake FrameEnded (GetFixedFrameEvent (evt)); return true; } Virtuell bool FrameStarted (konst FrameEvent & evt) {return true;} virtuell bool FrameEnded (konst FrameEvent & evt) {return true;} bool IsStarted () const {return isStarted;} beskyttet: FrameEvent GetFixedFrameEvent (konst FrameEvent & evt) {FrameEvent fast; fixed.
timeSinceLastFrame = evt.timeSinceLastFrame> MAX_FRAME_TIME? MAX_FRAME_TIME: evt.timeSinceLastFrame; returnere fast; } Bool isStarted;};. # Endif /* PERSISTENTFRAMELISTENER_H_ * /
CollisionManager er der alle objektene er testet mot hverandre for kollisjoner
CollisionManager.h
/* * CollisionManager.h * * Forfatter: Matthew Casperson * E-post:Komme i gang med Activeperl
- Referanse i C ++
- Hvordan lage Nøkkel Generatorer
- Opprette en live Twitter statusoppdatering med YQL og JavaScript
- Unntak håndtering i C ++
- Vektor Modifikatorer i C ++
- Mysql Tilgang Gull Overview
- Spesifisere Unntak funksjoner i C ++
- Hvordan implementere diskusjonen i Java?
- Komme i gang med Javascript
- Hvordan lage Windows XP Look Like Windows 7