pyramid.bmx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. SuperStrict
  2. Framework Physics.Box2d
  3. Import SDL.SDLRenderMax2D
  4. Import "test.bmx"
  5. Graphics 800,600, 0
  6. SetBlend alphablend
  7. Run(New Pyramid.Create(), New TSettings)
  8. Type Pyramid Extends Test
  9. Method Create:Pyramid()
  10. Init(10, 10)
  11. Local ground:b2Body
  12. Local sd:b2PolygonDef = New b2PolygonDef
  13. sd.SetAsBox(50.0, 10.0)
  14. Local bd:b2BodyDef = New b2BodyDef
  15. bd.SetPosition(New b2Vec2.Create(0.0, -10.0))
  16. ground = m_world.CreateBody(bd)
  17. ground.CreateShape(sd)
  18. sd = New b2PolygonDef
  19. Local a:Float = 0.5
  20. sd.SetAsBox(a, a)
  21. sd.SetDensity(5)
  22. Local x:b2Vec2 = New b2Vec2.Create(-10.0, 1.0)
  23. Local y:b2Vec2 = New b2Vec2.Create()
  24. Local deltaX:b2Vec2 = New b2Vec2.Create(0.5625, 2.0)
  25. Local deltaY:b2Vec2 = New b2Vec2.Create(1.125, 0.0)
  26. For Local i:Int = 0 Until 25
  27. y.Copy(x)
  28. For Local j:Int = i Until 25
  29. Local bd:b2BodyDef = New b2BodyDef
  30. bd.SetPosition(y)
  31. Local body:b2Body = m_world.CreateBody(bd)
  32. body.CreateShape(sd)
  33. body.SetMassFromShapes()
  34. y.Add(deltaY)
  35. Next
  36. x.Add(deltaX)
  37. Next
  38. Return Self
  39. End Method
  40. End Type