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 Details

    • m_vertices

      public Vec2[] m_vertices
    • m_count

      public int m_count
    • m_prevVertex

      public final Vec2 m_prevVertex
    • m_nextVertex

      public final Vec2 m_nextVertex
    • m_hasPrevVertex

      public boolean m_hasPrevVertex
    • m_hasNextVertex

      public boolean m_hasNextVertex
    • pool0

      private final EdgeShape pool0
  • Constructor Details

    • ChainShape

      public ChainShape()
  • Method Details

    • getChildCount

      public int getChildCount()
      Description copied from class: Shape
      Get the number of child primitives
      Specified by:
      getChildCount in class Shape
      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: Shape
      Test a point for containment in this shape. This only works for convex shapes.
      Specified by:
      testPoint in class Shape
      Parameters:
      xf - the shape world transform.
      p - a point in world coordinates.
    • raycast

      public boolean raycast(RayCastOutput output, RayCastInput input, Transform xf, int childIndex)
      Description copied from class: Shape
      Cast a ray against a child shape.
      Specified by:
      raycast in class Shape
      Returns:
      if hit
    • computeAABB

      public void computeAABB(AABB aabb, Transform xf, int childIndex)
      Description copied from class: Shape
      Given a transform, compute the associated axis aligned bounding box for a child shape.
      Specified by:
      computeAABB in class Shape
    • computeMass

      public void computeMass(MassData massData, float density)
      Description copied from class: Shape
      Compute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin.
      Specified by:
      computeMass in class Shape
      Parameters:
      massData - returns the mass data for this shape.
      density - the density in kilograms per meter squared.
    • clone

      public Shape clone()
      Specified by:
      clone in class Shape
    • createLoop

      public void createLoop(Vec2[] vertices, int count)
      Create a loop. This automatically adjusts connectivity.
      Parameters:
      vertices - an array of vertices, these are copied
      count - 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 copied
      count - 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 -