summaryrefslogtreecommitdiff
path: root/core/src/org
diff options
context:
space:
mode:
authorDmitri Morozov <snoopdesigns@gmail.com>2024-02-05 19:27:53 +0100
committerue86388 <dmitrii.morozov@sbb.ch>2024-02-05 19:27:53 +0100
commite513d085789be3eedfd56b0103646e989c750b33 (patch)
tree8acf7a8eff1065bf01c45c56fcee7c8e29ba6280 /core/src/org
parent0823e1b0924382410665552e6381806bd9835ce2 (diff)
Add debug renderer for physical bodies
Diffstat (limited to 'core/src/org')
-rw-r--r--core/src/org/snoopdesigns/endless/physics/Box2DDebugRenderer.java38
-rw-r--r--core/src/org/snoopdesigns/endless/world/ObjectsRenderer.java3
-rw-r--r--core/src/org/snoopdesigns/endless/world/ship/SteerableEnemyShip.java2
3 files changed, 42 insertions, 1 deletions
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<Body> 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