import { GlobeSurfaceTileProvider } from "./GlobeSurfaceTileProvider"; import { QuadtreeTile } from "./QuadtreeTile"; export interface IQuadtreePrimitiveOption { tileProvider: GlobeSurfaceTileProvider; } var rootTraversalDetails = []; export class QuadtreePrimitive { private _tilesToRender = []; private _levelZeroTiles: QuadtreeTile[] = [] tileCacheSize: number = 100;//地形块的缓冲区 private _tileProvider: any; constructor(options: IQuadtreePrimitiveOption) { if (!options.tileProvider) { throw ("options.tileProvider 参数是必须的"); } // if (options.tileProvider.quadtree) { // throw ("A QuadtreeTileProvider can only be used with a single QuadtreePrimitive"); // } this._tileProvider = options.tileProvider; this._tileProvider.quadtree = this; } get tileProvider() { return this._tileProvider; } selectTilesForRendering(frameState: any) { var i; if (!this._levelZeroTiles) { var tilingScheme = this._tileProvider.tilingScheme; this._levelZeroTiles = QuadtreeTile.createLevelZeroTiles(tilingScheme); var numberOfRootTiles = this._levelZeroTiles.length; if (rootTraversalDetails.length < numberOfRootTiles) { rootTraversalDetails = new Array(numberOfRootTiles); for (i = 0; i < numberOfRootTiles; ++i) { if (rootTraversalDetails[i] === undefined) { // rootTraversalDetails[i] = new TraversalDetails(); } } } } else { } } update() { this.selectTilesForRendering({}); } }