From 0823e1b0924382410665552e6381806bd9835ce2 Mon Sep 17 00:00:00 2001 From: Dmitri Morozov Date: Mon, 5 Feb 2024 19:12:40 +0100 Subject: Add mass, damping and max velocity attributes to a body --- .../org/snoopdesigns/endless/physics/PhysicalBody.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'core/src/org/snoopdesigns/endless/physics') diff --git a/core/src/org/snoopdesigns/endless/physics/PhysicalBody.java b/core/src/org/snoopdesigns/endless/physics/PhysicalBody.java index 23ede8d..31204a9 100644 --- a/core/src/org/snoopdesigns/endless/physics/PhysicalBody.java +++ b/core/src/org/snoopdesigns/endless/physics/PhysicalBody.java @@ -5,6 +5,7 @@ import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.BodyDef.BodyType; import com.badlogic.gdx.physics.box2d.FixtureDef; +import com.badlogic.gdx.physics.box2d.MassData; import org.snoopdesigns.endless.context.Context; public abstract class PhysicalBody { @@ -13,7 +14,9 @@ public abstract class PhysicalBody { public abstract BodyType getBodyType(); public abstract FixtureDef getFixture(); - + public abstract float getMass(); + public abstract float getLinearDamping(); + public abstract float getMaxVelocity(); public Vector2 getInitialPosition() { return new Vector2(0, 0); } @@ -24,6 +27,18 @@ public abstract class PhysicalBody { bodyDef.position.set(getInitialPosition()); body = Context.getInstance().getWorldContext().getWorld().createBody(bodyDef); body.createFixture(getFixture()); + + final MassData massData = new MassData(); + massData.mass = getMass(); + getBody().setMassData(massData); + + getBody().setLinearDamping(getLinearDamping()); + } + + public void limitVelocity() { + if (getBody().getLinearVelocity().len() > getMaxVelocity()) { + getBody().setLinearVelocity(getBody().getLinearVelocity().limit(getMaxVelocity())); + } } public Body getBody() { -- cgit v1.2.3