@awayjs/view
Version:
View for AwayJS
72 lines (71 loc) • 3.65 kB
JavaScript
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 };