import { Layer } from "../layer/Layer"; import { Vector } from "../layer/Vector"; import { Node } from "../quadTree/Node"; import { Planet } from "../scene/Planet"; import { Proj } from "../proj/Proj"; import { LonLat } from "../LonLat"; import { Segment } from "../segment/Segment"; import { Extent } from "../Extent"; import { EntityCollectionsTreeStrategy } from "./EntityCollectionsTreeStrategy"; import { PlanetCamera } from "../camera"; import { EventsHandler } from "../Events"; export type QuadTreeStrategyEventsList = [ "rendercompleted", "terraincompleted" ]; export interface QuadTreeStrategyParams { planet: Planet; name?: string; proj?: Proj; maxEqualZoomAltitude?: number; minEqualZoomAltitude?: number; minEqualZoomCameraSlope?: number; transitionOpacityEnabled?: boolean; } export declare class QuadTreeStrategy { events: EventsHandler; name: string; projection: Proj; readonly planet: Planet; /** * grid tree list. * @protected * @type {Node[]} */ protected _quadTreeList: Node[]; /** * Current visible mercator segments tree nodes array. * @public * @type {Node} */ _visibleNodes: Record; /** * Planet's segments collected for rendering frame. * @public * @type {Node} */ _renderedNodes: Node[]; _renderedNodesInFrustum: Node[][]; _fadingNodes: Map; _fadingNodesInFrustum: Node[][]; _fadingOpaqueSegments: Segment[]; /** * Current visible minimal zoom index planet segment. * @public * @type {number} */ minCurrZoom: number; /** * Current visible maximal zoom index planet segment. * @public * @type {number} */ maxCurrZoom: number; protected _transitionOpacityEnabled: boolean; _viewExtent: Extent; /** * Level of details of visible segments. * @protected * @type {number} */ protected _lodSize: number; protected _curLodSize: number; protected _minLodSize: number; _maxLodSize: number; maxEqualZoomAltitude: number; minEqualZoomAltitude: number; minEqualZoomCameraSlope: number; _renderCompleted: boolean; _renderCompletedActivated: boolean; _terrainCompleted: boolean; _terrainCompletedActivated: boolean; protected _skipPreRender: boolean; constructor(params: QuadTreeStrategyParams); get lodSize(): number; setLodSize(currentLodSize: number, minLodSize?: number, maxLodSize?: number): void; createEntityCollectionsTreeStrategy(layer: Vector, nodeCapacity: number): EntityCollectionsTreeStrategy; destroyBranches(): void; /** * clears layer material from the quad tree list. * @param layer * @param keepRendered if true, keeps materials that are currently rendered. */ clearLayerMaterial(layer: Layer, keepRendered?: boolean): void; get terrainReady(): boolean; protected _checkRendercompleted(): void; protected _initEvents(): void; init(camera: PlanetCamera): void; clearRenderedNodes(): void; protected _clearRenderedNodeList(): void; protected _clearRenderNodesInFrustum(): void; protected _collectRenderedNodesMaxZoom(cam: PlanetCamera): void; set transitionOpacityEnabled(isEnabled: boolean); get transitionOpacityEnabled(): boolean; /** * Collects visible quad nodes. * @protected */ collectRenderNodes(cam: PlanetCamera): void; preRender(): void; preLoad(): void; protected _clearVisibleNodes(): void; protected _collectRenderNodes(camera: PlanetCamera): void; clear(): void; get quadTreeList(): Node[]; getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number]; getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number]; collectVisibleNode(node: Node): void; }