Skip to main content

Class: SkinnedInstancePool<TVariant, TInfo>

Renders every live instance of a SkinnedFamilyConfig: one InstancedMesh per variant (and per baby variant), skinned on the GPU from a flat bone texture, lit per instance, flashed red on a hit, and shadowed.

Instances are addressed by the global slot allocate returns. Per frame: setInstanceMatrix (the root transform), setBoneMatrix / setBoneMatrices (each bone relative to its pivot), and setInstanceLightColor (the voxel light at the instance). Writes that do not change anything upload nothing.

Implements WarmablePool, so an InstancedEntityRoster bakes every variant before play begins.

Type parameters​

NameType
TVariantextends string = string
TInfoextends SkinnedRigInfo = SkinnedRigInfo

Hierarchy​

  • Group

    ↳ SkinnedInstancePool

Constructors​

constructor​

• new SkinnedInstancePool<TVariant, TInfo>(config, maxInstancesPerVariant?): SkinnedInstancePool<TVariant, TInfo>

Type parameters​

NameType
TVariantextends string = string
TInfoextends SkinnedRigInfo = SkinnedRigInfo

Parameters​

NameTypeDefault value
configSkinnedFamilyConfig<TVariant, Texture<unknown>>undefined
maxInstancesPerVariantnumber100

Returns​

SkinnedInstancePool<TVariant, TInfo>

Overrides​

THREE.Group.constructor

Properties​

config​

• Readonly config: SkinnedFamilyConfig<TVariant, Texture<unknown>>

Methods​

allocate​

▸ allocate(variant, isBaby?): number

Parameters​

NameTypeDefault value
variantTVariantundefined
isBabybooleanfalse

Returns​

number


dispose​

▸ dispose(): void

Returns​

void


free​

▸ free(globalSlot): void

Parameters​

NameType
globalSlotnumber

Returns​

void


getActiveCount​

▸ getActiveCount(): number

Returns​

number


getInstanceType​

▸ getInstanceType(globalSlot): string

Parameters​

NameType
globalSlotnumber

Returns​

string


getRigInfo​

▸ getRigInfo(variant, isBaby?): TInfo

Parameters​

NameTypeDefault value
variantTVariantundefined
isBabybooleanfalse

Returns​

TInfo


listVariantMeshes​

▸ listVariantMeshes(): Map<string, InstancedMesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material | Material[], InstancedMeshEventMap>>

Returns​

Map<string, InstancedMesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material | Material[], InstancedMeshEventMap>>


markHit​

▸ markHit(globalSlot): void

Parameters​

NameType
globalSlotnumber

Returns​

void


peekNextVariantKey​

▸ peekNextVariantKey(): string

Returns​

string


setBoneMatrices​

▸ setBoneMatrices(globalSlot, matrices): void

Parameters​

NameType
globalSlotnumber
matricesMatrix4[]

Returns​

void


setBoneMatrix​

▸ setBoneMatrix(globalSlot, boneIndex, matrix): void

Parameters​

NameType
globalSlotnumber
boneIndexnumber
matrixMatrix4

Returns​

void


setEmissive​

▸ setEmissive(globalSlot, value): void

Parameters​

NameType
globalSlotnumber
valuenumber

Returns​

void


setInstanceLightColor​

▸ setInstanceLightColor(globalSlot, r, g, b): void

Parameters​

NameType
globalSlotnumber
rnumber
gnumber
bnumber

Returns​

void


setInstanceMatrix​

▸ setInstanceMatrix(globalSlot, matrix): void

Parameters​

NameType
globalSlotnumber
matrixMatrix4

Returns​

void


update​

▸ update(_deltaTime, renderer): void

Parameters​

NameType
_deltaTimenumber
rendererWebGLRenderer

Returns​

void


updateShadowUniforms​

▸ updateShadowUniforms(lightingUniforms): void

Parameters​

NameType
lightingUniformsShaderLightingUniforms

Returns​

void


warmNextVariant​

▸ warmNextVariant(): boolean

Returns​

boolean


warmableVariantCount​

▸ warmableVariantCount(): number

Returns​

number