Pārlūkot izejas kodu

Additive calculation for rotation curve on emitter

Jed 4 gadi atpakaļ
vecāks
revīzija
463b0a46ee
2 mainītis faili ar 12 papildinājumiem un 1 dzēšanām
  1. 4 0
      hide/view/FXEditor.hx
  2. 8 1
      hrt/prefab/fx/Emitter.hx

+ 4 - 0
hide/view/FXEditor.hx

@@ -1130,6 +1130,10 @@ class FXEditor extends FileView {
 				curveEdit.minValue = 0;
 				curveEdit.maxValue = 1;
 			}
+			if(curve.name.indexOf("Rotation") >= 0) {
+				curveEdit.minValue = 0;
+				curveEdit.maxValue = 360;
+			}
 			var shader = curve.parent.to(hrt.prefab.Shader);
 			if(shader != null) {
 				var sh = shader.getShaderDefinition(ctx);

+ 8 - 1
hrt/prefab/fx/Emitter.hx

@@ -339,7 +339,11 @@ private class ParticleInstance  {
 		// ROTATION
 		var rot = evaluator.getVector(def.rotation, t, tmpRot);
 		rot.scale3(Math.PI / 180.0);
+
+		//OFFSET
 		var offset = evaluator.getVector(def.localOffset, t, tmpOffset);
+
+		//SCALE
 		var scaleVec = evaluator.getVector(def.stretch, t, tmpScale);
 		scaleVec.scale3(evaluator.getFloat(def.scale, t));
 
@@ -1266,7 +1270,10 @@ class Emitter extends Object3D {
 
 				var xCurve = getCurve(pname + suffix);
 				if (xCurve != null)
-					return vMult(vAdd(xVal, randVal), VCurve(xCurve))
+					if (pname.indexOf("Rotation") >= 0 || pname.indexOf("Offset") >= 0)
+						return vAdd(vAdd(xVal, randVal), VCurve(xCurve));
+					else
+						return vMult(vAdd(xVal, randVal), VCurve(xCurve));
 				else
 					return vAdd(xVal, randVal);
 			}