diff options
author | Dmitri Morozov <snoopdesigns@gmail.com> | 2024-02-05 19:12:40 +0100 |
---|---|---|
committer | ue86388 <dmitrii.morozov@sbb.ch> | 2024-02-05 19:12:40 +0100 |
commit | 0823e1b0924382410665552e6381806bd9835ce2 (patch) | |
tree | d2ae6e4e85f801ccdf9bc290f3449e2a6199d60a /core/src/org/snoopdesigns/endless/physics | |
parent | 684552e8cebfa0d80b9ceb014d6094327c6ad0a6 (diff) |
Add mass, damping and max velocity attributes to a body
Diffstat (limited to 'core/src/org/snoopdesigns/endless/physics')
-rw-r--r-- | core/src/org/snoopdesigns/endless/physics/PhysicalBody.java | 17 |
1 files changed, 16 insertions, 1 deletions
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() { |