awayjs-display
Version:
AwayJS displaylist classes
82 lines (65 loc) • 1.6 kB
text/typescript
import Box from "awayjs-core/lib/geom/Box";
import Matrix3D from "awayjs-core/lib/geom/Matrix3D";
import Plane3D from "awayjs-core/lib/geom/Plane3D";
import Vector3D from "awayjs-core/lib/geom/Vector3D";
import AbstractMethodError from "awayjs-core/lib/errors/AbstractMethodError";
import IEntity from "../display/IEntity";
import Sprite from "../display/Sprite";
class BoundingVolumeBase
{
public _pEntity:IEntity;
public _pBoundsPrimitive:Sprite;
public _pInvalidated:boolean = true;
constructor(entity)
{
this._pEntity = entity;
}
public dispose()
{
this._pEntity = null;
this._pBoundsPrimitive = null;
}
public get boundsPrimitive():IEntity
{
if (this._pBoundsPrimitive == null) {
this._pBoundsPrimitive = this._pCreateBoundsPrimitive();
this._pInvalidated = true;
}
if(this._pInvalidated)
this._pUpdate();
return this._pBoundsPrimitive;
}
public nullify()
{
throw new AbstractMethodError();
}
public isInFrustum(planes:Array<Plane3D>, numPlanes:number):boolean
{
throw new AbstractMethodError();
}
public clone():BoundingVolumeBase
{
throw new AbstractMethodError();
}
public rayIntersection(position:Vector3D, direction:Vector3D, targetNormal:Vector3D):number
{
return -1;
}
public classifyToPlane(plane:Plane3D):number
{
throw new AbstractMethodError();
}
public _pUpdate()
{
this._pInvalidated = false;
}
public invalidate()
{
this._pInvalidated = true;
}
public _pCreateBoundsPrimitive():Sprite
{
throw new AbstractMethodError();
}
}
export default BoundingVolumeBase;