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 ++++++++++++++++++++++ .../endless/world/ObjectsRenderer.java | 3 +- .../endless/world/ship/SteerableEnemyShip.java | 2 ++ 3 files changed, 42 insertions(+), 1 deletion(-) (limited to 'core/src/org') 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(); } } diff --git a/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java b/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java index 628b63a..c9792e4 100644 --- a/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java +++ b/core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java @@ -6,6 +6,7 @@ import java.util.List; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import org.snoopdesigns.endless.context.Context; import org.snoopdesigns.endless.renderer.Renderer; +import org.snoopdesigns.endless.world.ship.SteerableEnemyShip; public class ObjectsRenderer implements Renderer { @@ -17,7 +18,7 @@ public class ObjectsRenderer implements Renderer { public void create() { batch = new SpriteBatch(); renderables.add(Context.getInstance().getPlayerShip()); - //renderables.add(new SteerableEnemyShip()); + renderables.add(new SteerableEnemyShip()); //renderables.add(new SteerableEnemyShip()); //renderables.add(new SteerableEnemyShip()); diff --git a/core/src/org/snoopdesigns/endless/world/ship/SteerableEnemyShip.java b/core/src/org/snoopdesigns/endless/world/ship/SteerableEnemyShip.java index 40db5d4..4a0ae2d 100644 --- a/core/src/org/snoopdesigns/endless/world/ship/SteerableEnemyShip.java +++ b/core/src/org/snoopdesigns/endless/world/ship/SteerableEnemyShip.java @@ -95,6 +95,8 @@ public class SteerableEnemyShip extends SteerablePhysicalBody implements Rendera sprite.setCenter(getBody().getPosition().x, getBody().getPosition().y); sprite.setRotation(MathUtils.radDeg * getBody().getAngle()); sprite.draw(batch); + + limitVelocity(); } @Override -- cgit v1.2.3