import { IAssetClass, IAbstractionPool, Matrix3D, Box, Vector3D, Sphere, AbstractionBase, Plane3D, AbstractionSet } from '@awayjs/core';
import { PickGroup } from '../PickGroup';
import { _Pick_PickableBase } from './_Pick_PickableBase';
import { _IPick_PickableClass } from './_IPick_PickableClass';
import { PickingCollision } from '../pick/PickingCollision';
import { IEntityTraverser } from './IEntityTraverser';
import { BoundingVolumeBase } from '../bounds/BoundingVolumeBase';
import { BoundingVolumeType } from '../bounds/BoundingVolumeType';
import { IBoundsPicker } from '../pick/IBoundsPicker';
import { ContainerNode } from '../partition/ContainerNode';
import { INode } from '../partition/INode';
import { IPickable } from './IPickable';
/**
* @class away.pool.PickEntity
*/
export declare class PickEntity extends AbstractionBase implements IAbstractionPool, IEntityTraverser, IBoundsPicker {
private static _store;
static MINIMAL_SCALE: number;
private _boundingVolumePools;
private _pickingCollision;
private _orientedBoxBounds;
private _orientedBoxBoundsDirty;
private _orientedSphereBounds;
private _orientedSphereBoundsDirty;
private static _pickPickableClassPool;
private _activePickables;
readonly abstractions: AbstractionSet;
get pickingCollision(): PickingCollision;
/**
*
*/
get node(): ContainerNode;
/**
*
*/
get pickGroup(): PickGroup;
shapeFlag: boolean;
constructor();
/**
* //TODO
*/
init(node: INode, pickGroup: PickGroup): void;
getBoundingVolume(target?: INode, type?: BoundingVolumeType): BoundingVolumeBase;
/**
* Evaluates the display object to see if it overlaps or intersects with the
* point specified by the x and y parameters. The
* x and y parameters specify a point in the
* coordinate space of the Scene, not the display object container that
* contains the display object(unless that display object container is the
* Scene).
*
* @param x The x coordinate to test against this object.
* @param y The y coordinate to test against this object.
* @param shapeFlag Whether to check against the actual pixels of the object
* (true) or the bounding box
* (false).
* @param maskFlag Whether to check against the object when it is used as
* mask (false).
* @return true if the display object overlaps or intersects
* with the specified point; false otherwise.
*/
hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean;
_hitTestPointInternal(rootEntity: ContainerNode, x: number, y: number, shapeFlag?: boolean, maskFlag?: boolean): boolean;
isInFrustum(planes: Array, numPlanes: number): boolean;
_isInFrustumInternal(rooNode: ContainerNode, planes: Array, numPlanes: number): boolean;
/**
* @inheritDoc
*/
isIntersectingRay(globalRayPosition: Vector3D, globalRayDirection: Vector3D): boolean;
/**
* @inheritDoc
*/
_isIntersectingRayInternal(rootEntity: INode, globalRayPosition: Vector3D, globalRayDirection: Vector3D): boolean;
isIntersectingShape(findClosestCollision: boolean): boolean;
_getBoxBoundsInternal(invTargetMatrix?: Matrix3D, strokeFlag?: boolean, fastFlag?: boolean, cache?: Box, target?: Box): Box;
_getSphereBoundsInternal(center?: Vector3D, matrix3D?: Matrix3D, strokeFlag?: boolean, fastFlag?: boolean, cache?: Sphere, target?: Sphere): Sphere;
applyTraversable(pickable: IPickable): void;
onInvalidate(): void;
onClear(): void;
requestAbstraction(pickable: IPickable): _Pick_PickableBase;
storeAbstraction(abstraction: _Pick_PickableBase, assetType: string): void;
/**
*
* @param imageObjectClass
*/
static registerPickable(pickClass: _IPick_PickableClass, assetClass: IAssetClass): void;
private _update;
private _isIntersectingMasks;
}
//# sourceMappingURL=PickEntity.d.ts.map