Skip to content

Class: ChainShape ​

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. Connectivity information is used to create smooth collisions.

WARNING: The chain will not collide properly if there are self-intersections.

Extends ​

Constructors ​

Constructor ​

new ChainShape(vertices?, loop?): ChainShape

Parameters ​

vertices? ​

Vec2Value[]

loop? ​

boolean

Returns ​

ChainShape

Overrides ​

Shape.constructor

Properties ​

style ​

style: Style = {}

Styling for dev-tools.

Inherited from ​

Shape.style


TYPE ​

static TYPE: "chain"

Methods ​

computeAABB() ​

computeAABB(aabb, xf, childIndex): void

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

Parameters ​

aabb ​

AABBValue

Returns the axis aligned box.

xf ​

TransformValue

The world transform of the shape.

childIndex ​

number

The child shape

Returns ​

void

Overrides ​

Shape.computeAABB


computeDistanceProxy() ​

computeDistanceProxy(proxy, childIndex): void

Parameters ​

proxy ​

DistanceProxy

childIndex ​

number

Returns ​

void

Overrides ​

Shape.computeDistanceProxy


computeMass() ​

computeMass(massData, density?): void

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

Chains have zero mass.

Parameters ​

massData ​

MassData

Returns the mass data for this shape.

density? ​

number

The density in kilograms per meter squared.

Returns ​

void

Overrides ​

Shape.computeMass


getChildCount() ​

getChildCount(): number

Get the number of child primitives.

Returns ​

number

Overrides ​

Shape.getChildCount


getChildEdge() ​

getChildEdge(edge, childIndex): void

Parameters ​

edge ​

EdgeShape

childIndex ​

number

Returns ​

void


getNextVertex() ​

getNextVertex(): Vec2

Returns ​

Vec2


getPrevVertex() ​

getPrevVertex(): Vec2

Returns ​

Vec2


getRadius() ​

getRadius(): number

Returns ​

number

Overrides ​

Shape.getRadius


getType() ​

getType(): "chain"

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

Returns ​

"chain"

the shape type.

Overrides ​

Shape.getType


getVertex() ​

getVertex(index): Vec2

Parameters ​

index ​

number

Returns ​

Vec2


isLoop() ​

isLoop(): boolean

Returns ​

boolean


rayCast() ​

rayCast(output, input, xf, childIndex): boolean

Cast a ray against a child shape.

Parameters ​

output ​

RayCastOutput

The ray-cast results.

input ​

RayCastInput

The ray-cast input parameters.

xf ​

Transform

The transform to be applied to the shape.

childIndex ​

number

The child shape index

Returns ​

boolean

Overrides ​

Shape.rayCast


setNextVertex() ​

setNextVertex(nextVertex): void

Establish connectivity to a vertex that follows the last vertex. Don't call this for loops.

Parameters ​

nextVertex ​

Vec2

Returns ​

void


setPrevVertex() ​

setPrevVertex(prevVertex): void

Establish connectivity to a vertex that precedes the first vertex. Don't call this for loops.

Parameters ​

prevVertex ​

Vec2

Returns ​

void


testPoint() ​

testPoint(xf, p): false

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

This always return false.

Parameters ​

xf ​

TransformValue

The shape world transform.

p ​

Vec2Value

A point in world coordinates.

Returns ​

false

Overrides ​

Shape.testPoint


isValid() ​

static isValid(obj): boolean

Parameters ​

obj ​

any

Returns ​

boolean

Inherited from ​

Shape.isValid