xtorcga
Version:
Xtor Compute Geometry Algorithm Libary 计算几何算法库
59 lines (45 loc) • 1.8 kB
text/typescript
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({});
}
}