From e513d085789be3eedfd56b0103646e989c750b33 Mon Sep 17 00:00:00 2001 From: Dmitri Morozov Date: Mon, 5 Feb 2024 19:27:53 +0100 Subject: Add debug renderer for physical bodies --- .../endless/physics/Box2DDebugRenderer.java | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'core/src/org/snoopdesigns/endless/physics') diff --git a/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java b/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java index 15f930f..b67987c 100644 --- a/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java +++ b/core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java @@ -1,11 +1,19 @@ package org.snoopdesigns.endless.physics; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.physics.box2d.Body; +import com.badlogic.gdx.utils.Array; import org.snoopdesigns.endless.context.Context; import org.snoopdesigns.endless.renderer.Renderer; public class Box2DDebugRenderer implements Renderer { private com.badlogic.gdx.physics.box2d.Box2DDebugRenderer debugRenderer; + private BitmapFont font; + private SpriteBatch batch; @Override public void create() { @@ -13,6 +21,12 @@ public class Box2DDebugRenderer implements Renderer { debugRenderer.setDrawBodies(true); debugRenderer.setDrawVelocities(true); debugRenderer.setDrawAABBs(true); + + font = new BitmapFont(Gdx.files.internal("calibri.fnt"), false); + font.setColor(Color.CYAN); + font.getData().setScale(0.15f); + + batch = new SpriteBatch(); } @Override @@ -20,9 +34,33 @@ public class Box2DDebugRenderer implements Renderer { debugRenderer.render( Context.getInstance().getWorldContext().getWorld(), Context.getInstance().getCameraContext().getCameraProjection()); + + final Array bodies = new Array<>(); + Context.getInstance().getWorldContext().getWorld().getBodies(bodies); + + batch.setProjectionMatrix(Context.getInstance().getCameraContext().getCameraProjection()); + batch.begin(); + bodies.forEach(body -> { + final String debugText = String.format(""" + p %.1f %.1f + a %.1f + s %.1f m/s + v %.1f %.1f + """, + Context.getInstance().getCameraContext().getPosition().x, + Context.getInstance().getCameraContext().getPosition().y, + Context.getInstance().getPlayerShip().getBody().getAngle(), + Context.getInstance().getPlayerShip().getBody().getLinearVelocity().len(), + Context.getInstance().getPlayerShip().getBody().getLinearVelocity().x, + Context.getInstance().getPlayerShip().getBody().getLinearVelocity().y); + font.draw(batch, debugText, body.getPosition().x + 5f, body.getPosition().y - 5f); + //ont.draw(batch, debugText, 10f, 190f); + }); + batch.end(); } @Override public void dispose() { + batch.dispose(); } } -- cgit v1.2.3