36 public partial class PhysicsObject
38 private double _maxAngularV =
double.PositiveInfinity;
39 private double _maxLinearV =
double.PositiveInfinity;
49 Vector2D v =
Body.State.Velocity.Linear;
50 return new Vector( v.X, v.Y );
52 set {
Body.State.Velocity.Linear =
new Vector2D( value.X, value.Y ); }
61 get {
return Body.State.Velocity.Angular; }
62 set {
Body.State.Velocity.Angular = value; }
71 get {
return _maxLinearV; }
72 set { _maxLinearV = value;
IsUpdated =
true; }
81 get {
return _maxAngularV; }
82 set { _maxAngularV = value;
IsUpdated =
true; }
93 Vector2D v =
Body.State.Acceleration.Linear;
94 return new Vector( v.X, v.Y );
96 set {
Body.State.Acceleration.Linear =
new Vector2D( value.X, value.Y ); }
105 get {
return Body.State.Acceleration.Angular; }
106 set {
Body.State.Acceleration.Angular = value; }
110 internal Vector ForceAccumulator
112 get {
return new Vector(
Body.State.ForceAccumulator.Linear.X,
Body.State.ForceAccumulator.Linear.Y ); }
113 set {
Body.State.ForceAccumulator.Linear =
new Vector2D( value.X, value.Y ); }
117 internal double AngularForceAccumulator
119 get {
return Body.State.ForceAccumulator.Angular; }
120 set {
Body.State.ForceAccumulator.Angular = value; }
129 Body.ApplyForce(
new Vector2D( force.
X, force.
Y ) );
140 Body.ApplyForce(
new Vector2D( force.
X, force.
Y ) );
141 ActiveForces.Add(
new Force( force, time ) );
149 Body.ApplyImpulse(
new Vector2D( impulse.
X, impulse.
Y ) );
158 Body.ApplyTorque( torque );
167 Body.State.Acceleration = ALVector2D.Zero;
168 Body.State.Velocity = ALVector2D.Zero;
169 Body.State.ForceAccumulator = ALVector2D.Zero;
203 Vector oldForce =
new Vector(
Body.State.ForceAccumulator.Linear.X,
Body.State.ForceAccumulator.Linear.Y );
205 double aForce =
Body.State.ForceAccumulator.Angular;
206 Body.State.ForceAccumulator =
new ALVector2D( aForce, newForce.
X, newForce.
Y );
214 Body.State.Acceleration.Angular = 0;
215 Body.State.Velocity.Angular = 0;
216 Body.State.ForceAccumulator.Angular = 0;
260 double d = ( this.
Width + obj.Width ) / 2 + distanceDelta;
263 obj.Hit(
Vector.FromLengthAndAngle( force, a ) );
275 public void Throw(
PhysicsObject obj,
Angle angle,
double force,
double distOffset = 0,
int layer = 0,
double axialOffset = 0 )
double Interval
Aika sekunneissa, jonka välein TimeOut tapahtuu.
void ClearOscillations()
Poistaa kaikki värähtelyt kappaleelta.
static readonly Vector UnitX
Vaakasuuntainen yksikkövektori (pituus 1, suunta oikealle).
double Magnitude
Vektorin pituus.
Angle Angle
Kulma radiaaneina.
void Stop()
Pysäyttää ajastimen ja nollaa sen tilan.
virtual void Push(Vector force)
Työntää oliota.
void StopHorizontal()
Pysäyttää olion liikkeen vaakasuunnassa.
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Angle AbsoluteAngle
Olion absoluuttinen kulma pelimaailmassa. Jos olio ei ole minkään toisen peliolion lapsiolio...
override void Stop()
Pysäyttää olion.
Vector Velocity
Olion nopeus.
Vector Acceleration
Olion kiihtyvyys.
virtual void PrepareThrowable(PhysicsObject obj, Angle angle, double force, double distanceDelta, double axialDelta)
static readonly Vector UnitY
Pystysuuntainen yksikkövektori (pituus 1, suunta ylös).
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
void Throw(PhysicsObject obj, Angle angle, double force, double distOffset=0, int layer=0, double axialOffset=0)
Heittää kappaleen hahmon rintamasuuntaa kohti.
double Mass
Olion massa. Mitä suurempi massa, sitä suurempi voima tarvitaan olion liikuttamiseksi.
void StopVertical()
Pysäyttää olion liikkeen pystysuunnassa.
static readonly Angle RightAngle
Suora kulma (90 astetta).
Vector Project(Vector to)
bool IsUpdated
Tarvitseeko olio päivittämistä. Kun perit oman luokkasi tästä luokasta, aseta tämä arvoon true...
virtual void Push(Vector force, TimeSpan time)
Työntää oliota tietyn ajan tietyllä voimalla.
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
void StopAngular()
Pysäyttää kaiken pyörimisliikkeen.
override void MoveToTarget()
virtual void Hit(Vector impulse)
Kohdistaa kappaleeseen impulssin. Tällä kappaleen saa nopeasti liikkeeseen.
Peliluokka reaaliaikaisille peleille.
Vector LeftNormal
Vasen normaali.
double AngularVelocity
Olion kulmanopeus.
virtual void ApplyTorque(double torque)
Kohdistaa kappaleeseen vääntövoiman. Voiman suunta riippuu merkistä.
Body Body
Fysiikkamoottorin käyttämä tietorakenne.
double MaxAngularVelocity
Suurin kulmanopeus, jonka olio voi saavuttaa.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
override void Move(Vector movement)
Siirtää oliota.
Vector AbsolutePosition
Olion absoluuttinen paikka pelimaailmassa. Jos olio ei ole minkään toisen peliolion lapsiolio...
double AngularAcceleration
Olion kulmakiihtyvyys.
double MaxVelocity
Suurin nopeus, jonka olio voi saavuttaa.
void StopAxial(Vector axis)
Pysäyttää liikkeen akselin suunnassa.
void StopMoveTo()
Pysäyttää MoveTo-aliohjelmalla aloitetun liikkeen.