package physics.shapes; import org.jbox2d.collision.AABB; import org.jbox2d.collision.RayCastInput; import org.jbox2d.collision.RayCastOutput; import org.jbox2d.collision.shapes.MassData; import org.jbox2d.collision.shapes.Shape; import org.jbox2d.collision.shapes.ShapeType; import org.jbox2d.common.Transform; import org.jbox2d.common.Vec2; /** * Provides a zero-dimensional shape that tries to behave like a point mass. * * @author Christoph Burschka <christoph@burschka.de> */ public class ShapelessShape extends Shape { private final double mass; public ShapelessShape(double mass) { super(ShapeType.CIRCLE); this.mass = mass; } @Override public int getChildCount() { return 0; } @Override public boolean testPoint(Transform xf, Vec2 p) { return false; } @Override public boolean raycast(RayCastOutput output, RayCastInput input, Transform transform, int childIndex) { return false; } @Override public void computeAABB(AABB aabb, Transform xf, int childIndex) { aabb.lowerBound.setZero(); aabb.upperBound.setZero(); } @Override public void computeMass(MassData massData, float density) { massData.I = 0f; massData.center.setZero(); massData.mass = (float) mass; } @Override public Shape clone() { return new ShapelessShape((mass)); } }