Преглед на файлове

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 години
родител
ревизия
c985f1857c
променени са 1 файла, в които са добавени 44 реда и са изтрити 4 реда
  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();