Browse Source

FX editor: support uniform scale

trethaller 7 years ago
parent
commit
a5f8707b6a
2 changed files with 11 additions and 5 deletions
  1. 7 3
      hide/prefab/fx/FX.hx
  2. 4 2
      hide/view/FXEditor.hx

+ 7 - 3
hide/prefab/fx/FX.hx

@@ -184,13 +184,17 @@ class FX extends hxd.prefab.Library {
 			return c != null ? VCurve(c) : def;
 		}
 
-		function makeVector(name: String, defVal: Float)  {
+		function makeVector(name: String, defVal: Float, uniform: Bool=true) : Value {
 			var curves = hide.prefab.Curve.getCurves(elt, name);
 			if(curves == null || curves.length == 0)
 				return null;
 
 			anyFound = true;
-			return hide.prefab.Curve.getVectorValue(curves);
+
+			if(uniform && curves.length == 1 && curves[0].name == name)
+				return VCurve(curves[0]);
+
+			return hide.prefab.Curve.getVectorValue(curves, defVal);
 		}
 
 		function makeColor(name: String)  {
@@ -206,7 +210,7 @@ class FX extends hxd.prefab.Library {
 			elt: obj3d,
 			obj: objCtx.local3d,
 			position: makeVector("position", 0.0),
-			scale: makeVector("scale", 1.0),
+			scale: makeVector("scale", 1.0, true),
 			rotation: makeVector("rotation", 0.0),
 			color: makeColor("color"),
 			visibility: makeVal("visibility", null),

+ 4 - 2
hide/view/FXEditor.hx

@@ -820,7 +820,9 @@ class FXEditor extends FileView {
 
 		var hslTracks : Void -> Array<PropTrackDef> = () -> [{name: "h", def: 0.0}, {name: "s", clamp: [0., 1.], def: 0.0}, {name: "l", clamp: [0., 1.], def: 1.0}];
 		var alphaTrack : Void -> Array<PropTrackDef> = () -> [{name: "a", clamp: [0., 1.], def: 1.0}];
-		var xyzwTracks : Int -> Array<PropTrackDef> = (n) -> [{name: "x"}, {name: "y"}, {name: "z"}, {name: "z"}].slice(0, n);
+		var xyzwTracks : Int -> Array<PropTrackDef> = (n) -> [{name: "x"}, {name: "y"}, {name: "z"}, {name: "w"}].slice(0, n);
+		var scaleTracks = groupedTracks("scale", xyzwTracks(3));
+		scaleTracks.unshift(trackItem("Uniform", [{name: "scale"}]));
 
 		if(objElt != null) {
 			menuItems.push({
@@ -833,7 +835,7 @@ class FXEditor extends FileView {
 			});
 			menuItems.push({
 				label: "Scale",
-				menu: groupedTracks("scale", xyzwTracks(3)),
+				menu: scaleTracks,
 			});
 			menuItems.push({
 				label: "Color",