Class 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 Detail

      • 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
    • Constructor Detail

      • ChainShape

        public ChainShape()
    • Method Detail

      • 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.
      • 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.
      • 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 -