Skip to content

Documentation / scene / Shape

Abstract Class: Shape<T>

Defined in: libs/scene/src/shapes/shape.ts:25

Abstract base class for any kind of shapes

Extends

Extended by

Type Parameters

T

T extends ShapeCreationOptions = ShapeCreationOptions

Implements

  • Clonable<Shape<T>>

Constructors

Constructor

new Shape<T>(options?): Shape<T>

Defined in: libs/scene/src/shapes/shape.ts:40

Creates an instance of shape

Parameters

options?

T

The creation options

Returns

Shape<T>

Overrides

Primitive.constructor

Properties

_defaultOptions

static _defaultOptions: object

Defined in: libs/scene/src/shapes/shape.ts:29

needNormal

needNormal: boolean = true

needTangent

needTangent: boolean = true

needUV

needUV: boolean = true

transform

transform: any = null


_options

protected _options: DeepRequireOptionals<T>

Defined in: libs/scene/src/shapes/shape.ts:35

Accessors

disposed

Get Signature

get disposed(): boolean

Defined in: libs/base/dist/index.d.ts:6065

Returns

boolean

Inherited from

Primitive.disposed


id

Get Signature

get id(): number

Defined in: libs/scene/src/render/primitive.ts:100

Unique runtime identifier of this primitive.

Returns

number

The numeric instance id.

Inherited from

Primitive.id


changeTag

Get Signature

get changeTag(): number

Defined in: libs/scene/src/render/primitive.ts:109

Change tag that increments whenever draw-affecting state changes. Useful for invalidating cached render bundles.

Returns

number

The current change tag value.

Inherited from

Primitive.changeTag


primitiveType

Get Signature

get primitiveType(): PrimitiveType

Defined in: libs/scene/src/render/primitive.ts:146

Primitive topology.

Returns

PrimitiveType

Set Signature

set primitiveType(type): void

Defined in: libs/scene/src/render/primitive.ts:149

Parameters
type

PrimitiveType

Returns

void

Inherited from

Primitive.primitiveType


indexStart

Get Signature

get indexStart(): number

Defined in: libs/scene/src/render/primitive.ts:159

Starting index/vertex for drawing.

Returns

number

Set Signature

set indexStart(val): void

Defined in: libs/scene/src/render/primitive.ts:162

Parameters
val

number

Returns

void

Inherited from

Primitive.indexStart


indexCount

Get Signature

get indexCount(): number

Defined in: libs/scene/src/render/primitive.ts:172

Number of indices/vertices to draw.

Returns

number

Set Signature

set indexCount(val): void

Defined in: libs/scene/src/render/primitive.ts:176

Parameters
val

number

Returns

void

Inherited from

Primitive.indexCount


options

Get Signature

get options(): DeepRequireOptionals<T>

Defined in: libs/scene/src/shapes/shape.ts:102

Get shape creation options

Returns

DeepRequireOptionals<T>

Set Signature

set options(options): void

Defined in: libs/scene/src/shapes/shape.ts:105

Parameters
options

T

Returns

void


type

Get Signature

get abstract type(): string

Defined in: libs/scene/src/shapes/shape.ts:109

Get shape type

Returns

string

Methods

on()

Call Signature

on<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:635

IEventTarget.on

Type Parameters
K

K extends "dispose" | "bv_changed"

Parameters
type

K

listener

EventListener<object & object, K>

context?

unknown

Returns

void

Inherited from

Primitive.on

Call Signature

on<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:594

IEventTarget.on

Type Parameters
K

K extends "dispose"

Parameters
type

K

listener

EventListener<{ dispose: []; }, K>

context?

unknown

Returns

void

Inherited from

Primitive.on


once()

Call Signature

once<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:639

IEventTarget.once

Type Parameters
K

K extends "dispose" | "bv_changed"

Parameters
type

K

listener

EventListener<object & object, K>

context?

unknown

Returns

void

Inherited from

Primitive.once

Call Signature

once<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:598

IEventTarget.once

Type Parameters
K

K extends "dispose"

Parameters
type

K

listener

EventListener<{ dispose: []; }, K>

context?

unknown

Returns

void

Inherited from

Primitive.once


off()

Call Signature

off<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:643

IEventTarget.off

Type Parameters
K

K extends "dispose" | "bv_changed"

Parameters
type

K

listener

EventListener<object & object, K>

