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
| Name | Type |
|---|---|
TVariant | extends string = string |
TInfo | extends SkinnedRigInfo = SkinnedRigInfo |
Hierarchy
-
Group↳
SkinnedInstancePool
Constructors
constructor
• new SkinnedInstancePool<TVariant, TInfo>(config, maxInstancesPerVariant?): SkinnedInstancePool<TVariant, TInfo>
Type parameters
| Name | Type |
|---|---|
TVariant | extends string = string |
TInfo | extends SkinnedRigInfo = SkinnedRigInfo |
Parameters
| Name | Type | Default value |
|---|---|---|
config | SkinnedFamilyConfig<TVariant, Texture<unknown>> | undefined |
maxInstancesPerVariant | number | 100 |
Returns
SkinnedInstancePool<TVariant, TInfo>
Overrides
THREE.Group.constructor
Properties
config
• Readonly config: SkinnedFamilyConfig<TVariant, Texture<unknown>>
Methods
allocate
▸ allocate(variant, isBaby?): number
Parameters
| Name | Type | Default value |
|---|---|---|
variant | TVariant | undefined |
isBaby | boolean | false |
Returns
number
dispose
▸ dispose(): void
Returns
void
free
▸ free(globalSlot): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
Returns
void
getActiveCount
▸ getActiveCount(): number
Returns
number
getInstanceType
▸ getInstanceType(globalSlot): string
Parameters
| Name | Type |
|---|---|
globalSlot | number |
Returns
string
getRigInfo
▸ getRigInfo(variant, isBaby?): TInfo
Parameters
| Name | Type | Default value |
|---|---|---|
variant | TVariant | undefined |
isBaby | boolean | false |
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
| Name | Type |
|---|---|
globalSlot | number |
Returns
void
peekNextVariantKey
▸ peekNextVariantKey(): string
Returns
string
setBoneMatrices
▸ setBoneMatrices(globalSlot, matrices): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
matrices | Matrix4[] |
Returns
void
setBoneMatrix
▸ setBoneMatrix(globalSlot, boneIndex, matrix): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
boneIndex | number |
matrix | Matrix4 |
Returns
void
setEmissive
▸ setEmissive(globalSlot, value): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
value | number |
Returns
void
setInstanceLightColor
▸ setInstanceLightColor(globalSlot, r, g, b): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
r | number |
g | number |
b | number |
Returns
void
setInstanceMatrix
▸ setInstanceMatrix(globalSlot, matrix): void
Parameters
| Name | Type |
|---|---|
globalSlot | number |
matrix | Matrix4 |
Returns
void
update
▸ update(_deltaTime, renderer): void
Parameters
| Name | Type |
|---|---|
_deltaTime | number |
renderer | WebGLRenderer |
Returns
void
updateShadowUniforms
▸ updateShadowUniforms(lightingUniforms): void
Parameters
| Name | Type |
|---|---|
lightingUniforms | ShaderLightingUniforms |
Returns
void
warmNextVariant
▸ warmNextVariant(): boolean
Returns
boolean
warmableVariantCount
▸ warmableVariantCount(): number
Returns
number