changeset 25:2bf818f8b005

fixed asteroids
author zzzzrrr <mason.green@gmail.com>
date Fri, 27 Mar 2009 16:25:17 -0400
parents 441eb7672404
children 88cca12cc8b9
files melee/melee.d ships/asteroids.d ships/urQuan.d
diffstat 3 files changed, 24 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/melee/melee.d	Fri Mar 27 16:05:24 2009 -0400
+++ b/melee/melee.d	Fri Mar 27 16:25:17 2009 -0400
@@ -58,6 +58,7 @@
 
 const ITERS_PER_SECOND = 100;
 const k_maxContactPoints = 100;
+const NUM_ASTROIDS = 15;
 
 alias LinkedList!(Ship) ObjectList;
 
@@ -209,7 +210,11 @@
 		ship1 = new Orz(world);
         ship2.rBody.angle = 3.14159265/4;
         planet = new Planet(world);
-        //auto asteroids = new Asteroid(world);
+        
+        for(int i; i < NUM_ASTROIDS; i++) {
+            auto asteroid = new Asteroid(world);
+            objectList.add(asteroid);
+        }
 	}
     
     void boundaryViolated(bzBody rBody)
--- a/ships/asteroids.d	Fri Mar 27 16:05:24 2009 -0400
+++ b/ships/asteroids.d	Fri Mar 27 16:25:17 2009 -0400
@@ -32,32 +32,24 @@
 import blaze.common.bzMath: bzVec2, bzMul, bzXForm;
 import blaze.dynamics.forces.bzAttractor: bzAttractor;
 
-
+import openmelee.ships.ship: Ship;
 import openmelee.ai.utilities;
 
 const PI = 3.141593;
 
-class Asteroid
+class Asteroid : Ship
 {
 
     bzBodyDef bd;
-    bzBody rBody;
-    bzShapeDef sd;
-
-    bzWorld world;
+    bzShapeDef sd;
 
     this(bzWorld world) {
-        this.world = world;
+        super(world);
         init();
+        calcRadius();
     }
 
     void init() {
-        
-        float minRadius = 0.1;
-        float maxRadius = 10;
-        float strength = 0.5f;
-        bzVec2 center = bzVec2(0,0);
-
 		{
 		    float radius = 0.5f;
             float density = 5.0f;
@@ -68,93 +60,18 @@
 			auto sd2 = new bzCircleDef(density, radius);
 			sd2.localPosition.set(0.5f, 0.5f);
 
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = randomRange(-PI, PI);
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
-		}
-
-		{
-			auto sd1 = new bzPolyDef();
-			sd1.setAsBox(0.25f, 0.5f);
-			sd1.density = 5.0f;
-
-			auto sd2 = new bzPolyDef();
-			sd2.setAsBox(0.25f, 0.5f, bzVec2(0.0f, -0.5f), 0.5f * PI);
-			sd2.density = 5.0f;
-
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = randomRange(-PI, PI);
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
-		}
-
-		{
-			bzXForm xf1;
-			xf1.R.set(0.3524f * PI);
-			xf1.position = bzMul(xf1.R, bzVec2(1.0f, 0.0f));
-
-			auto sd1 = new bzPolyDef();
-			sd1.vertices.length = 3;
-			sd1.vertices[0] = bzMul(xf1, bzVec2(-1.0f, 0.0f));
-			sd1.vertices[1] = bzMul(xf1, bzVec2(1.0f, 0.0f));
-			sd1.vertices[2] = bzMul(xf1, bzVec2(0.0f, 0.5f));
-			sd1.density = 5.0f;
-
-			bzXForm xf2;
-			xf2.R.set(-0.3524f * PI);
-			xf2.position = bzMul(xf2.R, bzVec2(-1.0f, 0.0f));
-
-			auto sd2 = new bzPolyDef();
-			sd2.vertices.length = 3;
-			sd2.vertices[0] = bzMul(xf2, bzVec2(-1.0f, 0.0f));
-			sd2.vertices[1] = bzMul(xf2, bzVec2(1.0f, 0.0f));
-			sd2.vertices[2] = bzMul(xf2, bzVec2(0.0f, 0.5f));
-			sd2.density = 5.0f;
-
-			for (int i = 0; i < 5; ++i)
-			{
-				float x = randomRange(-100f, 100f);
-                float y = randomRange(-100f, 100f);
-				bzVec2 position = bzVec2(x , y);
-				float angle = 0.0f;
-				bd = new bzBodyDef(position, angle);
-                bd.allowFreeze = false;
-                bd.allowSleep = false;
-				rBody = world.createBody(bd);
-				rBody.createShape(sd1);
-				rBody.createShape(sd2);
-				rBody.setMassFromShapes();
-                auto attractor = new bzAttractor(rBody, center, strength, minRadius, maxRadius);
-                world.addForce(attractor);
-                rBody.linearVelocity = bzVec2(x*0.1, y*0.1);
-			}
+            float x = randomRange(-100f, 100f);
+            float y = randomRange(-100f, 100f);
+            bzVec2 position = bzVec2(x , y);
+            float angle = randomRange(-PI, PI);
+            bd = new bzBodyDef(position, angle);
+            bd.allowFreeze = false;
+            bd.allowSleep = false;
+            rBody = world.createBody(bd);
+            rBody.createShape(sd1);
+            rBody.createShape(sd2);
+            rBody.setMassFromShapes();
+            rBody.linearVelocity = bzVec2(x, y);
 		}
 	}
 }
--- a/ships/urQuan.d	Fri Mar 27 16:05:24 2009 -0400
+++ b/ships/urQuan.d	Fri Mar 27 16:25:17 2009 -0400
@@ -119,7 +119,7 @@
         shapes.add(rBody.createShape(bWing));
 
         rBody.setMassFromShapes();
-        //setPlanetGravity();
+        setPlanetGravity();
         calcRadius();
     }
 }