Forráskód Böngészése

Editor: Avoid instantiating new Fogs when changing settings.

Mr.doob 5 éve
szülő
commit
7de14fda65
3 módosított fájl, 37 hozzáadás és 4 törlés
  1. 1 0
      editor/js/Editor.js
  2. 16 4
      editor/js/Sidebar.Scene.js
  3. 20 0
      editor/js/Viewport.js

+ 1 - 0
editor/js/Editor.js

@@ -46,6 +46,7 @@ function Editor() {
 		sceneBackgroundChanged: new Signal(),
 		sceneBackgroundChanged: new Signal(),
 		sceneEnvironmentChanged: new Signal(),
 		sceneEnvironmentChanged: new Signal(),
 		sceneFogChanged: new Signal(),
 		sceneFogChanged: new Signal(),
+		sceneFogSettingsChanged: new Signal(),
 		sceneGraphChanged: new Signal(),
 		sceneGraphChanged: new Signal(),
 		sceneRendered: new Signal(),
 		sceneRendered: new Signal(),
 
 

+ 16 - 4
editor/js/Sidebar.Scene.js

@@ -249,6 +249,18 @@ function SidebarScene( editor ) {
 
 
 	}
 	}
 
 
+	function onFogSettingsChanged() {
+
+		signals.sceneFogSettingsChanged.dispatch(
+			fogType.getValue(),
+			fogColor.getHexValue(),
+			fogNear.getValue(),
+			fogFar.getValue(),
+			fogDensity.getValue()
+		);
+
+	}
+
 	var fogTypeRow = new UIRow();
 	var fogTypeRow = new UIRow();
 	var fogType = new UISelect().setOptions( {
 	var fogType = new UISelect().setOptions( {
 
 
@@ -277,22 +289,22 @@ function SidebarScene( editor ) {
 	container.add( fogPropertiesRow );
 	container.add( fogPropertiesRow );
 
 
 	var fogColor = new UIColor().setValue( '#aaaaaa' );
 	var fogColor = new UIColor().setValue( '#aaaaaa' );
-	fogColor.onChange( onFogChanged );
+	fogColor.onChange( onFogSettingsChanged );
 	fogPropertiesRow.add( fogColor );
 	fogPropertiesRow.add( fogColor );
 
 
 	// fog near
 	// fog near
 
 
-	var fogNear = new UINumber( 0.1 ).setWidth( '40px' ).setRange( 0, Infinity ).onChange( onFogChanged );
+	var fogNear = new UINumber( 0.1 ).setWidth( '40px' ).setRange( 0, Infinity ).onChange( onFogSettingsChanged );
 	fogPropertiesRow.add( fogNear );
 	fogPropertiesRow.add( fogNear );
 
 
 	// fog far
 	// fog far
 
 
-	var fogFar = new UINumber( 50 ).setWidth( '40px' ).setRange( 0, Infinity ).onChange( onFogChanged );
+	var fogFar = new UINumber( 50 ).setWidth( '40px' ).setRange( 0, Infinity ).onChange( onFogSettingsChanged );
 	fogPropertiesRow.add( fogFar );
 	fogPropertiesRow.add( fogFar );
 
 
 	// fog density
 	// fog density
 
 
-	var fogDensity = new UINumber( 0.05 ).setWidth( '40px' ).setRange( 0, 0.1 ).setStep( 0.001 ).setPrecision( 3 ).onChange( onFogChanged );
+	var fogDensity = new UINumber( 0.05 ).setWidth( '40px' ).setRange( 0, 0.1 ).setStep( 0.001 ).setPrecision( 3 ).onChange( onFogSettingsChanged );
 	fogPropertiesRow.add( fogDensity );
 	fogPropertiesRow.add( fogDensity );
 
 
 	//
 	//

+ 20 - 0
editor/js/Viewport.js

@@ -614,6 +614,26 @@ function Viewport( editor ) {
 
 
 	} );
 	} );
 
 
+	signals.sceneFogSettingsChanged.add( function ( fogType, fogColor, fogNear, fogFar, fogDensity ) {
+
+		switch ( fogType ) {
+
+			case 'Fog':
+				scene.fog.color.setHex( fogColor );
+				scene.fog.near = fogNear;
+				scene.fog.far = fogFar;
+				break;
+			case 'FogExp2':
+				scene.fog.color.setHex( fogColor );
+				scene.fog.density = fogDensity;
+				break;
+
+		}
+
+		render();
+
+	} );
+
 	signals.viewportCameraChanged.add( function ( viewportCamera ) {
 	signals.viewportCameraChanged.add( function ( viewportCamera ) {
 
 
 		if ( viewportCamera.isPerspectiveCamera ) {
 		if ( viewportCamera.isPerspectiveCamera ) {