# HG changeset patch # User zzzzrrr # Date 1238185517 14400 # Node ID 2bf818f8b0059abe722a356aee84b56c16a02e2b # Parent 441eb767240469530308eca396cb8522555f8704 fixed asteroids diff -r 441eb7672404 -r 2bf818f8b005 melee/melee.d --- 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) diff -r 441eb7672404 -r 2bf818f8b005 ships/asteroids.d --- 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); } } } diff -r 441eb7672404 -r 2bf818f8b005 ships/urQuan.d --- 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(); } }