From 6ba19e18dd968626cc55c300a6ecdca12208c20b Mon Sep 17 00:00:00 2001 From: liteng <930372551@qq.com> Date: Sat, 11 Aug 2018 09:56:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9F=A9=E5=BD=A2=E5=85=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/editor/menubar/AddMenu.js | 2 +- ShadowEditor.Web/src/event/EventDispatcher.js | 2 + ShadowEditor.Web/src/event/EventList.js | 1 + .../src/event/menu/add/AddPlaneEvent.js | 3 +- .../event/menu/add/AddRectAreaLightEvent.js | 44 +++++++++++++++++++ 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 ShadowEditor.Web/src/event/menu/add/AddRectAreaLightEvent.js diff --git a/ShadowEditor.Web/src/editor/menubar/AddMenu.js b/ShadowEditor.Web/src/editor/menubar/AddMenu.js index bed04bfa..c3fb98d7 100644 --- a/ShadowEditor.Web/src/editor/menubar/AddMenu.js +++ b/ShadowEditor.Web/src/editor/menubar/AddMenu.js @@ -180,7 +180,7 @@ AddMenu.prototype.render = function () { html: '矩形光', cls: 'option', onClick: function () { - // _this.app.call('mAddHemisphereLight'); + _this.app.call('mAddRectAreaLight'); } }, { xtype: 'hr' diff --git a/ShadowEditor.Web/src/event/EventDispatcher.js b/ShadowEditor.Web/src/event/EventDispatcher.js index 78945ca2..845d8a4a 100644 --- a/ShadowEditor.Web/src/event/EventDispatcher.js +++ b/ShadowEditor.Web/src/event/EventDispatcher.js @@ -76,6 +76,7 @@ import AddSpotLightEvent from './menu/add/AddSpotLightEvent'; import AddDirectionalLightEvent from './menu/add/AddDirectionalLightEvent'; import AddHemisphereLightEvent from './menu/add/AddHemisphereLightEvent'; import AddAmbientLightEvent from './menu/add/AddAmbientLightEvent'; +import AddRectAreaLightEvent from './menu/add/AddRectAreaLightEvent'; import AddTextEvent from './menu/add/AddTextEvent'; import AddPerspectiveCameraEvent from './menu/add/AddPerspectiveCameraEvent'; @@ -226,6 +227,7 @@ function EventDispatcher(app) { new AddDirectionalLightEvent(this.app), new AddHemisphereLightEvent(this.app), new AddAmbientLightEvent(this.app), + new AddRectAreaLightEvent(this.app), new AddTextEvent(this.app), new AddPerspectiveCameraEvent(this.app), diff --git a/ShadowEditor.Web/src/event/EventList.js b/ShadowEditor.Web/src/event/EventList.js index 42b8333d..e7c11d08 100644 --- a/ShadowEditor.Web/src/event/EventList.js +++ b/ShadowEditor.Web/src/event/EventList.js @@ -55,6 +55,7 @@ var EventList = [ 'mAddDirectionalLight', // 添加平行光源 'mAddHemisphereLight', // 添加半球光 'mAddAmbientLight', // 添加环境光 + 'mAddRectAreaLight', // 添加矩形光 'mAddText', // 添加文本 'mAddPerspectiveCamera', // 添加透视相机 diff --git a/ShadowEditor.Web/src/event/menu/add/AddPlaneEvent.js b/ShadowEditor.Web/src/event/menu/add/AddPlaneEvent.js index 9c547812..83d784bd 100644 --- a/ShadowEditor.Web/src/event/menu/add/AddPlaneEvent.js +++ b/ShadowEditor.Web/src/event/menu/add/AddPlaneEvent.js @@ -28,10 +28,11 @@ AddPlaneEvent.prototype.stop = function () { AddPlaneEvent.prototype.onAddPlane = function () { var editor = this.app.editor; - var geometry = new THREE.PlaneBufferGeometry(2, 2); + var geometry = new THREE.PlaneBufferGeometry(50, 50); var material = new THREE.MeshStandardMaterial(); var mesh = new THREE.Mesh(geometry, material); mesh.name = '平板' + ID++; + mesh.rotation.x = -Math.PI / 2; editor.execute(new AddObjectCommand(mesh)); }; diff --git a/ShadowEditor.Web/src/event/menu/add/AddRectAreaLightEvent.js b/ShadowEditor.Web/src/event/menu/add/AddRectAreaLightEvent.js new file mode 100644 index 00000000..50165dbb --- /dev/null +++ b/ShadowEditor.Web/src/event/menu/add/AddRectAreaLightEvent.js @@ -0,0 +1,44 @@ +import MenuEvent from '../MenuEvent'; +import AddObjectCommand from '../../../command/AddObjectCommand'; + +var ID = 1; + +/** + * 添加矩形光事件 + * @param {*} app + */ +function AddRectAreaLightEvent(app) { + MenuEvent.call(this, app); +} + +AddRectAreaLightEvent.prototype = Object.create(MenuEvent.prototype); +AddRectAreaLightEvent.prototype.constructor = AddRectAreaLightEvent; + +AddRectAreaLightEvent.prototype.start = function () { + var _this = this; + this.app.on('mAddRectAreaLight.' + this.id, function () { + _this.onAddHemisphereLight(); + }); +}; + +AddRectAreaLightEvent.prototype.stop = function () { + this.app.on('mAddRectAreaLight.' + this.id, null); +}; + +AddRectAreaLightEvent.prototype.onAddHemisphereLight = function () { + var editor = this.app.editor; + + var color = 0xffffff; + var intensity = 1; + var width = 40; + var height = 30; + + var light = new THREE.RectAreaLight(color, intensity, width, height); + light.name = '矩形光' + ID++; + + light.position.set(0, 50, 0); + + editor.execute(new AddObjectCommand(light)); +}; + +export default AddRectAreaLightEvent; \ No newline at end of file