From eef957ff27b7460f2899037e2e542dc1ac0d0b95 Mon Sep 17 00:00:00 2001 From: ChenX Date: Tue, 13 Apr 2021 11:23:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=E7=82=B9=E9=80=89=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=E6=97=B6,=E9=80=8F=E8=BF=87=E9=80=89=E5=88=B0?= =?UTF-8?q?=E8=99=9A=E6=8B=9F=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Editor/PointPick.ts | 6 +++++- src/Geometry/SpaceParse/PointSelectSpace.ts | 5 +++-- src/GraphicsSystem/Viewer.ts | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Editor/PointPick.ts b/src/Editor/PointPick.ts index a4b7a901a..8417092e4 100644 --- a/src/Editor/PointPick.ts +++ b/src/Editor/PointPick.ts @@ -60,7 +60,9 @@ export function PointPickOneObject( ptVcs: Vector3, view: IViewer, filter?: Filter, - selectObjects: Object3D[] = view.Scene.children): Object3D + selectObjects: Object3D[] = view.Scene.children, + useSelectBox = true +): Object3D | undefined { let raycaster = GenerateRaycaster(ptVcs, view); @@ -68,6 +70,8 @@ export function PointPickOneObject( if (intersection && intersection.object) return intersection.object; + if (!useSelectBox) return; + let pCenter = new Vector2(ptVcs.x, ptVcs.y); let selectSize = new Vector2(userConfig.cursorSize.SquareSize, userConfig.cursorSize.SquareSize); let minPt = pCenter.clone().sub(selectSize); diff --git a/src/Geometry/SpaceParse/PointSelectSpace.ts b/src/Geometry/SpaceParse/PointSelectSpace.ts index 427031094..3f39d0122 100644 --- a/src/Geometry/SpaceParse/PointSelectSpace.ts +++ b/src/Geometry/SpaceParse/PointSelectSpace.ts @@ -176,14 +176,15 @@ export class PointSelectSpace let view = app.Viewer; 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) { this.PointParseVisualSpace(GetEntity(visualBoxPick) as VisualSpaceBox); return; } - let ptSelect = new PointSelectBoards(vcs, view, view.VisibleObjects); + let ptSelect = new PointSelectBoards(vcs, view, visibleObjects); if (ptSelect.SelectBoards.length === 0 && !isDynamic) app.Editor.Prompt("请选择有效的板件,或者周围没有效板件"); diff --git a/src/GraphicsSystem/Viewer.ts b/src/GraphicsSystem/Viewer.ts index 4edef3936..83da3353a 100644 --- a/src/GraphicsSystem/Viewer.ts +++ b/src/GraphicsSystem/Viewer.ts @@ -506,7 +506,10 @@ export class Viewer return renderObjects; 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[]