Box2D 2.4.1
A 2D physics engine for games
b2ChainShape Class Reference

#include <b2_chain_shape.h>

Inheritance diagram for b2ChainShape:
b2Shape

Public Member Functions

 ~b2ChainShape ()
 The destructor frees the vertices using b2Free.
 
void Clear ()
 Clear all data.
 
void CreateLoop (const b2Vec2 *vertices, int32 count)
 
void CreateChain (const b2Vec2 *vertices, int32 count, const b2Vec2 &prevVertex, const b2Vec2 &nextVertex)
 
b2ShapeClone (b2BlockAllocator *allocator) const override
 Implement b2Shape. Vertices are cloned using b2Alloc. More...
 
int32 GetChildCount () const override
 
void GetChildEdge (b2EdgeShape *edge, int32 index) const
 Get a child edge.
 
bool TestPoint (const b2Transform &transform, const b2Vec2 &p) const override
 
bool RayCast (b2RayCastOutput *output, const b2RayCastInput &input, const b2Transform &transform, int32 childIndex) const override
 Implement b2Shape. More...
 
void ComputeAABB (b2AABB *aabb, const b2Transform &transform, int32 childIndex) const override
 
void ComputeMass (b2MassData *massData, float density) const override
 
- Public Member Functions inherited from b2Shape
virtual b2ShapeClone (b2BlockAllocator *allocator) const =0
 Clone the concrete shape using the provided allocator. More...
 
Type GetType () const
 
virtual int32 GetChildCount () const =0
 Get the number of child primitives. More...
 
virtual bool TestPoint (const b2Transform &xf, const b2Vec2 &p) const =0
 
virtual bool RayCast (b2RayCastOutput *output, const b2RayCastInput &input, const b2Transform &transform, int32 childIndex) const =0
 
virtual void ComputeAABB (b2AABB *aabb, const b2Transform &xf, int32 childIndex) const =0
 
virtual void ComputeMass (b2MassData *massData, float density) const =0
 

Public Attributes

b2Vec2m_vertices
 The vertices. Owned by this class.
 
int32 m_count
 The vertex count.
 
b2Vec2 m_prevVertex
 
b2Vec2 m_nextVertex
 
- Public Attributes inherited from b2Shape
Type m_type
 
float m_radius
 

Additional Inherited Members

- Public Types inherited from b2Shape
enum  Type {
  e_circle = 0 , e_edge = 1 , e_polygon = 2 , e_chain = 3 ,
  e_typeCount = 4
}
 

Detailed Description

A chain shape is a free form sequence of line segments. The chain has one-sided collision, with the surface normal pointing to the right of the edge. This provides a counter-clockwise winding like the polygon shape. Connectivity information is used to create smooth collisions.

Warning
the chain will not collide properly if there are self-intersections.

Member Function Documentation

◆ Clone()

b2Shape * b2ChainShape::Clone ( b2BlockAllocator allocator) const
overridevirtual

Implement b2Shape. Vertices are cloned using b2Alloc.

Implements b2Shape.

◆ ComputeAABB()

void b2ChainShape::ComputeAABB ( b2AABB aabb,
const b2Transform transform,
int32  childIndex 
) const
overridevirtual
See also
b2Shape::ComputeAABB

Implements b2Shape.

◆ ComputeMass()

void b2ChainShape::ComputeMass ( b2MassData massData,
float  density 
) const
overridevirtual

Chains have zero mass.

See also
b2Shape::ComputeMass

Implements b2Shape.

◆ CreateChain()

void b2ChainShape::CreateChain ( const b2Vec2 vertices,
int32  count,
const b2Vec2 prevVertex,
const b2Vec2 nextVertex 
)

Create a chain with ghost vertices to connect multiple chains together.

Parameters
verticesan array of vertices, these are copied
countthe vertex count
prevVertexprevious vertex from chain that connects to the start
nextVertexnext vertex from chain that connects to the end

◆ CreateLoop()

void b2ChainShape::CreateLoop ( const b2Vec2 vertices,
int32  count 
)

Create a loop. This automatically adjusts connectivity.

Parameters
verticesan array of vertices, these are copied
countthe vertex count

◆ GetChildCount()

int32 b2ChainShape::GetChildCount ( ) const
overridevirtual
See also
b2Shape::GetChildCount

Implements b2Shape.

◆ RayCast()

bool b2ChainShape::RayCast ( b2RayCastOutput output,
const b2RayCastInput input,
const b2Transform transform,
int32  childIndex 
) const
overridevirtual

Implement b2Shape.

Implements b2Shape.

◆ TestPoint()

bool b2ChainShape::TestPoint ( const b2Transform transform,
const b2Vec2 p 
) const
overridevirtual

This always return false.

See also
b2Shape::TestPoint

Implements b2Shape.


The documentation for this class was generated from the following file: