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