dermetfan

Xtend Box2D test awesomeness v2

Aug 20th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package net.dermetfan.someLibgdxTests.screens
  2.  
  3. import com.badlogic.gdx.Gdx
  4. import com.badlogic.gdx.Screen
  5. import com.badlogic.gdx.graphics.GL20
  6. import com.badlogic.gdx.graphics.OrthographicCamera
  7. import com.badlogic.gdx.graphics.g2d.SpriteBatch
  8. import com.badlogic.gdx.math.Vector2
  9. import com.badlogic.gdx.physics.box2d.BodyDef
  10. import com.badlogic.gdx.physics.box2d.BodyDef.BodyType
  11. import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer
  12. import com.badlogic.gdx.physics.box2d.EdgeShape
  13. import com.badlogic.gdx.physics.box2d.FixtureDef
  14. import com.badlogic.gdx.physics.box2d.World
  15. import net.dermetfan.libgdx.graphics.Box2DSprite
  16. import net.dermetfan.someLibgdxTests.Assets
  17. import net.dermetfan.someLibgdxTests.entities.Car
  18.  
  19. class XtendTest implements Screen {
  20.  
  21.     private SpriteBatch batch
  22.     private Box2DDebugRenderer debugRenderer
  23.     private OrthographicCamera camera
  24.     private World world
  25.     private Car car
  26.  
  27.     override show() {
  28.         batch = new SpriteBatch
  29.         debugRenderer = new Box2DDebugRenderer
  30.         camera = new OrthographicCamera
  31.        
  32.         world = new World(new Vector2(0, -9.81f), true)
  33.        
  34.         val chassisFixDef = new FixtureDef
  35.         chassisFixDef.density = 5
  36.         chassisFixDef.friction = 0.4f
  37.         chassisFixDef.restitution = 0.2f
  38.        
  39.         val wheelFixDef = new FixtureDef
  40.         wheelFixDef.density = chassisFixDef.density * 2
  41.         wheelFixDef.friction = 50
  42.         wheelFixDef.restitution = 0.4f
  43.        
  44.         car = new Car(world, chassisFixDef, wheelFixDef, 0, 2, 3, 1.25f)
  45.         Gdx.input.inputProcessor = car
  46.  
  47.         car.leftWheel.setUserData(new Box2DSprite(Assets.ball))
  48.         car.rightWheel.userData = car.leftWheel.userData
  49.        
  50.         val groundBodyDef = new BodyDef
  51.         groundBodyDef.type = BodyType.StaticBody
  52.        
  53.         val groundShape = new EdgeShape
  54.         groundShape.set(-500, 0, 500, 0)
  55.  
  56.         world.createBody(groundBodyDef).createFixture(groundShape, 0)
  57.     }
  58.  
  59.     override render(float delta) {
  60.         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
  61.        
  62.         world.step(1 / 60f, 8, 3)
  63.        
  64.         camera.position.set(car.getChassis.position.x, car.getChassis.position.y, 0)
  65.         camera.update
  66.        
  67.         batch.projectionMatrix = camera.combined
  68.         batch.begin
  69.         Box2DSprite.draw(batch, world)
  70.         batch.end
  71.        
  72.         debugRenderer.render(world, camera.combined)
  73.     }
  74.  
  75.     override resize(int width, int height) {
  76.         camera.viewportWidth = width / 25
  77.         camera.viewportHeight = height / 25
  78.     }
  79.  
  80.     override hide() {
  81.         dispose
  82.     }
  83.  
  84.     override pause() {
  85.     }
  86.  
  87.     override resume() {
  88.     }
  89.  
  90.     override dispose() {
  91.         batch.dispose
  92.         world.dispose
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment