Jypeli  9
The simple game programming library
PhysicsObject.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 
3 namespace Jypeli
4 {
5  [Save]
6  public partial class PhysicsObject : GameObject, IPhysicsObjectInternal
7  {
12  public bool IgnoresGravity
13  {
14  get { return Body.IgnoresGravity; }
15  set { Body.IgnoresGravity = value; }
16  }
17 
23  {
24  get { return Body.IgnoresPhysicsLogics; }
25  set { Body.IgnoresPhysicsLogics = value; }
26  }
27 
31  public PhysicsStructure ParentStructure { get; internal set; }
32 
33  [Save]
34  public bool IgnoresExplosions { get; set; }
35 
44  public PhysicsObject( double width, double height, Shape shape, double x = 0.0, double y = 0.0)
45  : base( width, height, shape)
46  {
47  Initialize( width, height, shape );
48  Position = new Vector(x, y);
49  }
50 
56  public PhysicsObject( double width, double height )
57  : this( width, height, Shape.Rectangle )
58  {
59  }
60 
68  public PhysicsObject(double width, double height, double x, double y)
69  : this(width, height, Shape.Rectangle, x, y)
70  {
71  }
72 
77  public PhysicsObject( Animation animation )
78  : base( animation )
79  {
80  Initialize( animation.Width, animation.Height, Shape.Rectangle );
81  }
82 
87  public PhysicsObject(RaySegment raySegment)
88  : this(1, 1, raySegment)
89  {
90  }
91 
92  private void Initialize( double width, double height, Shape shape )
93  {
94  Body = PhysicsGameBase.Instance.Engine.CreateBody( this, width, height, shape );
95  Body.Collided += this.OnCollided;
96  }
97 
104  public static PhysicsObject CreateStaticObject( double width, double height, Shape shape )
105  {
106  var obj = new PhysicsObject( width, height, shape );
107  obj.MakeStatic();
108  return obj;
109  }
110 
116  public static PhysicsObject CreateStaticObject( double width, double height )
117  {
118  var obj = new PhysicsObject( width, height );
119  obj.MakeStatic();
120  return obj;
121  }
122 
127  public static PhysicsObject CreateStaticObject( Animation animation )
128  {
129  var obj = new PhysicsObject( animation );
130  obj.MakeStatic();
131  return obj;
132  }
133 
137  public void MakeStatic()
138  {
139  Body.MakeStatic();
140  }
141 
146  public bool IsDestroying
147  {
148  get { throw new NotImplementedException(); }
149  }
150 
157  public event Action Destroying;
158 
159  public override void Update( Time time )
160  {
163  if ( Math.Abs( AngularVelocity ) > MaxAngularVelocity )
165 
166  base.Update( time );
167  }
168  }
169 }
Jypeli.PhysicsObject.IgnoresGravity
bool IgnoresGravity
Jättääkö painovoiman huomiotta.
Definition: PhysicsObject.cs:13
Jypeli.PhysicsObject.CreateStaticObject
static PhysicsObject CreateStaticObject(double width, double height)
Alustaa fysiikkaolion käyttöön ja tekee siitä staattisen (liikkumattoman).
Definition: PhysicsObject.cs:116
Jypeli.PhysicsObject.OnCollided
void OnCollided(IPhysicsBody thisBody, IPhysicsBody otherBody)
Fysiikkamoottori kutsuu kun törmäys tapahtuu
Definition: Collisions.cs:109
Jypeli.PhysicsObject.CreateStaticObject
static PhysicsObject CreateStaticObject(double width, double height, Shape shape)
Alustaa fysiikkaolion käyttöön ja tekee siitä staattisen (liikkumattoman).
Definition: PhysicsObject.cs:104
Jypeli.PhysicsObject.Body
IPhysicsBody Body
Definition: Dimensions.cs:10
Jypeli.PhysicsObject.MaxVelocity
double MaxVelocity
Suurin nopeus, jonka olio voi saavuttaa.
Definition: Movement.cs:55
Jypeli.PhysicsObject.Initialize
void Initialize(double width, double height, Shape shape)
Definition: PhysicsObject.cs:92
Jypeli.Animation.Width
double? Width
Animaation leveys. Nolla, jos animaatiossa ei ole yhtään ruutua.
Definition: Animation.cs:153
Jypeli.PhysicsStructure
Rakenne, joka pitää fysiikkaoliot kiinteän matkan päässä toisistaan.
Definition: PhysicsStructure.cs:11
Jypeli
Definition: Automobile.cs:5
Jypeli.PhysicsObject.Update
override void Update(Time time)
Definition: PhysicsObject.cs:159
Jypeli.PhysicsObject.IsDestroying
bool IsDestroying
Onko olio tuhoutumassa.
Definition: PhysicsObject.cs:147
Jypeli.PhysicsGameBase
Kantaluokka fysiikkapeleille.
Definition: PhysicsGameBase.cs:12
Jypeli.PhysicsObject.IgnoresExplosions
bool IgnoresExplosions
Definition: PhysicsObject.cs:34
Jypeli.PhysicsObject.CreateStaticObject
static PhysicsObject CreateStaticObject(Animation animation)
Alustaa fysiikkaolion käyttöön.
Definition: PhysicsObject.cs:127
Jypeli.PhysicsObject.Destroying
Action Destroying
Tapahtuisi, kun olio on tuhoutumassa. EI KÄYTÖSSÄ!
Definition: PhysicsObject.cs:157
Jypeli.PhysicsObject.MaxAngularVelocity
double MaxAngularVelocity
Suurin kulmanopeus, jonka olio voi saavuttaa.
Definition: Movement.cs:65
Jypeli.Rectangle
Suorakulmio.
Definition: Shapes.cs:318
Jypeli.Shape
Kuvio.
Definition: Shapes.cs:47
Jypeli.PhysicsObject.PhysicsObject
PhysicsObject(double width, double height, double x, double y)
Luo uuden fysiikkaolion.
Definition: PhysicsObject.cs:68
Jypeli.RaySegment
Jana.
Definition: Shapes.cs:475
Jypeli.Shape.Rectangle
static readonly Rectangle Rectangle
Suorakulmio.
Definition: Shapes.cs:70
Jypeli.PhysicsObject.PhysicsObject
PhysicsObject(RaySegment raySegment)
Luo fysiikkaolion, jonka muotona on säde.
Definition: PhysicsObject.cs:87
Jypeli.Time
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:14
Jypeli.PhysicsObject.Velocity
Vector Velocity
Nopeus.
Definition: Movement.cs:15
Jypeli.PhysicsObject.AngularVelocity
double AngularVelocity
Kulmanopeus.
Definition: Movement.cs:35
Jypeli.PhysicsObject.PhysicsObject
PhysicsObject(double width, double height, Shape shape, double x=0.0, double y=0.0)
Alustaa fysiikkaolion käyttöön.
Definition: PhysicsObject.cs:44
Jypeli.Vector.Angle
Angle Angle
Kulma radiaaneina.
Definition: Vector.cs:346
Jypeli.Animation
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
Definition: Animation.cs:62
Jypeli.PhysicsObject.IgnoresPhysicsLogics
bool IgnoresPhysicsLogics
Jättääkö fysiikkakentät (esim. painovoiman) huomiotta.
Definition: PhysicsObject.cs:23
Jypeli.PhysicsObject.Position
override Vector Position
Definition: Dimensions.cs:27
Jypeli.PhysicsObject.PhysicsObject
PhysicsObject(Animation animation)
Alustaa fysiikkaolion käyttöön.
Definition: PhysicsObject.cs:77
Jypeli.Vector.FromLengthAndAngle
static Vector FromLengthAndAngle(double length, double angle)
Luo vektorin pituuden ja kulman perusteella.
Definition: Vector.cs:106
Jypeli.Vector.Magnitude
double Magnitude
Vektorin pituus.
Definition: Vector.cs:319
Jypeli.Vector
2D-vektori.
Definition: Vector.cs:59
System
Definition: CFFauxAttributes.cs:29
Jypeli.PhysicsGameBase.Engine
IPhysicsEngine Engine
Definition: PhysicsGameBase.cs:29
Jypeli.PhysicsObject.PhysicsObject
PhysicsObject(double width, double height)
Alustaa fysiikkaolion käyttöön.
Definition: PhysicsObject.cs:56
Jypeli.PhysicsObject
Definition: Collisions.cs:6
Jypeli.PhysicsObject.ParentStructure
PhysicsStructure ParentStructure
Rakenneolio, johon tämä olio kuuluu.
Definition: PhysicsObject.cs:31
Jypeli.Animation.Height
double? Height
Animaation korkeus. Nolla, jos animaatiossa ei ole yhtään ruutua.
Definition: Animation.cs:161
Jypeli.PhysicsGameBase.Instance
static new PhysicsGameBase Instance
Käynnissä olevan fysiikkapelin pääolio.
Definition: PhysicsGameBase.cs:59
Jypeli.PhysicsObject.MakeStatic
void MakeStatic()
Tekee oliosta staattisen eli liikkumattoman.
Definition: PhysicsObject.cs:137