mirror of
https://github.com/tengge1/ShadowEditor.git
synced 2026-02-01 16:08:17 +00:00
移除物体、添加几何体、设置几何体名称事件。
This commit is contained in:
parent
b43df85df0
commit
dbcfed5e38
@ -65,36 +65,16 @@ Editor.prototype = {
|
||||
this.app.call('nameObject', this, object, name);
|
||||
},
|
||||
|
||||
removeObject: function (object) {
|
||||
|
||||
if (object.parent === null) return; // avoid deleting the camera or scene
|
||||
|
||||
var scope = this;
|
||||
|
||||
object.traverse(function (child) {
|
||||
|
||||
scope.removeHelper(child);
|
||||
|
||||
});
|
||||
|
||||
object.parent.remove(object);
|
||||
|
||||
this.signals.objectRemoved.dispatch(object);
|
||||
this.signals.sceneGraphChanged.dispatch();
|
||||
|
||||
removeObject: function (object) { // 移除物体
|
||||
this.app.call('removeObject', this, object);
|
||||
},
|
||||
|
||||
addGeometry: function (geometry) {
|
||||
|
||||
this.geometries[geometry.uuid] = geometry;
|
||||
|
||||
addGeometry: function (geometry) { // 添加几何体
|
||||
this.app.call('addGeometry', this, geometry);
|
||||
},
|
||||
|
||||
setGeometryName: function (geometry, name) {
|
||||
|
||||
geometry.name = name;
|
||||
this.signals.sceneGraphChanged.dispatch();
|
||||
|
||||
setGeometryName: function (geometry, name) { // 设置几何体名称
|
||||
this.app.call('setGeometryName', this, geometry, name);
|
||||
},
|
||||
|
||||
addMaterial: function (material) {
|
||||
|
||||
@ -16,6 +16,9 @@ import SetSceneEvent from './editor/SetSceneEvent';
|
||||
import AddObjectEvent from './editor/AddObjectEvent';
|
||||
import MoveObjectEvent from './editor/MoveObjectEvent';
|
||||
import NameObjectEvent from './editor/NameObjectEvent';
|
||||
import RemoveObjectEvent from './editor/RemoveObjectEvent';
|
||||
import AddGeometryEvent from './editor/AddGeometryEvent';
|
||||
import SetGeometryNameEvent from './editor/SetGeometryNameEvent';
|
||||
|
||||
/**
|
||||
* 事件执行器
|
||||
@ -42,6 +45,9 @@ function EventDispatcher(app) {
|
||||
new AddObjectEvent(this.app),
|
||||
new MoveObjectEvent(this.app),
|
||||
new NameObjectEvent(this.app),
|
||||
new RemoveObjectEvent(this.app),
|
||||
new AddGeometryEvent(this.app),
|
||||
new SetGeometryNameEvent(this.app),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@ -22,6 +22,9 @@ var EventList = [
|
||||
'addObject', // 添加物体
|
||||
'moveObject', // 移动物体
|
||||
'nameObject', // 重命名物体
|
||||
'removeObject', // 删除物体
|
||||
'addGeometry', // 添加几何体事件
|
||||
'setGeometryName', // 设置几何体名称事件
|
||||
];
|
||||
|
||||
export default EventList;
|
||||
30
src/event/editor/AddGeometryEvent.js
Normal file
30
src/event/editor/AddGeometryEvent.js
Normal file
@ -0,0 +1,30 @@
|
||||
import BaseEvent from '../BaseEvent';
|
||||
|
||||
/**
|
||||
* 添加几何体事件
|
||||
* @param {*} app
|
||||
*/
|
||||
function AddGeometryEvent(app) {
|
||||
BaseEvent.call(this, app);
|
||||
}
|
||||
|
||||
AddGeometryEvent.prototype = Object.create(BaseEvent.prototype);
|
||||
AddGeometryEvent.prototype.constructor = AddGeometryEvent;
|
||||
|
||||
AddGeometryEvent.prototype.start = function () {
|
||||
var _this = this;
|
||||
this.app.on('addGeometry.' + this.id, function (geometry) {
|
||||
_this.onAddGeometry(geometry);
|
||||
});
|
||||
};
|
||||
|
||||
AddGeometryEvent.prototype.stop = function () {
|
||||
this.app.on('addGeometry.' + this.id, null);
|
||||
};
|
||||
|
||||
AddGeometryEvent.prototype.onAddGeometry = function (geometry) {
|
||||
var editor = this.app.editor;
|
||||
editor.geometries[geometry.uuid] = geometry;
|
||||
};
|
||||
|
||||
export default AddGeometryEvent;
|
||||
40
src/event/editor/RemoveObjectEvent.js
Normal file
40
src/event/editor/RemoveObjectEvent.js
Normal file
@ -0,0 +1,40 @@
|
||||
import BaseEvent from '../BaseEvent';
|
||||
|
||||
/**
|
||||
* 删除物体事件
|
||||
* @param {*} app
|
||||
*/
|
||||
function RemoveObjectEvent(app) {
|
||||
BaseEvent.call(this, app);
|
||||
}
|
||||
|
||||
RemoveObjectEvent.prototype = Object.create(BaseEvent.prototype);
|
||||
RemoveObjectEvent.prototype.constructor = RemoveObjectEvent;
|
||||
|
||||
RemoveObjectEvent.prototype.start = function () {
|
||||
var _this = this;
|
||||
this.app.on('removeObject.' + this.id, function (object) {
|
||||
_this.onRemoveObject(object);
|
||||
});
|
||||
};
|
||||
|
||||
RemoveObjectEvent.prototype.stop = function () {
|
||||
this.app.on('removeObject.' + this.id, null);
|
||||
};
|
||||
|
||||
RemoveObjectEvent.prototype.onRemoveObject = function (object) {
|
||||
var editor = this.app.editor;
|
||||
|
||||
if (object.parent === null) return; // 避免删除相机或场景
|
||||
|
||||
object.traverse(function (child) {
|
||||
editor.removeHelper(child);
|
||||
});
|
||||
|
||||
object.parent.remove(object);
|
||||
|
||||
editor.signals.objectRemoved.dispatch(object);
|
||||
editor.signals.sceneGraphChanged.dispatch();
|
||||
};
|
||||
|
||||
export default RemoveObjectEvent;
|
||||
31
src/event/editor/SetGeometryNameEvent.js
Normal file
31
src/event/editor/SetGeometryNameEvent.js
Normal file
@ -0,0 +1,31 @@
|
||||
import BaseEvent from '../BaseEvent';
|
||||
|
||||
/**
|
||||
* 设置几何体名称事件
|
||||
* @param {*} app
|
||||
*/
|
||||
function SetGeometryNameEvent(app) {
|
||||
BaseEvent.call(this, app);
|
||||
}
|
||||
|
||||
SetGeometryNameEvent.prototype = Object.create(BaseEvent.prototype);
|
||||
SetGeometryNameEvent.prototype.constructor = SetGeometryNameEvent;
|
||||
|
||||
SetGeometryNameEvent.prototype.start = function () {
|
||||
var _this = this;
|
||||
this.app.on('setGeometryName.' + this.id, function (geometry, name) {
|
||||
_this.onSetGeometryName(geometry, name);
|
||||
});
|
||||
};
|
||||
|
||||
SetGeometryNameEvent.prototype.stop = function () {
|
||||
this.app.on('setGeometryName.' + this.id, null);
|
||||
};
|
||||
|
||||
SetGeometryNameEvent.prototype.onSetGeometryName = function (geometry, name) {
|
||||
var editor = this.app.editor;
|
||||
geometry.name = name;
|
||||
editor.signals.sceneGraphChanged.dispatch();
|
||||
};
|
||||
|
||||
export default SetGeometryNameEvent;
|
||||
Loading…
x
Reference in New Issue
Block a user