 |
Jypeli
9
The simple game programming library
|
Siirry tämän tiedoston dokumentaatioon.
2 using System.Collections.Generic;
3 using System.ComponentModel;
32 protected Dictionary<CollisionRecord, CollisionHandler<IPhysicsObject, IPhysicsObject>>
collisionHandlers =
33 new Dictionary<CollisionRecord, CollisionHandler<IPhysicsObject, IPhysicsObject>>();
35 new Dictionary<CollisionRecord, CollisionHandler<IPhysicsObject, IPhysicsObject>>();
62 if (
Game.
Instance ==
null )
throw new InvalidOperationException(
"Game class is not initialized" );
118 base.OnObjectAdded( obj );
129 base.OnObjectRemoved( obj );
137 foreach ( var layer
in Layers )
139 foreach ( var obj
in layer.Objects )
203 #region Collision handlers
216 if ( obj ==
null )
throw new NullReferenceException(
"Colliding object must not be null" );
217 if ( handler ==
null )
throw new NullReferenceException(
"Handler must not be null" );
219 CollisionHandler<IPhysicsObject, IPhysicsObject> targetHandler =
223 handler( (O)collider, (T)collidee );
226 obj.Collided += targetHandler;
238 [EditorBrowsable( EditorBrowsableState.Never )]
243 if ( obj ==
null )
throw new NullReferenceException(
"Colliding object must not be null" );
244 if ( handler ==
null )
throw new NullReferenceException(
"Handler must not be null" );
246 CollisionHandler<IPhysicsObject, IPhysicsObject> targetHandler =
250 handler( (O)collider, (T)collidee );
253 obj.Collided += targetHandler;
265 AddCollisionHandler<IPhysicsObject, IPhysicsObject>( obj, handler );
275 AddCollisionHandler<PhysicsObject, PhysicsObject>( obj, handler );
285 AddCollisionHandler<PhysicsObject, PhysicsStructure>( obj, handler );
295 AddCollisionHandler<PhysicsStructure, PhysicsObject>( obj, handler );
305 AddCollisionHandler<PhysicsStructure, PhysicsStructure>( obj, handler );
319 if ( obj ==
null )
throw new NullReferenceException(
"Colliding object must not be null" );
320 if ( target ==
null )
throw new NullReferenceException(
"Collision target must not be null" );
321 if ( handler ==
null )
throw new NullReferenceException(
"Handler must not be null" );
323 CollisionHandler<IPhysicsObject, IPhysicsObject> targetHandler =
326 if (
object.ReferenceEquals( collidee, target ) )
327 handler( (O)collider, (T)collidee );
330 obj.Collided += targetHandler;
345 if ( obj ==
null )
throw new NullReferenceException(
"Colliding object must not be null" );
346 if ( tag ==
null )
throw new NullReferenceException(
"Tag must not be null" );
347 if ( handler ==
null )
throw new NullReferenceException(
"Handler must not be null" );
349 CollisionHandler<IPhysicsObject, IPhysicsObject> targetHandler =
353 handler( (O)collider, (T)collidee );
356 obj.Collided += targetHandler;
372 AddCollisionHandlerByRef( obj, (T)target, handler );
374 AddCollisionHandlerByTag( obj, target, handler );
386 AddCollisionHandler<IPhysicsObject, IPhysicsObject>( obj, tag, handler );
398 AddCollisionHandler<PhysicsObject, PhysicsObject>( obj, tag, handler );
410 Predicate<CollisionRecord> pred = rec =>
411 ( obj ==
null ||
object.ReferenceEquals( obj, rec.obj ) ) &&
412 ( target ==
null || target == rec.target ) &&
414 ( handler ==
null ||
object.ReferenceEquals( handler, rec.handler ) );
416 List<CollisionRecord>
remove =
new List<CollisionRecord>();
420 if (pred(key))
remove.Add(key);
423 foreach (var key
in remove)
438 [EditorBrowsable( EditorBrowsableState.Never )]
441 Predicate<CollisionRecord> pred = rec =>
442 ( obj ==
null ||
object.ReferenceEquals( obj, rec.obj ) ) &&
443 ( target ==
null || target == rec.target ) &&
444 ( tag ==
null || tag.Equals( rec.targetTag ) ) &&
445 ( handler ==
null ||
object.ReferenceEquals( handler, rec.handler ) );
447 List<CollisionRecord>
remove =
new List<CollisionRecord>();
451 if ( pred( key ) )
remove.Add( key );
454 foreach ( var key
in remove )
void RemoveJoint(IAxleJoint joint)
void OnJointAdded(IAxleJoint j)
void RemoveCollisionHandlers(PhysicsObject obj=null, PhysicsObject target=null, object tag=null, Delegate handler=null)
Poistaa kaikki ehdot täyttävät törmäyksenkäsittelijät.
void AddProtectedCollisionHandler< O, T >(O obj, CollisionHandler< O, T > handler)
Määrää, mihin aliohjelmaan siirrytään kun olio
static readonly Vector Zero
Nollavektori.
Rakenne, joka pitää fysiikkaoliot kiinteän matkan päässä toisistaan.
override void ClearAll()
Nollaa kaiken (kontrollit, näyttöobjektit, ajastimet ja fysiikkamoottorin).
void AddCollisionHandlerByRef< O, T >(O obj, T target, CollisionHandler< O, T > handler)
Määrää, mihin aliohjelmaan siirrytään kun olio
Kantaluokka fysiikkapeleille.
void AddBody(IPhysicsBody body)
static bool StringEquals(object o1, object o2)
Vertaa kahta oliota, jotka ovat joko merkkijonoja tai StringBuildereita, merkki kerrallaan.
void SetEngine(Jypeli.Physics.IPhysicsEngine engine)
void AddCollisionHandler(IPhysicsObject obj, CollisionHandler< IPhysicsObject, IPhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun yleinen fysiikkaolio
Yhteinen rajapinta kaikille peliolioille.
Dictionary< CollisionRecord, CollisionHandler< IPhysicsObject, IPhysicsObject > > protectedCollisionHandlers
void AddCollisionHandler(PhysicsObject obj, object tag, CollisionHandler< PhysicsObject, PhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun fysiikkaolio
PhysicsObject Object2
Toinen olio (null jos ensimmäinen olio on sidottu pisteeseen)
void Add(IAxleJoint j)
Lisää liitoksen peliin.
void AddJoint(IAxleJoint joint)
void AddCollisionHandler(PhysicsStructure obj, CollisionHandler< PhysicsStructure, PhysicsStructure > handler)
Määrää, mihin aliohjelmaan siirrytään kun fysiikkarakenne
Yhteinen rajapinta kaikille fysiikkaolioille.
static Game Instance
Käynnissä olevan pelin pääolio.
void Remove(IAxleJoint j)
Poistaa liitoksen pelistä.
void AddCollisionHandler(IPhysicsObject obj, object tag, CollisionHandler< IPhysicsObject, IPhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun yleinen fysiikkaolio
PhysicsObject Object1
Ensimmäinen olio.
bool PhysicsEnabled
Onko fysiikan laskenta käytössä vai ei.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
SynchronousList< IAxleJoint > Joints
CollisionRecord(IPhysicsObject obj, IPhysicsObject target, object targetTag, Delegate handler)
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Vector Gravity
Painovoima. Voimavektori, joka vaikuttaa kaikkiin ei-staattisiin kappaleisiin.
void StopAll()
Pysäyttää kaiken liikkeen.
void OnJointRemoved(IAxleJoint j)
Dictionary< CollisionRecord, CollisionHandler< IPhysicsObject, IPhysicsObject > > collisionHandlers
void AddCollisionHandler(PhysicsObject obj, CollisionHandler< PhysicsObject, PhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun fysiikkaolio
void ClearPhysics()
Nollaa fysiikkamoottorin.
void RemoveBody(IPhysicsBody body)
override void OnObjectRemoved(IGameObject obj)
void AddCollisionHandlerByTag< O, T >(O obj, object tag, CollisionHandler< O, T > handler)
Määrää, mihin aliohjelmaan siirrytään kun olio
PhysicsGameBase(IPhysicsEngine engine)
Alustaa uuden fysiikkapelin.
void RemoveProtectedCollisionHandlers(PhysicsObject obj=null, PhysicsObject target=null, object tag=null, Delegate handler=null)
Poistaa kaikki ehdot täyttävät törmäyksenkäsittelijät. Jypelin sisäiseen käyttöön!
Synkroninen lista, eli lista joka päivittyy vasta kun sen Update-metodia kutsutaan....
SynchronousList< Layer > Layers
Kerrokset, joilla pelioliot viihtyvät.
override void Update(Time time)
Ajetaan kun pelin tilannetta päivitetään. Päivittämisen voi toteuttaa perityssä luokassa toteuttamall...
override void OnObjectAdded(IGameObject obj)
void AddCollisionHandler(PhysicsStructure obj, CollisionHandler< PhysicsStructure, PhysicsObject > handler)
Määrää, mihin aliohjelmaan siirrytään kun fysiikkarakenne
void AddCollisionHandler(PhysicsObject obj, CollisionHandler< PhysicsObject, PhysicsStructure > handler)
Määrää, mihin aliohjelmaan siirrytään kun fysiikkaolio
static new PhysicsGameBase Instance
Käynnissä olevan fysiikkapelin pääolio.
void AddCollisionHandler< O, T >(O obj, CollisionHandler< O, T > handler)
Määrää, mihin aliohjelmaan siirrytään kun olio
delegate void CollisionHandler< O, T >(O collidingObject, T otherObject)
Törmäystapahtumiin liitettävän metodin tyyppi. Törmäyksen käsittelevällä metodilla ei ole paluuarvoa ...