Box2D  2.4.0
A 2D physics engine for games
b2Shape Class Referenceabstract

#include <b2_shape.h>

Inheritance diagram for b2Shape:
b2ChainShape b2CircleShape b2EdgeShape b2PolygonShape

Public Types

enum  Type {
  e_circle = 0, e_edge = 1, e_polygon = 2, e_chain = 3,
  e_typeCount = 4
}
 

Public Member Functions

virtual b2ShapeClone (b2BlockAllocator *allocator) const =0
 Clone the concrete shape using the provided allocator.
 
Type GetType () const
 
virtual int32 GetChildCount () const =0
 Get the number of child primitives.
 
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

Type m_type
 
float m_radius
 

Detailed Description

A shape is used for collision detection. You can create a shape however you like. Shapes used for simulation in b2World are created automatically when a b2Fixture is created. Shapes may encapsulate a one or more child shapes.

Member Function Documentation

◆ ComputeAABB()

virtual void b2Shape::ComputeAABB ( b2AABB aabb,
const b2Transform xf,
int32  childIndex 
) const
pure virtual

Given a transform, compute the associated axis aligned bounding box for a child shape.

Parameters
aabbreturns the axis aligned box.
xfthe world transform of the shape.
childIndexthe child shape

Implemented in b2ChainShape, b2PolygonShape, b2EdgeShape, and b2CircleShape.

◆ ComputeMass()

virtual void b2Shape::ComputeMass ( b2MassData massData,
float  density 
) const
pure virtual

Compute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin.

Parameters
massDatareturns the mass data for this shape.
densitythe density in kilograms per meter squared.

Implemented in b2ChainShape, b2PolygonShape, b2EdgeShape, and b2CircleShape.

◆ GetType()

b2Shape::Type b2Shape::GetType ( ) const
inline

Get the type of this shape. You can use this to down cast to the concrete shape.

Returns
the shape type.

◆ RayCast()

virtual bool b2Shape::RayCast ( b2RayCastOutput output,
const b2RayCastInput input,
const b2Transform transform,
int32  childIndex 
) const
pure virtual

Cast a ray against a child shape.

Parameters
outputthe ray-cast results.
inputthe ray-cast input parameters.
transformthe transform to be applied to the shape.
childIndexthe child shape index

Implemented in b2ChainShape, b2PolygonShape, b2EdgeShape, and b2CircleShape.

◆ TestPoint()

virtual bool b2Shape::TestPoint ( const b2Transform xf,
const b2Vec2 p 
) const
pure virtual

Test a point for containment in this shape. This only works for convex shapes.

Parameters
xfthe shape world transform.
pa point in world coordinates.

Implemented in b2ChainShape, b2PolygonShape, b2EdgeShape, and b2CircleShape.

Member Data Documentation

◆ m_radius

float b2Shape::m_radius

Radius of a shape. For polygonal shapes this must be b2_polygonRadius. There is no support for making rounded polygons.


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