declare module BABYLON { interface IOctreeContainer { blocks: OctreeBlock[]; } class Octree { public maxDepth: number; public blocks: OctreeBlock[]; public dynamicContent: T[]; private _maxBlockCapacity; private _selectionContent; private _creationFunc; constructor(creationFunc: (entry: T, block: OctreeBlock) => void, maxBlockCapacity?: number, maxDepth?: number); public update(worldMin: Vector3, worldMax: Vector3, entries: T[]): void; public addMesh(entry: T): void; public select(frustumPlanes: Plane[], allowDuplicate?: boolean): SmartArray; public intersects(sphereCenter: Vector3, sphereRadius: number, allowDuplicate?: boolean): SmartArray; public intersectsRay(ray: Ray): SmartArray; static _CreateBlocks(worldMin: Vector3, worldMax: Vector3, entries: T[], maxBlockCapacity: number, currentDepth: number, maxDepth: number, target: IOctreeContainer, creationFunc: (entry: T, block: OctreeBlock) => void): void; static CreationFuncForMeshes: (entry: AbstractMesh, block: OctreeBlock) => void; static CreationFuncForSubMeshes: (entry: SubMesh, block: OctreeBlock) => void; } }