@woosh/meep-engine
Version:
Pure JavaScript game engine. Fully featured and production ready.
200 lines • 4.5 kB
TypeScript
export class InstancedMeshGroup {
/**
*
* @param {THREE.BufferGeometry} geometry
* @param {Material} material
* @returns {InstancedMeshGroup}
*/
static from(geometry: THREE.BufferGeometry, material: Material): InstancedMeshGroup;
/**
* Instanced geometry
* @type {InstancedBufferGeometry|null}
* @private
*/
private __threeGeometry;
/**
* Geometry of a single instance
* @type {BufferGeometry|null}
* @private
*/
private __threeInstanceGeometry;
/**
* @private
* @type {number}
*/
private count;
/**
*
* @type {number}
*/
capacity: number;
/**
*
* @type {number}
*/
growFactor: number;
/**
* Minimum spare capacity increase during growing
* @type {number}
*/
growConstant: number;
/**
*
* @type {number}
*/
shrinkFactor: number;
/**
* Minimum capacity reduction for shrinkage to occur
* @type {number}
*/
shrinkConstant: number;
/**
*
* @type {InstancedBufferAttribute}
* @private
*/
private __attributeTransform;
/**
* Shortcut to buffer attribute data
* @type {Float32Array}
* @private
*/
private __attributeTransformArray;
/**
*
* TODO implement usage
* @type {InstancedBufferAttribute}
* @private
*/
private __attributeColor;
/**
* TODO implement usage
* @type {Uint8Array}
* @private
*/
private __attributeColorArray;
/**
*
* @type {Usage}
* @private
*/
private __instanceUsage;
/**
*
* @type {Material}
* @private
*/
private __material;
indices: any[];
references: any[];
/**
*
* @type {DrawMode}
* @private
*/
private __draw_mode;
mesh: Mesh<BufferGeometry, import("three").Material | import("three").Material[]>;
use_color: boolean;
__build_mesh(): void;
/**
*
* @param {DrawMode} v
*/
set draw_mode(arg: DrawMode);
/**
*
* @param {Usage} v
*/
set instance_usage(arg: Usage);
/**
*
* @return {Usage}
*/
get instance_usage(): Usage;
dispose(): void;
/**
*
* @param {THREE.BufferGeometry} geometry
*/
setGeometry(geometry: THREE.BufferGeometry): void;
/**
*
* @param {THREE.Material|THREE.ShaderMaterial} sourceMaterial
*/
setMaterial(sourceMaterial: THREE.Material | THREE.ShaderMaterial): void;
/**
*
* @param {number} size
*/
setCapacity(size: number): void;
/**
*
* @param {number} size
*/
ensureCapacity(size: number): void;
/**
*
* @param {number} index
* @param {number[]|ArrayLike<number>|Float32Array} transform 4x4 transform matrix of the instance
*/
setTransformAt(index: number, transform: number[] | ArrayLike<number> | Float32Array): void;
/**
*
* @param {number} index
* @param {number[]|ArrayLike<number>|Float32Array} color RGBA color in uint8 format (0...255), LDR
*/
setColorAt(index: number, color: number[] | ArrayLike<number> | Float32Array): void;
/**
*
* @param {number} index
* @param {number} r
* @param {number} g
* @param {number} b
* @param {number} a
*/
setColorByComponentAt(index: number, r: number, g: number, b: number, a: number): void;
requestAttributeUpdate(): void;
/**
* Swap position in attribute arrays of two elements
* @param {int} indexA
* @param {int} indexB
*/
swap(indexA: int, indexB: int): void;
/**
*
* @param {int} size
*/
setCount(size: int): void;
/**
*
* @return {number|int}
*/
getCount(): number | int;
/**
*
* @param {int} reference
* @returns {int}
*/
add(reference: int): int;
/**
*
* @param {function(index:int,reference:int)} visitor
* @param {*} [thisArg]
*/
traverseReferences(visitor: any, thisArg?: any): void;
/**
*
* @param {int} reference
*/
remove(reference: int): void;
build(): void;
#private;
}
export type CacheKey = {
color: Material;
depth: Material;
};
import { BufferGeometry } from 'three';
import { Mesh } from 'three';
import { DrawMode } from "../../ecs/mesh-v2/DrawMode.js";
//# sourceMappingURL=InstancedMeshGroup.d.ts.map