Package org.jbox2d.collision.shapes
Class ChainShape
- java.lang.Object
-
- org.jbox2d.collision.shapes.Shape
-
- org.jbox2d.collision.shapes.ChainShape
-
public class ChainShape extends Shape
A chain shape is a free form sequence of line segments. The chain has two-sided collision, so you can use inside and outside collision. Therefore, you may use any winding order. Since there may be many vertices, they are allocated using Alloc. Connectivity information is used to create smooth collisions. WARNING The chain will not collide properly if there are self-intersections.
-
-
Field Summary
Fields Modifier and Type Field Description intm_countbooleanm_hasNextVertexbooleanm_hasPrevVertexVec2m_nextVertexVec2m_prevVertexVec2[]m_verticesprivate EdgeShapepool0
-
Constructor Summary
Constructors Constructor Description ChainShape()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Shapeclone()voidcomputeAABB(AABB aabb, Transform xf, int childIndex)Given a transform, compute the associated axis aligned bounding box for a child shape.voidcomputeMass(MassData massData, float density)Compute the mass properties of this shape using its dimensions and density.voidcreateChain(Vec2[] vertices, int count)Create a chain with isolated end vertices.voidcreateLoop(Vec2[] vertices, int count)Create a loop.intgetChildCount()Get the number of child primitivesvoidgetChildEdge(EdgeShape edge, int index)Get a child edge.booleanraycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)Cast a ray against a child shape.voidsetNextVertex(Vec2 nextVertex)Establish connectivity to a vertex that follows the last vertex.voidsetPrevVertex(Vec2 prevVertex)Establish connectivity to a vertex that precedes the first vertex.booleantestPoint(Transform xf, Vec2 p)Test a point for containment in this shape.
-
-
-
Method Detail
-
getChildCount
public int getChildCount()
Description copied from class:ShapeGet the number of child primitives- Specified by:
getChildCountin classShape- Returns:
-
getChildEdge
public void getChildEdge(EdgeShape edge, int index)
Get a child edge.
-
testPoint
public boolean testPoint(Transform xf, Vec2 p)
Description copied from class:ShapeTest a point for containment in this shape. This only works for convex shapes.
-
raycast
public boolean raycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)
Description copied from class:ShapeCast a ray against a child shape.
-
computeAABB
public void computeAABB(AABB aabb, Transform xf, int childIndex)
Description copied from class:ShapeGiven a transform, compute the associated axis aligned bounding box for a child shape.- Specified by:
computeAABBin classShape
-
computeMass
public void computeMass(MassData massData, float density)
Description copied from class:ShapeCompute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin.- Specified by:
computeMassin classShape- Parameters:
massData- returns the mass data for this shape.density- the density in kilograms per meter squared.
-
createLoop
public void createLoop(Vec2[] vertices, int count)
Create a loop. This automatically adjusts connectivity.- Parameters:
vertices- an array of vertices, these are copiedcount- the vertex count
-
createChain
public void createChain(Vec2[] vertices, int count)
Create a chain with isolated end vertices.- Parameters:
vertices- an array of vertices, these are copiedcount- the vertex count
-
setPrevVertex
public void setPrevVertex(Vec2 prevVertex)
Establish connectivity to a vertex that precedes the first vertex. Don't call this for loops.- Parameters:
prevVertex-
-
setNextVertex
public void setNextVertex(Vec2 nextVertex)
Establish connectivity to a vertex that follows the last vertex. Don't call this for loops.- Parameters:
nextVertex-
-
-