From 784ecfafe0589d707bafa867666ee2e8aea56a38 Mon Sep 17 00:00:00 2001 From: tengge1 <930372551@qq.com> Date: Thu, 21 Feb 2019 21:56:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=89=E4=B8=AD=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E5=99=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShadowEditor.Web/src/helper/Helpers.js | 2 ++ ShadowEditor.Web/src/helper/SelectHelper.js | 28 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ShadowEditor.Web/src/helper/Helpers.js b/ShadowEditor.Web/src/helper/Helpers.js index 2a9d653d..c9f01fe6 100644 --- a/ShadowEditor.Web/src/helper/Helpers.js +++ b/ShadowEditor.Web/src/helper/Helpers.js @@ -1,6 +1,7 @@ import BaseHelper from './BaseHelper'; import GridHelper from './GridHelper'; import ViewHelper from './ViewHelper'; +import SelectHelper from './SelectHelper'; import SplineHelper from './line/SplineHelper'; /** @@ -13,6 +14,7 @@ function Helpers(app) { this.helpers = [ new GridHelper(app), new ViewHelper(app), + new SelectHelper(app), new SplineHelper(app), ]; } diff --git a/ShadowEditor.Web/src/helper/SelectHelper.js b/ShadowEditor.Web/src/helper/SelectHelper.js index 5b8ccfb3..92446622 100644 --- a/ShadowEditor.Web/src/helper/SelectHelper.js +++ b/ShadowEditor.Web/src/helper/SelectHelper.js @@ -12,11 +12,37 @@ SelectHelper.prototype = Object.create(BaseHelper.prototype); SelectHelper.prototype.constructor = SelectHelper; SelectHelper.prototype.start = function () { - + this.app.on(`objectSelected.${this.id}`, this.onObjectSelected.bind(this)); + this.app.on(`objectChanged.${this.id}`, this.onObjectChanged.bind(this)); }; SelectHelper.prototype.stop = function () { + this.app.on(`objectSelected.${this.id}`, null); + this.app.on(`objectChanged.${this.id}`, null); +}; +SelectHelper.prototype.onObjectSelected = function (obj) { + if (this.helper === undefined) { + this.helper = new THREE.BoxHelper(); + this.helper.visible = false; + this.app.editor.sceneHelpers.add(this.helper); + } + + if (obj) { + this.object = obj; + this.helper.setFromObject(obj); + this.helper.visible = true; + } else { + delete this.object; + this.helper.setFromObject(undefined); + this.helper.visible = false; + } +}; + +SelectHelper.prototype.onObjectChanged = function (obj) { + if (this.object && this.helper && this.object === obj) { + this.helper.update(); + } }; export default SelectHelper; \ No newline at end of file