import { Vector3D, Matrix3D, Box, Sphere, AbstractionBase, Plane3D } from '@awayjs/core'; import { IPartitionTraverser } from '../partition/IPartitionTraverser'; import { BoundsPickerPool } from '../PickGroup'; import { BoundingVolumeType } from '../bounds/BoundingVolumeType'; import { BoundingVolumeBase } from '../bounds/BoundingVolumeBase'; import { IBoundsPicker } from './IBoundsPicker'; import { ContainerNode } from '../partition/ContainerNode'; import { INode } from '../partition/INode'; /** * Picks a 3d object from a view or scene by 3D raycast calculations. * Performs an initial coarse boundary calculation to return a subset * of entities whose bounding volumes intersect with the specified ray, * then triggers an optional picking collider on individual renderable * objects to further determine the precise values of the picking ray collision. * * @class away.pick.RaycastPicker */ export declare class BoundsPicker extends AbstractionBase implements IPartitionTraverser, IBoundsPicker { private static tmpMatrix; private static tmpPoint; private static tmpBox; static MINIMAL_SCALE: number; private _boundingVolumePools; private _pickGroup; private _boundsPickers; /** * * @returns {ContainerNode} */ get node(): ContainerNode; /** * Indicates the width of the display object, in pixels. The width is * calculated based on the bounds of the content of the display object. When * you set the width property, the scaleX property * is adjusted accordingly, as shown in the following code: * *

Except for TextField and Video objects, a display object with no * content(such as an empty sprite) has a width of 0, even if you try to set * width to a different value.

*/ get width(): number; set width(val: number); /** * Indicates the height of the display object, in pixels. The height is * calculated based on the bounds of the content of the display object. When * you set the height property, the scaleY property * is adjusted accordingly, as shown in the following code: * *

Except for TextField and Video objects, a display object with no * content (such as an empty sprite) has a height of 0, even if you try to * set height to a different value.

*/ get height(): number; set height(val: number); /** * Indicates the depth of the display object, in pixels. The depth is * calculated based on the bounds of the content of the display object. When * you set the depth property, the scaleZ property * is adjusted accordingly, as shown in the following code: * *

Except for TextField and Video objects, a display object with no * content (such as an empty sprite) has a depth of 0, even if you try to * set depth to a different value.

*/ get depth(): number; set depth(val: number); init(node: INode, pool: BoundsPickerPool): void; onInvalidate(): void; traverse(): void; getTraverser(node: INode): IPartitionTraverser; /** * Returns true if the current node is at least partly in the frustum. * If so, the partition node knows to pass on the traverser to its children. * * @param node The Partition3DNode object to frustum-test. */ enterNode(node: INode): boolean; getBoundingVolume(target?: INode, type?: BoundingVolumeType): BoundingVolumeBase; getBoxBounds(targetCoordinateSpace?: INode, strokeFlag?: boolean, fastFlag?: boolean): Box; getSphereBounds(targetCoordinateSpace?: INode, strokeFlag?: boolean, fastFlag?: boolean): Sphere; hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean; _hitTestPointInternal(rootNode: INode, x: number, y: number, shapeFlag?: boolean, maskFlag?: boolean): boolean; /** * Evaluates the bounding box of the display object to see if it overlaps or * intersects with the bounding box of the obj display object. * * @param obj The display object to test against. * @return true if the bounding boxes of the display objects * intersect; false if not. */ hitTestObject(obj: BoundsPicker): 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; /** * * @param planes * @param numPlanes * @returns {boolean} */ isInFrustum(planes: Array, numPlanes: number): boolean; _isInFrustumInternal(rootNode: INode, planes: Array, numPlanes: number): boolean; onClear(): void; /** * * @param entity */ applyEntity(node: INode): void; } //# sourceMappingURL=BoundsPicker.d.ts.map