three.js 场景编辑器 源码解析(七)

本文深入解析Editor.js,一款强大的编辑器核心文件,介绍其mvc模式下的controller角色,涵盖信号库、配置信息、历史操作及资源管理等内容,是理解编辑器工作原理的关键。

    这一章讲解整个编辑器中最重要的一个文件editor\js\Editor.js,这个文件是真个编辑器的上下文,是所有ui与对象交互的桥梁,相当于mvc模式中的controller。

    Editor.js包含的几个重要的信息如下:

  1. 整个编辑器的相机DEFAULT_CAMERA
  2. 整个编辑器的场景this.scene
  3.  整个场景中辅助相关对象所在的场景this.sceneHelpers
  4. 编辑器中信息传递的介质this.signals
  5. 整个场景的资源信息包括this.object、this.geometries、this.materials、this.textures、this.scripts、this.animations、this.mixer、this.helpers
  6. 编辑器中当前关注的对象this.selected
  7. 编辑器的配置信息(初始化时默认配置)this.config
  8. 编辑器的历史操作信息this.history
  9. 编辑器存储相关信息this.storage
  10. 编辑器的ui文本信息this.strings
  11. 编辑器的文件加载器,主要是导入json、对象等this.loader
    //编辑器的上下文(是各个子类的桥梁,各个子模块通信的桥梁)
    var Editor = function () {
    
    	this.DEFAULT_CAMERA = new THREE.PerspectiveCamera( 50, 1, 0.01, 1000 );
    	this.DEFAULT_CAMERA.name = 'Camera';
    	this.DEFAULT_CAMERA.position.set( 0, 5, 10 );
    	this.DEFAULT_CAMERA.lookAt( new THREE.Vector3() );
    	//信号库
    	var Signal = signals.Signal;
    
    	//各种信号(信号中心,都是通过editor中定义的全局变量来在各个组件中共享的)
    	this.signals = {
    
    		// script
    		// 脚本监听
    		editScript: new Signal(),
    
    		// player
    		// 播放器开始、停止监听
    		startPlayer: new Signal(),
    		stopPlayer: new Signal(),
    
    		// actions
    		//显示模型监听?
    		showModal: new Signal(),
    
    		// notifications
    		//清空编辑器监听?
    		editorCleared: new Signal(),
    
    		//开始保存监听、保存完成监听
    		savingStarted: new Signal(),
    		savingFinished: new Signal(),
    
    		//主题改变监听
    		themeChanged: new Signal(),
    
    		//变换改变监听(平移、旋转、缩放)
    		transformModeChanged: new Signal(),
    		snapChanged: new Signal(),		//选取监听?
    		spaceChanged: new Signal(),		//?
    		rendererChanged: new Signal(),	//?
    
    		//场景背景改变监听、雾监听、场景图改变监听
    		sceneBackgroundChanged: new Signal(),
    		sceneFogChanged: new Signal(),
    		sceneGraphChanged: new Signal(),
    
    		//相机改变监听
    		cameraChanged: new Signal(),
    
    		//几何数据改变监听
    		geometryChanged: new Signal(),
    
    		//选择对象、设置焦点对象监听
    		objectSelected: new Signal(),
    		objectFocused: new Signal(),
    
    
    		//对象的添加、改变、移除监听
    		objectAdded: new Signal(),
    		objectChanged: new Signal(),
    		objectRemoved: new Signal(),
    
    		//添加、移除辅助信息监听
    		helperAdded: new Signal(),
    		helperRemoved: new Signal(),
    
    		//材质改变监听
    		materialChanged: new Signal(),
    
    		//添加、改变、移除脚本监听
    		scriptAdded: new Signal(),
    		scriptChanged: new Signal(),
    		scriptRemoved: new Signal(),
    
    		//窗口改变大小监听
    		windowResize: new Signal(),
    
    		// 网格监听、刷新边栏监听、历史改变监听
    		showGridChanged: new Signal(),
    		refreshSidebarObject3D: new Signal(),
    		historyChanged: new Signal()
    
    	};
    
    	//配置类(配置的信息保存在浏览器的localstring中)
    	this.config = new Config();
    	//历史类
    	this.history = new History( this );
    	//存储类,封装
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值