UNPKG

@awayjs/view

Version:
72 lines (71 loc) 3.65 kB
var _a, _b, _c, _d; import { UUID } from '@awayjs/core'; import { BoundingVolumeType } from './BoundingVolumeType'; import { BoundingBox } from './BoundingBox'; import { BoundingSphere } from './BoundingSphere'; import { NullBounds } from './NullBounds'; var BoundingVolumePool = /** @class */ (function () { function BoundingVolumePool(picker, boundingVolumeType) { this.id = UUID.Next(); this.picker = picker; this.strokeFlag = BoundingVolumePool._strokeDict[boundingVolumeType]; this.fastFlag = BoundingVolumePool._fastDict[boundingVolumeType]; this._boundingVolumeClass = BoundingVolumePool._boundsDict[boundingVolumeType]; this._store = BoundingVolumePool._storeDict[boundingVolumeType]; } BoundingVolumePool.prototype.requestAbstraction = function (asset) { return this._store.length ? this._store.pop() : new this._boundingVolumeClass(); }; BoundingVolumePool.prototype.storeAbstraction = function (abstraction) { this._store.push(abstraction); }; BoundingVolumePool._boundingBoxStore = []; BoundingVolumePool._boundingSphereStore = []; BoundingVolumePool._nullStore = []; BoundingVolumePool._storeDict = (_a = {}, _a[BoundingVolumeType.BOX] = BoundingVolumePool._boundingBoxStore, _a[BoundingVolumeType.BOX_FAST] = BoundingVolumePool._boundingBoxStore, _a[BoundingVolumeType.BOX_BOUNDS] = BoundingVolumePool._boundingBoxStore, _a[BoundingVolumeType.BOX_BOUNDS_FAST] = BoundingVolumePool._boundingBoxStore, _a[BoundingVolumeType.SPHERE] = BoundingVolumePool._boundingSphereStore, _a[BoundingVolumeType.SPHERE_FAST] = BoundingVolumePool._boundingSphereStore, _a[BoundingVolumeType.SPHERE_BOUNDS] = BoundingVolumePool._boundingSphereStore, _a[BoundingVolumeType.SPHERE_BOUNDS_FAST] = BoundingVolumePool._boundingSphereStore, _a[BoundingVolumeType.NULL] = BoundingVolumePool._nullStore, _a); BoundingVolumePool._strokeDict = (_b = {}, _b[BoundingVolumeType.BOX] = false, _b[BoundingVolumeType.BOX_FAST] = false, _b[BoundingVolumeType.BOX_BOUNDS] = true, _b[BoundingVolumeType.BOX_BOUNDS_FAST] = true, _b[BoundingVolumeType.SPHERE] = false, _b[BoundingVolumeType.SPHERE_FAST] = false, _b[BoundingVolumeType.SPHERE_BOUNDS] = true, _b[BoundingVolumeType.SPHERE_BOUNDS_FAST] = true, _b[BoundingVolumeType.NULL] = false, _b); BoundingVolumePool._fastDict = (_c = {}, _c[BoundingVolumeType.BOX] = false, _c[BoundingVolumeType.BOX_FAST] = true, _c[BoundingVolumeType.BOX_BOUNDS] = false, _c[BoundingVolumeType.BOX_BOUNDS_FAST] = true, _c[BoundingVolumeType.SPHERE] = false, _c[BoundingVolumeType.SPHERE_FAST] = true, _c[BoundingVolumeType.SPHERE_BOUNDS] = false, _c[BoundingVolumeType.SPHERE_BOUNDS_FAST] = true, _c[BoundingVolumeType.NULL] = false, _c); BoundingVolumePool._boundsDict = (_d = {}, _d[BoundingVolumeType.BOX] = BoundingBox, _d[BoundingVolumeType.BOX_FAST] = BoundingBox, _d[BoundingVolumeType.BOX_BOUNDS] = BoundingBox, _d[BoundingVolumeType.BOX_BOUNDS_FAST] = BoundingBox, _d[BoundingVolumeType.SPHERE] = BoundingSphere, _d[BoundingVolumeType.SPHERE_FAST] = BoundingSphere, _d[BoundingVolumeType.SPHERE_BOUNDS] = BoundingSphere, _d[BoundingVolumeType.SPHERE_BOUNDS_FAST] = BoundingSphere, _d[BoundingVolumeType.NULL] = NullBounds, _d); return BoundingVolumePool; }()); export { BoundingVolumePool };