context?

unknown

Returns

void

Inherited from

Primitive.off

Call Signature

off<K>(type, listener?, context?): void

Defined in: libs/base/dist/index.d.ts:602

IEventTarget.off

Type Parameters
K

K extends "dispose"

Parameters
type

K

listener?

EventListener<{ dispose: []; }>

context?

unknown

Returns

void

Inherited from

Primitive.off


dispatchEvent()

Call Signature

dispatchEvent<K>(type, ...args): void

Defined in: libs/base/dist/index.d.ts:647

IEventTarget.dispatchEvent

Type Parameters
K

K extends "dispose" | "bv_changed"

Parameters
type

K

args

...object & object[K]

Returns

void

Inherited from

Primitive.dispatchEvent

Call Signature

dispatchEvent<K>(type, ...args): void

Defined in: libs/base/dist/index.d.ts:606

IEventTarget.dispatchEvent

Type Parameters
K

K extends "dispose"

Parameters
type

K

args

...object[K]

Returns

void

Inherited from

Primitive.dispatchEvent


dispose()

dispose(): void

Defined in: libs/base/dist/index.d.ts:6066

Returns

void

Inherited from

Primitive.dispose


copyFrom()

copyFrom(other): void

Defined in: libs/scene/src/render/primitive.ts:134

Copy from another primitive.

Copies:

  • All vertex buffers and the index buffer
  • Primitive type, index start, index count

Parameters

other

this

The source primitive to copy from.

Returns

void

void

Inherited from

Primitive.copyFrom


getNumVertices()

getNumVertices(): number

Defined in: libs/scene/src/render/primitive.ts:188

Query total vertex count from the position buffer, if present.

Returns

number

Total vertex count; 0 if no position buffer is set.

Inherited from

Primitive.getNumVertices


getNumFaces()

getNumFaces(): number

Defined in: libs/scene/src/render/primitive.ts:200

Query total face/segment count based on topology and buffer size.

  • For indexed geometry: derived from index buffer.
  • For non-indexed: derived from position vertex count.

Returns

number

Total primitive count for the current topology.

Inherited from

Primitive.getNumFaces


removeVertexBuffer()

removeVertexBuffer(semantic): void

Defined in: libs/scene/src/render/primitive.ts:230

Remove all vertex buffers that match a given semantic.

This releases retained buffers, marks the layout dirty, and invalidates bundles.

Parameters

semantic

VertexSemantic

The vertex semantic to remove (e.g., 'position', 'normal').

Returns

void

void

Inherited from

Primitive.removeVertexBuffer


getVertexBuffer()

getVertexBuffer(semantic): StructuredBuffer<unknown>

Defined in: libs/scene/src/render/primitive.ts:250

Get the vertex buffer that matches a given semantic.

Parameters

semantic

VertexSemantic

The vertex semantic to look up.

Returns

StructuredBuffer<unknown>

The matching vertex buffer, or null if not found.

Inherited from

Primitive.getVertexBuffer


getVertexBufferInfo()

getVertexBufferInfo(semantic): VertexBufferInfo

Defined in: libs/scene/src/render/primitive.ts:264

Get vertex buffer information for a given semantic.

Parameters

semantic

VertexSemantic

The vertex semantic to look up.

Returns

VertexBufferInfo

The VertexBufferInfo, or null if not found.

Inherited from

Primitive.getVertexBufferInfo


createAndSetVertexBuffer()

createAndSetVertexBuffer(format, data, stepMode?): StructuredBuffer<unknown>

Defined in: libs/scene/src/render/primitive.ts:279

Create a vertex buffer from data and add it to the primitive.

  • For interleaved layouts, pass an array of VertexAttribFormat.
  • For a single attribute, pass a single VertexAttribFormat.

Parameters

format

VertexAttribFormat | VertexAttribFormat[]

Vertex attribute format(s).

data

TypedArray

Typed array with vertex data.

stepMode?

VertexStepMode

Optional step mode (e.g., 'vertex', 'instance').

Returns

StructuredBuffer<unknown>

The created StructuredBuffer.

Inherited from

Primitive.createAndSetVertexBuffer


setVertexBuffer()

setVertexBuffer(buffer, stepMode?): StructuredBuffer<unknown>

Defined in: libs/scene/src/render/primitive.ts:299

Add an existing vertex buffer to the primitive.

