修复:点选空间时,透过选到虚拟空间

pull/1474/head
ChenX 4 years ago
parent fec57be561
commit eef957ff27

@ -60,7 +60,9 @@ export function PointPickOneObject(
ptVcs: Vector3, ptVcs: Vector3,
view: IViewer, view: IViewer,
filter?: Filter, filter?: Filter,
selectObjects: Object3D[] = view.Scene.children): Object3D selectObjects: Object3D[] = view.Scene.children,
useSelectBox = true
): Object3D | undefined
{ {
let raycaster = GenerateRaycaster(ptVcs, view); let raycaster = GenerateRaycaster(ptVcs, view);
@ -68,6 +70,8 @@ export function PointPickOneObject(
if (intersection && intersection.object) if (intersection && intersection.object)
return intersection.object; return intersection.object;
if (!useSelectBox) return;
let pCenter = new Vector2(ptVcs.x, ptVcs.y); let pCenter = new Vector2(ptVcs.x, ptVcs.y);
let selectSize = new Vector2(userConfig.cursorSize.SquareSize, userConfig.cursorSize.SquareSize); let selectSize = new Vector2(userConfig.cursorSize.SquareSize, userConfig.cursorSize.SquareSize);
let minPt = pCenter.clone().sub(selectSize); let minPt = pCenter.clone().sub(selectSize);

@ -176,14 +176,15 @@ export class PointSelectSpace
let view = app.Viewer; let view = app.Viewer;
let vcs = app.Editor.MouseCtrl._CurMousePointVCS; let vcs = app.Editor.MouseCtrl._CurMousePointVCS;
let visualBoxPick = PointPickOneObject(vcs, view, { filterFunction: (o, e) => FilterVisualSpaceBox(e) }); let visibleObjects = view.VisibleObjects;
let visualBoxPick = PointPickOneObject(vcs, view, { filterFunction: (o, e) => FilterVisualSpaceBox(e) }, visibleObjects, false);
if (visualBoxPick) if (visualBoxPick)
{ {
this.PointParseVisualSpace(GetEntity(visualBoxPick) as VisualSpaceBox); this.PointParseVisualSpace(GetEntity(visualBoxPick) as VisualSpaceBox);
return; return;
} }
let ptSelect = new PointSelectBoards(vcs, view, view.VisibleObjects); let ptSelect = new PointSelectBoards(vcs, view, visibleObjects);
if (ptSelect.SelectBoards.length === 0 && !isDynamic) if (ptSelect.SelectBoards.length === 0 && !isDynamic)
app.Editor.Prompt("请选择有效的板件,或者周围没有效板件"); app.Editor.Prompt("请选择有效的板件,或者周围没有效板件");

@ -506,7 +506,10 @@ export class Viewer
return renderObjects; return renderObjects;
let renderList = this.Renderer.renderLists.get(this.Scene, this.Camera); let renderList = this.Renderer.renderLists.get(this.Scene, this.Camera);
return [...renderList.transparent.map(o => o.object), ...renderList.opaque.map(o => o.object)]; let objects = renderList.transparent.map(o => o.object);
for (let o of renderList.opaque)
objects.push(o.object);
return objects;
} }
get VisibleEntitys(): Entity[] get VisibleEntitys(): Entity[]

Loading…
Cancel
Save