Skip to content

Commit

Permalink
Editor: Avoid instantiating new Fogs when changing settings.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrdoob committed Jun 20, 2020
1 parent 8c5cfcb commit 7de14fd
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 4 deletions.
1 change: 1 addition & 0 deletions editor/js/Editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ function Editor() {
sceneBackgroundChanged: new Signal(),
sceneEnvironmentChanged: new Signal(),
sceneFogChanged: new Signal(),
sceneFogSettingsChanged: new Signal(),
sceneGraphChanged: new Signal(),
sceneRendered: new Signal(),

Expand Down
20 changes: 16 additions & 4 deletions editor/js/Sidebar.Scene.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 fogType = new UISelect().setOptions( {

Expand Down Expand Up @@ -277,22 +289,22 @@ function SidebarScene( editor ) {
container.add( fogPropertiesRow );

var fogColor = new UIColor().setValue( '#aaaaaa' );
fogColor.onChange( onFogChanged );
fogColor.onChange( onFogSettingsChanged );
fogPropertiesRow.add( fogColor );

// 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 );

// 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 );

// 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 );

//
Expand Down
20 changes: 20 additions & 0 deletions editor/js/Viewport.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) {

if ( viewportCamera.isPerspectiveCamera ) {
Expand Down

0 comments on commit 7de14fd

Please sign in to comment.