Jypeli  5
The simple game programming library
PhysicsTemplates.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 
3 namespace Jypeli.Assets
4 {
9  public static class PhysicsTemplates
10  {
11  static readonly Vector[] rampRightVertices = new Vector[]
12  {
13  new Vector(-0.5, -0.5),
14  new Vector(0.5, -0.5),
15  new Vector(0.5, 0.5),
16  };
17 
18  static readonly IndexTriangle[] rampRightTriangles = new IndexTriangle[]
19  {
20  new IndexTriangle( 2, 1, 0 )
21  };
22 
23  static readonly Polygon rampRightShape = new Polygon(
24  new ShapeCache( rampRightVertices, rampRightTriangles ) );
25 
32  public static void ApplyRampRight( PhysicsObject o, double wheelDiameter )
33  {
34  o.SetShape( rampRightShape, GetDrivingSurfaceParameters( o, wheelDiameter ) );
35  }
36 
37  private static CollisionShapeParameters GetDrivingSurfaceParameters( PhysicsObject o, double wheelDiameter )
38  {
40  p.DistanceGridSpacing = Math.Min( wheelDiameter / 3, o.Width / 8 );
41  p.MaxVertexDistance = Math.Min( wheelDiameter / 2, o.Width / 4 );
42  return p;
43  }
44 
45  static readonly Vector[] rampLeftVertices = new Vector[]
46  {
47  new Vector(-0.5, -0.5),
48  new Vector(0.5, -0.5),
49  new Vector(-0.5, 0.5),
50  };
51 
52  static readonly IndexTriangle[] rampLeftTriangles = new IndexTriangle[]
53  {
54  new IndexTriangle( 2, 1, 0 )
55  };
56 
57  static readonly Polygon rampLeftShape = new Polygon(
58  new ShapeCache( rampLeftVertices, rampLeftTriangles ) );
59 
66  public static void ApplyRampLeft( PhysicsObject o, double wheelDiameter )
67  {
68  o.SetShape( rampLeftShape, GetDrivingSurfaceParameters( o, wheelDiameter ) );
69  }
70 
77  public static void ApplyStackableBox( PhysicsObject o, double minBoxWidth )
78  {
80  o.LinearDamping = 0.96;
81  o.AngularDamping = 0.96;
82  p.MaxVertexDistance = Math.Min( minBoxWidth / 4, o.Height / 2 );
83  p.DistanceGridSpacing = Math.Min( minBoxWidth / 8, o.Height / 2 );
84  o.SetShape( Shape.Rectangle, p );
85  }
86  }
87 }
static void ApplyRampLeft(PhysicsObject o, double wheelDiameter)
Optimoi fysiikkaominaisuudet rampille, jonka päältä sivulta kuvattu auto voi ajaa.
static void ApplyRampRight(PhysicsObject o, double wheelDiameter)
Optimoi fysiikkaominaisuudet rampille, jonka päältä sivulta kuvattu auto voi ajaa.
Kuvio.
Definition: Shapes.cs:48
double LinearDamping
Olion hidastuminen. Hidastaa olion vauhtia, vaikka se ei osuisi mihinkään. Vähän kuin väliaineen (esi...
Definition: Inertia.cs:196
static readonly Rectangle Rectangle
Suorakulmio.
Definition: Shapes.cs:72
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
Definition: Coefficients.cs:36
Törmäyskuvion laatuun vaikuttavat parametrit.
double AngularDamping
Olion pyörimisen hidastuminen.
Definition: Inertia.cs:207
Sisältää valmiiksi lasketut kolmiot, joiden avulla piirtäminen on suoraviivaista. ...
Definition: Shapes.cs:577
Sisältää funktioita, joilla fysiikkaoliolle voidaan asettaa tiettyä tarkoitusta varten optimoidut omi...
static void ApplyStackableBox(PhysicsObject o, double minBoxWidth)
Optimoi fysiikkaominaisuudet laatikolle, joita pinotaan monta päällekkäin, niin että ne pysyvät mahdo...
Monikulmio.
Definition: Shapes.cs:496
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
2D-vektori.
Definition: Vector.cs:56
Muotojen määrityksessä käytettävä kolmio.
Definition: Shapes.cs:547
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).