diff --git a/ModelMultiParticlePersistFX.cs b/ModelMultiParticlePersistFX.cs index 504ebb7..5c42913 100644 --- a/ModelMultiParticlePersistFX.cs +++ b/ModelMultiParticlePersistFX.cs @@ -130,6 +130,8 @@ public class ModelMultiParticlePersistFX : EffectBehaviour // (Log(logarithmicGrowth * t + 1) + 1) * initialSize, assuming grow = 0. public MultiInputCurve logGrow; + public MultiInputCurve linGrow; + // Those 2 curve are related to the angle and distance to cam public FXCurve angle = new FXCurve("angle", 1f); @@ -376,6 +378,8 @@ public void UpdateEmitters(float power) pkpe.logarithmicGrow = logGrow.Value(inputs); + pkpe.linearGrow = linGrow.Value(inputs); + pkpe.go.transform.localPosition = localPosition + offsetDirection.normalized * offset.Value(inputs) * fixedScale; @@ -536,6 +540,7 @@ public override void OnLoad(ConfigNode node) offset = new MultiInputCurve("offset", true); force = new MultiInputCurve("force", true); logGrow = new MultiInputCurve("logGrow", true); + linGrow = new MultiInputCurve("linGrow", true); ConfigNode.LoadObjectFromConfig(this, node); emission.Load(node); @@ -548,6 +553,7 @@ public override void OnLoad(ConfigNode node) force.Load(node); logGrow.Load(node); + linGrow.Load(node); angle.Load("angle", node); distance.Load("distance", node); @@ -565,6 +571,7 @@ public override void OnSave(ConfigNode node) offset.Save(node); force.Save(node); logGrow.Save(node); + linGrow.Save(node); angle.Save(node); distance.Save(node); @@ -728,6 +735,7 @@ private float minInput(int id) min = Mathf.Min(min, offset.minInput[id]); min = Mathf.Min(min, force.minInput[id]); min = Mathf.Min(min, logGrow.minInput[id]); + min = Mathf.Min(min, linGrow.minInput[id]); return min; } @@ -743,6 +751,7 @@ private float maxInput(int id) max = Mathf.Max(max, offset.maxInput[id]); max = Mathf.Max(max, force.maxInput[id]); max = Mathf.Max(max, logGrow.maxInput[id]); + max = Mathf.Max(max, linGrow.maxInput[id]); return max; } diff --git a/PersistentKSPParticleEmitter.cs b/PersistentKSPParticleEmitter.cs index 8dc4426..63e8eb0 100644 --- a/PersistentKSPParticleEmitter.cs +++ b/PersistentKSPParticleEmitter.cs @@ -72,6 +72,8 @@ public class PersistentKSPParticleEmitter public float logarithmicGrow; + public float linearGrow; + public float sizeClamp = 50; // The initial velocity of the particles will be offset by a random amount @@ -224,6 +226,10 @@ public void EmitterOnUpdate(Vector3 emitterWorldVelocity) (((TimeWarp.fixedDeltaTime * this.logarithmicGrow) / (1 + (particle.startEnergy - particle.energy) * this.logarithmicGrow)) * averageSize); } + if (this.linearGrow != 0.0) + { + particle.size += (float)(TimeWarp.fixedDeltaTime * this.linearGrow * averageSize); + } particle.size = Mathf.Min(particle.size, this.sizeClamp);