summaryrefslogtreecommitdiff
path: root/core/src/org/snoopdesigns/endless/physics
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/org/snoopdesigns/endless/physics')
-rw-r--r--core/src/org/snoopdesigns/endless/physics/PhysicalBody.java17
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() {