Ownership note: The primitive retains the buffer; it will be released or disposed when replaced or on dispose.

Parameters

buffer

StructuredBuffer

The vertex buffer to add.

stepMode?

VertexStepMode

Optional step mode for the buffer.

Returns

StructuredBuffer<unknown>

The same buffer.

Inherited from

Primitive.setVertexBuffer


createAndSetIndexBuffer()

createAndSetIndexBuffer(data, dynamic?): IndexBuffer<unknown>

Defined in: libs/scene/src/render/primitive.ts:317

Create an index buffer from data and set it on the primitive.

Parameters

data

Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>

Index data as Uint16Array or Uint32Array.

dynamic?

boolean

Whether the index buffer is dynamic (unmanaged).

Returns

IndexBuffer<unknown>

The created IndexBuffer.

Inherited from

Primitive.createAndSetIndexBuffer


setIndexBuffer()

setIndexBuffer(buffer): void

Defined in: libs/scene/src/render/primitive.ts:335

Set or replace the index buffer.

Ownership note: The primitive retains the buffer; previous buffer is released. Marks the vertex layout dirty and invalidates bundles.

Parameters

buffer

IndexBuffer<unknown>

The index buffer to set (non-null).

Returns

void

void

Inherited from

Primitive.setIndexBuffer


getIndexBuffer()

getIndexBuffer(): IndexBuffer<unknown>

Defined in: libs/scene/src/render/primitive.ts:350

Get the current index buffer.

Returns

IndexBuffer<unknown>

The index buffer, or undefined/null if none set.

Inherited from

Primitive.getIndexBuffer


draw()

draw(): void

Defined in: libs/scene/src/render/primitive.ts:358

Issue a non-instanced draw for the current topology and range.

Preconditions: A valid vertex layout and indexCount > 0.

Returns

void

Inherited from

Primitive.draw


drawInstanced()

drawInstanced(numInstances): void

Defined in: libs/scene/src/render/primitive.ts:371

Issue an instanced draw for the current topology and range.

Preconditions: A valid vertex layout and indexCount > 0.

Parameters

numInstances

number

Number of instances to draw.

Returns

void

Inherited from

Primitive.drawInstanced


onDispose()

protected onDispose(): void

Defined in: libs/scene/src/render/primitive.ts:380

Dispose this primitive and release associated GPU resources.

Returns

void

Inherited from

Primitive.onDispose


getBoundingVolume()

getBoundingVolume(): BoundingVolume

Defined in: libs/scene/src/render/primitive.ts:405

Get the bounding volume associated with this primitive.

Returns

BoundingVolume

The current bounding volume, or null if not set.

Inherited from

Primitive.getBoundingVolume


setBoundingVolume()

setBoundingVolume(bv): void

Defined in: libs/scene/src/render/primitive.ts:416

Set or replace the bounding volume of this primitive.

Triggers registered bounding-volume change callbacks.

Parameters

bv

BoundingVolume

The bounding volume to set.

Returns

void

void

Inherited from

Primitive.setBoundingVolume


raycast()

raycast(ray): number

Defined in: libs/scene/src/render/primitive.ts:428

Test intersection against the current axis-aligned bounding box (AABB).

Parameters

ray

Ray

Ray to test against the primitive's AABB (derived from its bounding volume).

Returns

number

The distance from ray origin to the intersection, or null if no hit or no AABB.

Inherited from

Primitive.raycast


computeTangent()

protected static computeTangent(v0, v1, v2, uv0, uv1, uv2, normal): number[]

Defined in: libs/scene/src/shapes/shape.ts:44

Parameters

v0

number[]

v1

number[]

v2

number[]

uv0

number[]

uv1

number[]

uv2

number[]

normal

number[]

Returns

number[]


clone()

abstract clone(): this

Defined in: libs/scene/src/shapes/shape.ts:100

Create a shallow clone: copies topology, draw range, and buffers.

Note: Buffers are re-retained on the new primitive.

Returns

this

A cloned Primitive instance.

Implementation of

Clonable.clone

Overrides

Primitive.clone


normalizeOptions()

normalizeOptions(options?): DeepRequireOptionals<T>

Defined in: libs/scene/src/shapes/shape.ts:115

Normalize options

Parameters

options?

T

creation options

Returns

DeepRequireOptionals<T>

Normalized creation options

Released under the MIT License.