UNPKG

@awayjs/view

Version:
81 lines 3.31 kB
import { Vector3D, AbstractionBase, AssetEvent } from '@awayjs/core'; import { IPartitionTraverser } from '../partition/IPartitionTraverser'; import { INode } from '../partition/INode'; import { PickingCollision } from './PickingCollision'; import { PickEntity } from '../base/PickEntity'; import { PickGroup, RaycastPickerPool } from '../PickGroup'; import { IEntity } from '../base/IEntity'; import { ContainerNode } from '../partition/ContainerNode'; import { IContainer } from '../base/IContainer'; /** * 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 RaycastPicker extends AbstractionBase implements IPartitionTraverser { private static _rayPosition; private static _rayDirection; private _dragNode; get node(): INode; pickGroup: PickGroup; shapeFlag: boolean; findClosestCollision: boolean; /** * */ layeredView: boolean; private _rootNode; private _shapeFlag; private _globalRayPosition; private _globalRayDirection; private _ignoredEntities; private _entities; private _pickers; private _collectedEntities; init(node: ContainerNode, pool: RaycastPickerPool): void; onClear(event: AssetEvent): void; traverse(): void; getTraverser(node: ContainerNode): IPartitionTraverser; get dragNode(): ContainerNode; set dragNode(node: ContainerNode); /** * 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: ContainerNode): boolean; /** * @inheritDoc */ isIntersectingRay(globalRayPosition: Vector3D, globalRayDirection: Vector3D, shapeFlag?: boolean): boolean; /** * @inheritDoc */ _isIntersectingRayInternal(rootNode: INode, globalRayPosition: Vector3D, globalRayDirection: Vector3D, shapeFlag: boolean): boolean; /** * @inheritDoc */ getCollision(rayPosition: Vector3D, rayDirection: Vector3D, shapeFlag?: boolean, startingCollision?: PickingCollision): PickingCollision; getViewCollision(x: number, y: number, shapeFlag?: boolean, startingCollision?: PickingCollision): PickingCollision; _getCollisionInternal(rayPosition: Vector3D, rayDirection: Vector3D, shapeFlag: boolean, maskFlag: boolean, startingCollision: PickingCollision): PickingCollision; getObjectsUnderPoint(rayPosition: Vector3D, rayDirection: Vector3D): IContainer[]; _collectEntities(collectedEntities: PickEntity[], dragNode?: INode): void; setIgnoreList(entities: Array<IEntity>): void; private isIgnored; private static sortOnNearT; private _getPickingCollision; private _getColliders; private static updatePosition; dispose(): void; /** * * @param entity */ applyEntity(node: INode): void; } //# sourceMappingURL=RaycastPicker.d.ts.map