How is it going on collide?
Here is the first demo ported over in main.bmx:
(Maybe it will work at first go. It builds fine at least.)
Here is the first demo ported over in main.bmx:
(Maybe it will work at first go. It builds fine at least.)
SuperStrict Include "mathutils.bmx" Include "body.bmx" Include "joint.bmx" Include "arbiter.bmx" Include "collide.bmx" Include "World.bmx" Graphics 800,600 Global DeltaTime:Float = 1.0 / 60.0 Global _World:TWorld = World(Vec2(0.0, -10.0), 10) Global Bomb:TBody '* Demo 1 "A single box" Local Ground:TBody = Body() Ground.Set(Vec2(100.0, 20.0), FLT_MAX) Ground.Position.Set(0.0, -0.5 * Ground.Width.Y) _World.Add(Ground) Local Box:TBody = Body() Box.Set(Vec2(1.0, 1.0), 100.0) Box.position.Set(0.0, 4.0) _World.Add(Box) While Not KeyHit(KEY_ESCAPE) If KeyHit(KEY_SPACE) LaunchBomb End If Cls _World._Step(DeltaTime) For Local b:TBody = EachIn _World.bodies DrawBody(b) Next For Local j:TJoint = EachIn _World.joints DrawJoint(j) Next DrawText("Demo 1",0,0) DrawText("Press Space to Launch the Bomb",0,15) Flip Wend Function DrawBody (body:Tbody) Local R:TMat22 = Mat22_Angle(body.rotation) Local x:TVec2 = body.Position Local h:TVec2 = MultFloatVec2(0.5, body.width) Local v1:TVec2 = AddVec2Vec2(x, MultMat22Vec2(R, Vec2(-h.x, -h.y))) Local v2:TVec2 = AddVec2Vec2(x, MultMat22Vec2(R, Vec2(h.x, -h.y))) Local v3:TVec2 = AddVec2Vec2(x, MultMat22Vec2(R, Vec2(h.x, h.y))) Local v4:TVec2 = AddVec2Vec2(x, MultMat22Vec2(R, Vec2(-h.x, h.y))) If (body = Bomb) SetColor 128,255,128 Else SetColor 200,200,255 End If DrawLine v1.x, v1.y, v2.x, v2.y DrawLine v2.x, v2.y, v3.x, v3.y DrawLine v3.x, v3.y, v4.x, v4.y DrawLine v4.x, v4.y, v1.x, v1.y End Function Function DrawJoint (joint:TJoint) Local b1:TBody = joint.body1 Local b2:TBody = joint.body2 Local R1:TMat22 Mat22_Angle(b1.rotation) Local R2:TMat22 Mat22_Angle(b2.rotation) Local x1:TVec2 = b1.position Local p1:TVec2 = AddVec2Vec2(x1, MultMat22Vec2(R1, joint.localAnchor1)) Local x2:TVec2 = b2.position Local p2:TVec2 = AddVec2Vec2(x2, MultMat22Vec2(R2, joint.localAnchor2)) SetColor 128,128,200 DrawLine x1.x, x1.y, p1.x, p1.y DrawLine p1.x, p1.y, x2.x, x2.y DrawLine x2.x, x2.y, p2.x, p2.y DrawLine p2.x, p2.y, x1.x, x1.y End Function Function LaunchBomb () If (Not bomb) Bomb = Body() Bomb.Set(Vec2(1.0, 1.0), 50.0) Bomb.Friction = 0.2 _World.Add(Bomb) End If Bomb.position.Set(Random2(-15.0, 15.0), 15.0) Bomb.rotation = Random2(-1.5, 1.5) Bomb.velocity = MultFloatVec2(-1.5, Bomb.position) Bomb.angularVelocity = Random2(-20.0, 20.0) End Function