Bladeren bron

Editor: added uniform scaling option.

Not sure about the exact details of the behavior or UI, but something like this is sorely needed when dealing with imported models.
alteredq 13 jaren geleden
bovenliggende
commit
c985f1857c
1 gewijzigde bestanden met toevoegingen van 44 en 4 verwijderingen
  1. 44 4
      editor/js/ui/Sidebar.Properties.Object3D.js

+ 44 - 4
editor/js/ui/Sidebar.Properties.Object3D.js

@@ -56,15 +56,25 @@ Sidebar.Properties.Object3D = function ( signals ) {
 	// scale
 
 	var objectScaleRow = new UI.Panel();
-	var objectScaleX = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '100px' ).setWidth( '50px' ).onChange( update );
-	var objectScaleY = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '160px' ).setWidth( '50px' ).onChange( update );
-	var objectScaleZ = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '220px' ).setWidth( '50px' ).onChange( update );
+	var objectScaleX = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '100px' ).setWidth( '50px' ).onChange( updateScaleX );
+	var objectScaleY = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '160px' ).setWidth( '50px' ).onChange( updateScaleY );
+	var objectScaleZ = new UI.Number( 'absolute' ).setValue( 1 ).setLeft( '220px' ).setWidth( '50px' ).onChange( updateScaleZ );
 
 	objectScaleRow.add( new UI.Text().setValue( 'Scale' ).setColor( '#666' ) );
 	objectScaleRow.add( objectScaleX, objectScaleY, objectScaleZ );
 
 	container.add( objectScaleRow );
 
+	// uniform scale lock
+
+	var objectScaleLockRow = new UI.Panel();
+	var objectScaleLock = new UI.Checkbox( 'absolute' ).setLeft( '100px' ).onChange( update );
+
+	objectScaleLockRow.add( new UI.Text().setValue( 'Uniform scale' ).setColor( '#666' ) );
+	objectScaleLockRow.add( objectScaleLock );
+
+	container.add( objectScaleLockRow );
+
 	// visible
 
 	var objectVisibleRow = new UI.Panel();
@@ -75,7 +85,6 @@ Sidebar.Properties.Object3D = function ( signals ) {
 
 	container.add( objectVisibleRow );
 
-
 	// fov
 
 	var objectFovRow = new UI.Panel();
@@ -111,6 +120,29 @@ Sidebar.Properties.Object3D = function ( signals ) {
 
 	var selected = null;
 
+	var uniformScale = 1;
+
+	function updateScaleX() {
+
+		uniformScale = objectScaleX.getValue();
+		update();
+
+	}
+
+	function updateScaleY() {
+
+		uniformScale = objectScaleY.getValue();
+		update();
+
+	}
+
+	function updateScaleZ() {
+
+		uniformScale = objectScaleZ.getValue();
+		update();
+
+	}
+
 	function update() {
 
 		if ( selected ) {
@@ -125,6 +157,14 @@ Sidebar.Properties.Object3D = function ( signals ) {
 			selected.rotation.y = objectRotationY.getValue();
 			selected.rotation.z = objectRotationZ.getValue();
 
+			if ( objectScaleLock.getValue() ) {
+
+				objectScaleX.setValue( uniformScale );
+				objectScaleY.setValue( uniformScale );
+				objectScaleZ.setValue( uniformScale );
+
+			}
+
 			selected.scale.x = objectScaleX.getValue();
 			selected.scale.y = objectScaleY.getValue();
 			selected.scale.z = objectScaleZ.getValue();