Explorar el Código

Editor: Refactored Sidebar.Project.

Mr.doob hace 5 años
padre
commit
851dd14f06
Se han modificado 1 ficheros con 51 adiciones y 29 borrados
  1. 51 29
      editor/js/Sidebar.Project.js

+ 51 - 29
editor/js/Sidebar.Project.js

@@ -81,7 +81,6 @@ function SidebarProject( editor ) {
 	var antialiasRow = new UIRow();
 	var antialiasBoolean = new UIBoolean( config.getKey( 'project/renderer/antialias' ) ).onChange( function () {
 
-		config.setKey( 'project/renderer/antialias', this.getValue() );
 		createRenderer();
 
 	} );
@@ -96,8 +95,8 @@ function SidebarProject( editor ) {
 	var shadowsRow = new UIRow();
 	var shadowsBoolean = new UIBoolean( config.getKey( 'project/renderer/shadows' ) ).onChange( function () {
 
-		config.setKey( 'project/renderer/shadows', this.getValue() );
-		updateRenderer();
+		currentRenderer.shadowMap.enabled = this.getValue();
+		signals.rendererUpdated.dispatch();
 
 	} );
 
@@ -111,8 +110,8 @@ function SidebarProject( editor ) {
 		//	3: 'VSM'
 	} ).setWidth( '125px' ).onChange( function () {
 
-		config.setKey( 'project/renderer/shadowType', parseFloat( this.getValue() ) );
-		updateRenderer();
+		currentRenderer.shadowMap.type = parseFloat( this.getValue() );
+		signals.rendererUpdated.dispatch();
 
 	} );
 	shadowTypeSelect.setValue( config.getKey( 'project/renderer/shadowType' ) );
@@ -126,8 +125,8 @@ function SidebarProject( editor ) {
 	var physicallyCorrectLightsRow = new UIRow();
 	var physicallyCorrectLightsBoolean = new UIBoolean( config.getKey( 'project/renderer/physicallyCorrectLights' ) ).onChange( function () {
 
-		config.setKey( 'project/renderer/physicallyCorrectLights', this.getValue() );
-		updateRenderer();
+		currentRenderer.physicallyCorrectLights = this.getValue();
+		signals.rendererUpdated.dispatch();
 
 	} );
 
@@ -145,14 +144,11 @@ function SidebarProject( editor ) {
 		2: 'Reinhard',
 		3: 'Cineon',
 		4: 'ACESFilmic'
-	} ).setWidth( '120px' ).onChange( function ( value ) {
-
-		var value = this.getValue();
-
-		config.setKey( 'project/renderer/toneMapping', parseFloat( value ) );
-		toneMappingExposure.setDisplay( value === '0' ? 'none' : '' );
+	} ).setWidth( '120px' ).onChange( function () {
 
-		updateRenderer();
+		currentRenderer.toneMapping = parseFloat( this.getValue() );
+		toneMappingExposure.setDisplay( currentRenderer.toneMapping === 0 ? 'none' : '' );
+		signals.rendererUpdated.dispatch();
 
 	} );
 	toneMappingSelect.setValue( config.getKey( 'project/renderer/toneMapping' ) );
@@ -166,8 +162,8 @@ function SidebarProject( editor ) {
 	toneMappingExposure.setRange( 0, 10 );
 	toneMappingExposure.onChange( function () {
 
-		config.setKey( 'project/renderer/toneMappingExposure', this.getValue() );
-		updateRenderer();
+		currentRenderer.toneMappingExposure = this.getValue();
+		signals.rendererUpdated.dispatch();
 
 	} );
 	toneMappingRow.add( toneMappingExposure );
@@ -176,18 +172,6 @@ function SidebarProject( editor ) {
 
 	//
 
-	function updateRenderer() {
-
-		currentRenderer.physicallyCorrectLights = physicallyCorrectLightsBoolean.getValue();
-		currentRenderer.shadowMap.enabled = shadowsBoolean.getValue();
-		currentRenderer.shadowMap.type = parseFloat( shadowTypeSelect.getValue() );
-		currentRenderer.toneMapping = parseFloat( toneMappingSelect.getValue() );
-		currentRenderer.toneMappingExposure = toneMappingExposure.getValue();
-
-		signals.rendererUpdated.dispatch();
-
-	}
-
 	function createRenderer() {
 
 		currentRenderer = new THREE.WebGLRenderer( { antialias: antialiasBoolean.getValue() } );
@@ -262,7 +246,45 @@ function SidebarProject( editor ) {
 
 	container.add( materials );
 
-	// events
+	// signals
+
+	signals.editorCleared.add( function () {
+
+		currentRenderer.physicallyCorrectLights = false;
+		currentRenderer.shadowMap.enabled = true;
+		currentRenderer.shadowMap.type = 1;
+		currentRenderer.toneMapping = 0;
+		currentRenderer.toneMappingExposure = 1;
+
+		refreshRendererUI();
+
+		signals.rendererUpdated.dispatch();
+
+	} );
+
+	function refreshRendererUI() {
+
+		physicallyCorrectLightsBoolean.setValue( currentRenderer.physicallyCorrectLights );
+		shadowsBoolean.setValue( currentRenderer.shadowMap.enabled );
+		shadowTypeSelect.setValue( currentRenderer.shadowMap.type );
+		toneMappingSelect.setValue( currentRenderer.toneMapping );
+		toneMappingExposure.setValue( currentRenderer.toneMappingExposure );
+		toneMappingExposure.setDisplay( currentRenderer.toneMapping === 0 ? 'none' : '' );
+
+	}
+
+	signals.rendererUpdated.add( function () {
+
+		config.setKey(
+			'project/renderer/antialias', antialiasBoolean.getValue(),
+			'project/renderer/physicallyCorrectLights', physicallyCorrectLightsBoolean.getValue(),
+			'project/renderer/shadows', shadowsBoolean.getValue(),
+			'project/renderer/shadowType', parseFloat( shadowTypeSelect.getValue() ),
+			'project/renderer/toneMapping', parseFloat( toneMappingSelect.getValue() ),
+			'project/renderer/toneMappingExposure', toneMappingExposure.getValue()
+		);
+
+	} );
 
 	signals.objectSelected.add( function ( object ) {