comparison ship.d @ 6:eb6059f7035a

Added planet
author zzzzrrr <mason.green@gmail.com>
date Sat, 21 Mar 2009 16:42:08 -0400
parents 6f455ef24063
children 2217fd1fe384
comparison
equal deleted inserted replaced
5:6f455ef24063 6:eb6059f7035a
33 33
34 import tango.util.container.LinkedList : LinkedList; 34 import tango.util.container.LinkedList : LinkedList;
35 import blaze.dynamics.bzBody : bzBody; 35 import blaze.dynamics.bzBody : bzBody;
36 import blaze.collision.shapes.bzShape : bzShape; 36 import blaze.collision.shapes.bzShape : bzShape;
37 import blaze.common.bzMath: bzVec2, bzCross; 37 import blaze.common.bzMath: bzVec2, bzCross;
38 import blaze.bzWorld : bzWorld;
39 import blaze.dynamics.forces.bzAttractor: bzAttractor;
38 40
39 alias LinkedList!(bzShape) ShapeList; 41 alias LinkedList!(bzShape) ShapeList;
40 42
41 abstract class Ship 43 abstract class Ship
42 { 44 {
43 45 bzWorld world;
44 bzBody rBody; 46 bzBody rBody;
45 ShapeList shapes; 47 ShapeList shapes;
46 bzVec2 engineForce; 48 bzVec2 engineForce;
47 bzVec2 turnForce; 49 bzVec2 turnForce;
48 bzVec2 leftTurnPoint; 50 bzVec2 leftTurnPoint;
49 bzVec2 rightTurnPoint; 51 bzVec2 rightTurnPoint;
50 52
51 this(bzBody rBody) { 53 this(bzWorld world) {
52 this.rBody = rBody; 54 this.world = world;
53 shapes = new ShapeList; 55 shapes = new ShapeList;
54 } 56 }
55 57
56 void thrust() { 58 void thrust() {
57 rBody.force += engineForce.rotate(rBody.angle); 59 rBody.force += engineForce.rotate(rBody.angle);
64 66
65 void turnRight() { 67 void turnRight() {
66 rBody.torque += bzCross(rightTurnPoint.rotate(rBody.angle), 68 rBody.torque += bzCross(rightTurnPoint.rotate(rBody.angle),
67 turnForce.rotate(rBody.angle)); 69 turnForce.rotate(rBody.angle));
68 } 70 }
71
72 void setGravity() {
73
74 float minRadius = 1;
75 float maxRadius = 30;
76 float strength = 4;
77 bzVec2 center = bzVec2(0,0);
78 auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
79 world.addForce(attractor);
80 }
69 } 81 }