|
|
|
@ -20,6 +20,9 @@ export function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster
|
|
|
|
|
return raycaster;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let boxSize = new Vector2;
|
|
|
|
|
let pCenter = new Vector2;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据鼠标位置确定鼠标范围内选中的实体.
|
|
|
|
|
* @param {Vector3} ptVcs 鼠标的屏幕点
|
|
|
|
@ -31,7 +34,9 @@ export function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster
|
|
|
|
|
export function PointPick(ptVcs: Vector3,
|
|
|
|
|
view: IViewer,
|
|
|
|
|
filter?: Filter,
|
|
|
|
|
selectObjects: Object3D[] = view.Scene.children): Object3D[]
|
|
|
|
|
selectObjects: Object3D[] = view.Scene.children,
|
|
|
|
|
selectSize = 10
|
|
|
|
|
): Object3D[]
|
|
|
|
|
{
|
|
|
|
|
let raycaster = GenerateRaycaster(ptVcs, view);
|
|
|
|
|
|
|
|
|
@ -39,10 +44,10 @@ export function PointPick(ptVcs: Vector3,
|
|
|
|
|
if (intersection && intersection.object)
|
|
|
|
|
return [intersection.object];
|
|
|
|
|
|
|
|
|
|
let pCenter = new Vector2(ptVcs.x, ptVcs.y);
|
|
|
|
|
let selectSize = new Vector2(10, 10);
|
|
|
|
|
let minPt = pCenter.clone().sub(selectSize);
|
|
|
|
|
let maxPt = pCenter.clone().add(selectSize);
|
|
|
|
|
pCenter.set(ptVcs.x, ptVcs.y);
|
|
|
|
|
boxSize.set(selectSize, selectSize);
|
|
|
|
|
let minPt = pCenter.clone().sub(boxSize);
|
|
|
|
|
let maxPt = pCenter.clone().add(boxSize);
|
|
|
|
|
|
|
|
|
|
let selectBox = new SelectBox(view, minPt, maxPt, SelectType.C);
|
|
|
|
|
selectBox.Select(selectObjects, filter);
|
|
|
|
|