import { Mesh } from "../mesh/mesh"; import { Texture } from "../texture"; import { Entity } from "../ECS/entityMgr"; import { Material } from "../material/material"; import { Screen } from "../webgl2/screen"; export declare class AABB { max: Float32Array; min: Float32Array; private _center; get center(): Float32Array; private isDirty; private updateCenter; update(p: Float32Array): void; private _isVisible; root: Entity; agent: Entity; screen: Screen; get visible(): boolean; static mat: Material; set visible(status: boolean); createMesh(): Mesh; } declare class BVHNode { bounds: AABB; right: BVHNode; left: BVHNode; isLeaf: boolean; index: number; mat: number; length: number; get raw(): Float32Array; static hitable(ray: any, bounds: AABB): void; } declare class trianglePrimitive { bounds: AABB; index: number; mat: number; } declare class DataTexture { raw: Float32Array; chunks: Float32Array[]; tex: Texture; constructor(texSize?: number, chunkTexels?: number); } export declare class BVHManager { nodeList: BVHNode[]; primitives: Float32Array; meshes: Mesh[]; root: BVHNode; LBVH: Float32Array; LBVH_nodes: Float32Array[]; trianglesTex: DataTexture; LBVHTexture: DataTexture; matMap: Map; matConfig: any; constructor(texSize?: number); genBounds(triangles: Float32Array[], size: number, materialOffset: any): trianglePrimitive[]; materialsHandler(mats: Map): { params: string; route: string; init: (m: any) => void; }; buildBVH(meshes: Mesh[]): { LBVH: DataTexture; triangleTexture: DataTexture; primitives: trianglePrimitive[]; matHandler: { params: string; route: string; init: (m: any) => void; }; }; private _size; splitBVH(prim: trianglePrimitive[]): BVHNode; static createTree(deep: any): BVHNode; fillLBVH(root: BVHNode, LBVH: DataTexture): DataTexture; static fillLinearNode(root: BVHNode, mem: Float32Array[], index?: number): number; } export {};