Browse Source

Editor: Make LightShadow.bias configurable.

Mugen87 5 years ago
parent
commit
8927f19125
2 changed files with 50 additions and 4 deletions
  1. 44 4
      editor/js/Sidebar.Object.js
  2. 6 0
      editor/js/Strings.js

+ 44 - 4
editor/js/Sidebar.Object.js

@@ -300,10 +300,29 @@ var SidebarObject = function ( editor ) {
 	var objectReceiveShadow = new UIBoolean( false, strings.getKey( 'sidebar/object/receive' ) ).onChange( update );
 	objectShadowRow.add( objectReceiveShadow );
 
+	container.add( objectShadowRow );
+
+	// shadow radius
+
+	var objectShadowRadiusRow = new UIRow();
+
+	objectShadowRadiusRow.add( new UIText( strings.getKey( 'sidebar/object/shadowRadius' ) ).setWidth( '90px' ) );
+
 	var objectShadowRadius = new UINumber( 1 ).onChange( update );
-	objectShadowRow.add( objectShadowRadius );
+	objectShadowRadiusRow.add( objectShadowRadius );
 
-	container.add( objectShadowRow );
+	container.add( objectShadowRadiusRow );
+
+	// shadow bias
+
+	var objectShadowBiasRow = new UIRow();
+
+	objectShadowBiasRow.add( new UIText( strings.getKey( 'sidebar/object/shadowBias' ) ).setWidth( '90px' ) );
+
+	var objectShadowBias = new UINumber( 0 ).setPrecision( 6 ).setStep( 0.001 ).setNudge( 0.000001 ).onChange( update );
+	objectShadowBiasRow.add( objectShadowBias );
+
+	container.add( objectShadowBiasRow );
 
 	// visible
 
@@ -581,6 +600,12 @@ var SidebarObject = function ( editor ) {
 
 				}
 
+				if ( object.shadow.bias !== objectShadowBias.getValue() ) {
+
+					editor.execute( new SetValueCommand( editor, object.shadow, 'bias', objectShadowBias.getValue() ) );
+
+				}
+
 			}
 
 			try {
@@ -621,12 +646,26 @@ var SidebarObject = function ( editor ) {
 			'decay': objectDecayRow,
 			'castShadow': objectShadowRow,
 			'receiveShadow': objectReceiveShadow,
-			'shadow': objectShadowRadius
+			'shadow': [ objectShadowRadiusRow, objectShadowBiasRow ]
 		};
 
 		for ( var property in properties ) {
 
-			properties[ property ].setDisplay( object[ property ] !== undefined ? '' : 'none' );
+			var uiElement = properties[ property ];
+
+			if ( Array.isArray( uiElement ) === true ) {
+
+				for ( var i = 0; i < uiElement.length; i ++ ) {
+
+					uiElement[ i ].setDisplay( object[ property ] !== undefined ? '' : 'none' );
+
+				}
+
+			} else {
+
+				uiElement.setDisplay( object[ property ] !== undefined ? '' : 'none' );
+
+			}
 
 		}
 
@@ -802,6 +841,7 @@ var SidebarObject = function ( editor ) {
 		if ( object.shadow !== undefined ) {
 
 			objectShadowRadius.setValue( object.shadow.radius );
+			objectShadowBias.setValue( object.shadow.bias );
 
 		}
 

+ 6 - 0
editor/js/Strings.js

@@ -109,6 +109,8 @@ var Strings = function ( config ) {
 			'sidebar/object/penumbra': 'Penumbra',
 			'sidebar/object/decay': 'Decay',
 			'sidebar/object/shadow': 'Shadow',
+			'sidebar/object/shadowRadius': 'Shadow Radius',
+			'sidebar/object/shadowBias': 'Shadow Bias',
 			'sidebar/object/cast': 'cast',
 			'sidebar/object/receive': 'receive',
 			'sidebar/object/visible': 'Visible',
@@ -421,6 +423,8 @@ var Strings = function ( config ) {
 			'sidebar/object/penumbra': 'Pénombre',
 			'sidebar/object/decay': 'Pourriture',
 			'sidebar/object/shadow': 'Ombre',
+			'sidebar/object/shadowRadius': 'Shadow Radius',
+			'sidebar/object/shadowBias': 'Shadow Bias',
 			'sidebar/object/cast': 'cast',
 			'sidebar/object/receive': 'receive',
 			'sidebar/object/visible': 'Visible',
@@ -733,6 +737,8 @@ var Strings = function ( config ) {
 			'sidebar/object/penumbra': '边缘',
 			'sidebar/object/decay': '衰减',
 			'sidebar/object/shadow': '阴影',
+			'sidebar/object/shadowRadius': 'Shadow Radius',
+			'sidebar/object/shadowBias': 'Shadow Bias',
 			'sidebar/object/cast': '产生',
 			'sidebar/object/receive': '接受',
 			'sidebar/object/visible': '可见性',