2using System.Collections.Generic;
47 double bottom =
objects[0].Bottom;
48 double right =
objects[0].Right;
50 for (
int i = 1; i <
objects.Count; i++)
80 obj.IsVisible = value;
95 objects.ForEach(o => o.IgnoresLighting = value);
120 set {
throw new NotImplementedException(
"Setting size for a structure is not implemented."); }
129 set {
throw new InvalidOperationException(
"Physics structure has no image or animation."); }
137 get {
return new Vector(1, 1); }
138 set {
throw new NotImplementedException(); }
146 get {
return false; }
147 set {
throw new NotImplementedException(); }
167 set {
throw new NotImplementedException(); }
181 #region IPhysicsObject
189 public event CollisionHandler<IPhysicsObject, IPhysicsObject>
Collided;
205 get {
return objects.Sum(item => item.Mass); }
206 set {
objects.ForEach(item => item.Mass = value); }
217 objects.ForEach(item => item.IgnoresGravity = value);
230 objects.ForEach(item => item.IgnoresCollisionResponse = value);
243 objects.ForEach(item => item.IgnoresExplosions = value);
256 objects.ForEach(item => item.IgnoresPhysicsLogics = value);
269 objects.ForEach(item => item.CollisionIgnorer = value);
284 objects.ForEach(item => item.CollisionIgnoreGroup = value);
297 objects.ForEach(item => item.StaticFriction = value);
310 objects.ForEach(item => item.KineticFriction = value);
323 objects.ForEach(item => item.Restitution = value);
337 objects.ForEach(item => item.LinearDamping = value);
414 objects =
new List<PhysicsObject>();
432 for (
int i = 0; i < objs.Length; i++)
470 if (o is
T && predicate((
T)o))
492 throw new NotImplementedException(
"Currently only PhysicsObjects can be added to a structure.");
516 throw new NotImplementedException(
"Currently only PhysicsObjects can be added to a structure.");
520 if (!
objects.Contains(physObj))
535 _calcMomentOfInertia = 0;
553 if (obj.IsInside(point))
560 #region IPhysicsObject
609 public override void MoveTo(
Vector location,
double speed, Action doWhenArrived)
665 #region DelayedDestroyable
701 foreach (var obj
in objects) obj.Destroy();
708 #region Unimplemented Members / IGameObject
712 get {
throw new NotImplementedException(); }
713 set {
throw new NotImplementedException(); }
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
static void DoNextUpdate(Action action)
Suorittaa aliohjelman seuraavalla päivityksellä.
void Add(Light light)
Lisää valon peliin. Nykyisellään valoja voi olla ainoastaan yksi kappale. Toistaiseksi ei tuettu Wind...
static Game Instance
Käynnissä olevan pelin pääolio.
void Remove(IGameObject o)
Poistaa olion pelistä. Jos haluat tuhota olion, kutsu mielummin olion Destroy-metodia.
void StopMoveTo()
Pysäyttää MoveTo-aliohjelmalla aloitetun liikkeen.
override void MoveTo(Vector location, double speed, Action doWhenArrived)
Yrittää siirtyä annettuun paikkaan annetulla nopeudella. Laukaisee annetun aliohjelman,...
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana.
double Top
Olion yläreunan y-koordinaatti.
double Bottom
Olion alareunan y-koordinaatti.
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
double Left
Olion vasemman reunan x-koordinaatti.
TimeSpan MaximumLifetime
Olion suurin mahdollinen elinaika. Kun Lifetime on suurempi kuin tämä, olio kuolee.
double Right
Olion oikean reunan x-koordinaatti.
Action Removed
Tapahtuu, kun olio poistetaan pelistä (tuhotaan tai ei).
Base class for Collision Ignorers to impliment.
Kantaluokka fysiikkapeleille.
static new PhysicsGameBase Instance
Käynnissä olevan fysiikkapelin pääolio.
void Remove(IAxleJoint j)
Poistaa liitoksen pelistä.
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
bool IgnoresExplosions
Jättääkö räjähdysten paineaallon huomioimatta
double AngularVelocity
Kulmanopeus.
virtual int? CollisionIgnoreGroup
Törmäysryhmä. Oliot jotka ovat samassa törmäysryhmässä menevät toistensa läpi. Jos ryhmä on nolla tai...
double KineticFriction
Liikekitka (hidastaa kun olio on jo liikkeessä). Ks. StaticFriction (lepokitka)
bool IgnoresGravity
Jättääkö painovoiman huomiotta.
double AngularAcceleration
Kulmakiihtyvyys.
IPhysicsBody Body
Fysiikkamoottorin käsittelemä fysiikkakappale.
virtual void Push(Vector force)
Työntää oliota.
override Vector?? Position
bool CanRotate
Jos false, olio ei voi pyöriä.
bool IgnoresPhysicsLogics
Jättääkö fysiikkakentät (esim. painovoiman) huomiotta.
void StopHorizontal()
Pysäyttää olion liikkeen vaakasuunnassa.
virtual Ignorer CollisionIgnorer
Olio, jolla voi välttää oliota osumasta tiettyihin muihin olioihin.
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
void StopAxial(Vector axis)
Pysäyttää liikkeen akselin suunnassa.
void StopVertical()
Pysäyttää olion liikkeen pystysuunnassa.
double LinearDamping
Nopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
double AngularDamping
Kulmanopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
void StopAngular()
Pysäyttää kaiken pyörimisliikkeen.
override void Stop()
Pysäyttää olion.
bool IgnoresCollisionResponse
Jättääkö törmäykset huomiotta.
Vector Acceleration
Kiihtyvyys.
override void Move(Vector movement)
Siirtää oliota.
virtual void ApplyTorque(double torque)
Kohdistaa kappaleeseen vääntövoiman. Voiman suunta riippuu merkistä.
PhysicsStructure ParentStructure
Rakenneolio, johon tämä olio kuuluu.
double StaticFriction
Lepokitka (hidastaa liikkeelle lähtiessä). Ks. KineticFriction (liikekitka)
double Restitution
Kimmoisuuskerroin (0 = ei kimmoisa, 1 = täysin kimmoisa, yli 1 = saa energiaa tyhjästä)
Rakenne, joka pitää fysiikkaoliot kiinteän matkan päässä toisistaan.
Ignorer CollisionIgnorer
Olio, jolla voidaan välttää törmäykset muihin olioihin
override void Destroy()
Tuhoaa olion
double AngularDamping
Kulmanopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
Vector Velocity
Keskipisteen nopeus
bool IgnoresGravity
Jätetäänkö painovoima huomioimatta
double? MomentOfInertia
Hitausmomentti
Action Destroying
Tapahtuu, kun olion tuhoaminen alkaa.
PhysicsObject centerObject
void Push(Vector force, TimeSpan time)
Työntää keskipistettä jonkin ajan
void Push(Vector force)
Työntää rakenteen keskipistettä
virtual void ReallyDestroy()
Tuhoaa olion välittömästi, ei kutsu OnDestroying funktiota.
bool IgnoresLighting
Jättääkö olio kentän valaistuksen huomiotta.
double? _setMomentOfInertia
bool TextureFillsShape
Ei toteutettu
double _calcMomentOfInertia
PhysicsStructure ParentStructure
Rakenneolio, johon tämä olio kuuluu.
int CollisionIgnoreGroup
Törmäysryhmä. Oliot jotka ovat samassa törmäysryhmässä menevät toistensa läpi. Jos ryhmä on nolla tai...
IList< PhysicsObject > Objects
Rakenteeseen kuuluvat oliot.
void Add(IGameObject obj)
Lisää olion rakenteeseen.
bool IgnoresCollisionResponse
Jätetäänkö törmäykset huomioimatta
double LinearDamping
Nopeuskerroin. Pienempi arvo kuin 1 (esim. 0.998) toimii kuten kitka / ilmanvastus.
void StopAngular()
Pysäyttää pyörimisen
void CalculateMomentOfInertia()
bool IgnoresPhysicsLogics
Jättääkö fysiikkalogiikat huomioimatta
int ObjectCount
Rakenteeseen kuuluvien olioiden määrä.
Vector TextureWrapSize
Ei toteutettu
override void MoveTo(Vector location, double speed, Action doWhenArrived)
Yrittää siirtyä annettuun paikkaan annetulla nopeudella. Laukaisee annetun aliohjelman,...
void StopAxial(Vector axis)
Pysäyttää annetun akselin suuntaisen liikkeen
void OnCollided(IPhysicsObject part, IPhysicsObject target)
Kutsutaan kun törmätään.
Vector Acceleration
Keskipisteen kiihtyvyys
void OnDestroying()
Kun oliota käydään tuhoamaan
void ApplyTorque(double torque)
Kohdistaa vääntömomentin
CollisionHandler< IPhysicsObject, IPhysicsObject > Collided
Tapahtuu kun olio törmää toiseen.
void Stop()
Pysäyttää liikkeen
List< Listener > AssociatedListeners
Tähän liittyvät näppäinkuuntelijat
bool IsVisible
Onko olio näkyvissä.
List< PhysicsObject > objects
BoundingRectangle BoundingRectangle
Fysiikkastruktuurin ympäröivä neliö
double AngularAcceleration
Keskipisteen kulmakiihtyvyys
override Vector Size
Ei toteutettu
PhysicsStructure()
Luo uuden tyhjän rakenteen.
void StopHorizontal()
Pysäyttää sivusuuntaisen liikkeen
IEnumerable< T > GetChildObjects< T >()
Palauttaa rakenteeseen kuuluvat oliot.
override void Update(Time time)
Peliolion päivitys. Tätä kutsutaan, kun IsUpdated-ominaisuuden arvoksi on asetettu true ja olio on li...
double StaticFriction
Lepokitka
PhysicsStructure(params PhysicsObject[] objs)
Luo uuden rakenteen ja varustaa sen fysiikkaolioilla.
double KineticFriction
Liikekita
bool IgnoresExplosions
Jätetäänkö räjähdyksien paineaalto huomioimatta
void Remove(IGameObject obj)
Poistaa kappaleen fysiikkastruktuurista
void Move(Vector movement)
Liikuttaa rakennetta
override Vector Position
Rakenteen paikka pelimaailmassa.
bool IsDestroying
Onko olio tuhoutumassa.
bool IsAddedToGame
Onko rakenne lisätty peliin.
void StopVertical()
Pysäyttää pystysuuntaisen liikkeen
bool IsInside(Vector point)
Onko piste fysiikkarakenteen sisällä
void StopMoveTo()
Lopettaa liikkumisen kohdetta kohti
void Hit(Vector impulse)
Kohdistaa rakenteen keskipisteeseen impulssin
bool CanRotate
Jos false, olio ei voi pyöriä.
double Restitution
Kimmoisuuskerroin (0 = ei kimmoisa, 1 = täysin kimmoisa, yli 1 = saa energiaa tyhjästä)
double AngularVelocity
Keskipisteen kulmanopeus
static readonly Rectangle Rectangle
Suorakulmio.
Rajapinta luokalle joka sisältää peliolioita.
Yhteinen rajapinta kaikille peliolioille.
Yhteinen rajapinta kaikille fysiikkaolioille.
Jypelin sisäiset metodit ja propertyt joihin käyttäjän ei tarvitse päästä käsiksi kuuluvat tÃ...
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Vector Size
Suorakaiteen koko
static readonly Color Transparent
Läpinäkyvä väri.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
static double Distance(Vector p1, Vector p2)
Etäisyys kahden pisteen välillä.