 |
Jypeli
9
The simple game programming library
|
Siirry tämän tiedoston dokumentaatioon.
3 using System.Collections.Generic;
39 internal List<IAxleJoint>
Joints {
get;
private set; }
51 for (
int i = 0; i <
Joints.Count; i++ )
53 Joints[i].Softness = value;
67 double bottom =
objects[0].Bottom;
68 double right =
objects[0].Right;
70 for (
int i = 1; i <
objects.Count; i++ )
84 public object Tag {
get;
set; }
103 obj.IsVisible = value;
118 objects.ForEach(o => o.IgnoresLighting = value);
140 obj.Position += delta;
155 throw new NotImplementedException(
"Setting size for a structure is not implemented." );
164 throw new InvalidOperationException(
"Physics structure has no image or animation." );
170 get {
return new Vector( 1, 1 ); }
171 set {
throw new NotImplementedException(); }
176 get {
return false; }
177 set {
throw new NotImplementedException(); }
184 throw new NotImplementedException();
196 set {
throw new NotImplementedException(); }
217 obj.Position = (
new Matrix2x2(value.Cos, -value.Sin, value.Sin, value.Cos)) * (
Vector2D)obj.Position;
224 #region IPhysicsObject
243 public event CollisionHandler<IPhysicsObject, IPhysicsObject>
Collided;
258 double totalMass = 0;
259 objects.ForEach( o => totalMass += o.Mass );
264 double massMultiplier = value / this.
Mass;
265 objects.ForEach( o => o.Mass *= massMultiplier );
274 objects.ForEach( o => o.IgnoresGravity = value );
284 objects.ForEach( o => o.IgnoresCollisionResponse = value );
294 objects.ForEach( o => o.IgnoresExplosions = value );
304 objects.ForEach( o => o.IgnoresPhysicsLogics = value );
314 objects.ForEach( o => o.CollisionIgnorer = value );
324 objects.ForEach( o => o.CollisionIgnoreGroup = value );
334 objects.ForEach( o => o.StaticFriction = value );
344 objects.ForEach( o => o.KineticFriction = value );
354 objects.ForEach( o => o.Restitution = value );
364 objects.ForEach( o => o.LinearDamping = value );
374 objects.ForEach( o => o.AngularDamping = value );
389 obj.Velocity = value;
398 return velocities.Average();
417 obj.Acceleration = value;
426 return accs.Average();
458 obj.CanRotate =
false;
464 obj.CanRotate =
true;
479 objects =
new List<PhysicsObject>();
480 Joints =
new List<IAxleJoint>();
505 for (
int i = 0; i < objs.Length; i++ )
553 if ( o is T && predicate( (T)o ) )
574 throw new NotImplementedException(
"Currently only PhysicsObjects can be added to a structure." );
604 foreach ( var existing
in objects )
606 IAxleJoint joint = game.Engine.CreateJoint( physObj, existing, existing.AbsolutePosition );
619 throw new NotImplementedException(
"Currently only PhysicsObjects can be added to a structure." );
623 if ( !
objects.Contains( physObj ) )
631 foreach ( var joint
in Joints.FindAll( j => j.Object1 == physObj || j.Object2 == physObj ) )
644 _calcMomentOfInertia = 0;
646 foreach ( var part
in objects )
657 if ( obj.IsInside( point ) )
664 #region IPhysicsObject
672 obj.Hit( velocity * obj.Mass );
682 obj.Push( acceleration * obj.Mass );
692 obj.Push( acceleration * obj.Mass, time );
706 Vector radius = obj.Position - center;
707 double linearAcc = radius.
Magnitude * angularAcc;
708 obj.Push( linearAcc * obj.Mass * radius.
LeftNormal );
716 obj.Move( movement );
720 public override void MoveTo(
Vector location,
double speed, Action doWhenArrived )
727 obj.MoveTo( location + displacement, speed );
738 objects.ForEach( o => o.Stop() );
743 objects.ForEach( o => o.StopHorizontal() );
748 objects.ForEach( o => o.StopVertical() );
753 objects.ForEach( o => o.StopAxial( axis ) );
758 objects.ForEach( o => o.StopAngular() );
763 #region DelayedDestroyable
765 #region DelayedDestroyable
792 foreach ( var joint
in Joints ) joint.Destroy();
793 foreach ( var obj
in objects ) obj.Destroy();
802 #region Unimplemented Members / IGameObject
806 get {
throw new NotImplementedException(); }
807 set {
throw new NotImplementedException(); }
Vector Size
Suorakaiteen koko
IList< PhysicsObject > Objects
Rakenteeseen kuuluvat oliot.
Rajapinta luokalle joka sisältää peliolioita.
bool IgnoresGravity
Jättääkö painovoiman huomiotta.
void StopAxial(Vector axis)
Vector LeftNormal
Vasen normaali.
bool IgnoresCollisionResponse
Jättääkö törmäykset huomiotta.
double AngularDamping
Kulmanopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
double LinearDamping
Nopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
double Softness
Olioiden välisten liitosten pehmeys.
bool IgnoresCollisionResponse
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
void Add(IGameObject obj)
Lisää olion rakenteeseen.
Ignorer _collisionIgnorer
A 2x2 matrix which can represent rotations for 2D vectors.
Rakenne, joka pitää fysiikkaoliot kiinteän matkan päässä toisistaan.
List< Listener > AssociatedListeners
CollisionHandler< IPhysicsObject, IPhysicsObject > Collided
Tapahtuu, kun törmätään toiseen fysiikkaolioon.
double Bottom
Olion alareunan y-koordinaatti.
void Move(Vector movement)
List< IAxleJoint > Joints
Rakenteeseen kuuluvat liitokset.
Kantaluokka fysiikkapeleille.
IEnumerable< T > GetChildObjects< T >()
Palauttaa rakenteeseen kuuluvat oliot.
Action Destroying
Tapahtuu, kun olion tuhoaminen alkaa.
virtual void ReallyDestroy()
void Push(Vector force, TimeSpan time)
double _calcMomentOfInertia
BoundingRectangle BoundingRectangle
static Vector Average(IEnumerable< Vector > vectors)
Palauttaa kahden tai useamman vektorin keskiarvon.
Yhteinen rajapinta kaikille peliolioille.
void CalculateMomentOfInertia()
double AngularAcceleration
Kulmakiihtyvyys.
bool _ignoresPhysicsLogics
void Add(IAxleJoint j)
Lisää liitoksen peliin.
override void Destroy()
Tuhoaa olion.
double Top
Olion yläreunan y-koordinaatti.
TimeSpan MaximumLifetime
Olion suurin mahdollinen elinaika. Kun Lifetime on suurempi kuin tämä, olio kuolee.
bool IgnoresPhysicsLogics
double StaticFriction
Lepokitka (hidastaa liikkeelle lähtiessä). Ks. KineticFriction (liikekitka)
static void DoNextUpdate(Action action)
Suorittaa aliohjelman seuraavalla päivityksellä.
virtual int? CollisionIgnoreGroup
Törmäysryhmä. Oliot jotka ovat samassa törmäysryhmässä menevät toistensa läpi. Jos ryhmä on nolla tai...
Yhteinen rajapinta kaikille fysiikkaolioille.
bool CanRotate
Jos false, olio ei voi pyöriä.
double? _setMomentOfInertia
static readonly Rectangle Rectangle
Suorakulmio.
static Game Instance
Käynnissä olevan pelin pääolio.
double KineticFriction
Liikekitka (hidastaa kun olio on jo liikkeessä). Ks. StaticFriction (lepokitka)
bool IsAddedToGame
Onko rakenne lisätty peliin.
void Remove(IAxleJoint j)
Poistaa liitoksen pelistä.
void OnCollided(IPhysicsObject part, IPhysicsObject target)
Kutsutaan kun törmätään.
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
Action Removed
Tapahtuu, kun olio poistetaan pelistä (tuhotaan tai ei).
virtual Ignorer CollisionIgnorer
Olio, jolla voi välttää oliota osumasta tiettyihin muihin olioihin.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
List< PhysicsObject > objects
PhysicsStructure()
Luo uuden tyhjän rakenteen.
double Right
Olion oikean reunan x-koordinaatti.
double AngularVelocity
Kulmanopeus.
Base class for Collision Ignorers to impliment.
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
new Vector Position
Paikka.
CollisionHandler< IPhysicsObject, IPhysicsObject > Collided
Tapahtuu kun olio törmää toiseen.
double AngularAcceleration
bool IgnoresPhysicsLogics
Jättääkö fysiikkakentät (esim. painovoiman) huomiotta.
PhysicsObject centerObject
double Softness
Liitoksen pehmeys eli kuinka paljon sillä on liikkumavaraa.
void ApplyTorque(double torque)
double Left
Olion vasemman reunan x-koordinaatti.
bool IgnoresLighting
Jättääkö olio kentän valaistuksen huomiotta.
static double Distance(Vector p1, Vector p2)
Etäisyys kahden pisteen välillä.
bool IsInside(Vector point)
PhysicsStructure(params PhysicsObject[] objs)
Luo uuden rakenteen ja varustaa sen fysiikkaolioilla.
int _collisionIgnoreGroup
bool _ignoresCollisionResponse
Jypelin sisäiset metodit ja propertyt joihin käyttäjän ei tarvitse päästä käsiksi kuuluvat tähän luok...
Vector Acceleration
Kiihtyvyys.
override Vector Position
Rakenteen paikka pelimaailmassa.
double Magnitude
Vektorin pituus.
int ObjectCount
Rakenteeseen kuuluvien olioiden määrä.
static Angle FromDegrees(double degree)
Luo kulman annettujen asteiden mukaan.
void Update(Time time)
Peliolion päivitys. Tätä kutsutaan, kun IsUpdated-ominaisuuden arvoksi on asetettu true ja olio on li...
double Restitution
Kimmoisuuskerroin (0 = ei kimmoisa, 1 = täysin kimmoisa, yli 1 = saa energiaa tyhjästä)
A collision ignorer that uses reference comparison. All Bodies with the same instance of this ignorer...
double Degrees
Palauttaa tai asettaa kulman asteina.
PhysicsStructure ParentStructure
Rakenneolio, johon tämä olio kuuluu.
This is the Vector Class.
void Remove(IGameObject obj)
Poistaa peliolion tuhoamatta sitä.
override void MoveTo(Vector location, double speed, Action doWhenArrived)
Yrittää siirtyä annettuun paikkaan annetulla nopeudella. Laukaisee annetun aliohjelman,...
bool IsDestroying
Onko olio tuhoutumassa.
PhysicsStructure ParentStructure
Rakenneolio, johon tämä olio kuuluu.
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
static new PhysicsGameBase Instance
Käynnissä olevan fysiikkapelin pääolio.