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:6107

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:671

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:630

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:675

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:634

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:679

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:638

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:683

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:642

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:6108

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.