Procházet zdrojové kódy

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 před 13 roky
rodič
revize
c985f1857c
1 změnil soubory, kde provedl 44 přidání a 4 odebrání
  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();