public PersistentKSPParticleEmitter( GameObject go, KSPParticleEmitter pe, KSPParticleEmitter templateKspParticleEmitter) { this.go = go; this.pe = pe; scale1DBase = templateKspParticleEmitter.shape1D; scale2DBase = templateKspParticleEmitter.shape2D; scale3DBase = templateKspParticleEmitter.shape3D; minEmissionBase = templateKspParticleEmitter.minEmission; maxEmissionBase = templateKspParticleEmitter.maxEmission; minEnergyBase = templateKspParticleEmitter.minEnergy; maxEnergyBase = templateKspParticleEmitter.maxEnergy; minSizeBase = templateKspParticleEmitter.minSize; maxSizeBase = templateKspParticleEmitter.maxSize; localVelocityBase = templateKspParticleEmitter.localVelocity; worldVelocityBase = templateKspParticleEmitter.worldVelocity; forceBase = templateKspParticleEmitter.force; PersistentEmitterManager.Add(this); }
public PersistentKSPShurikenEmitter( GameObject go, ParticleSystem pe, ParticleSystemRenderer pr, KSPParticleEmitter templateKspParticleEmitter) { this.go = go; this.pe = pe; this.pr = pr; // TODO That s what we need to also save to emit manually with proper values // float emitterVelocityScale // Vector3 rndVelocity // bool rndRotation // float angularVelocity // float rndAngularVelocity //templateKspParticleEmitter.ve shape = templateKspParticleEmitter.shape; scale1DBase = shape1D = templateKspParticleEmitter.shape1D; scale2DBase = shape2D = templateKspParticleEmitter.shape2D; scale3DBase = shape3D = templateKspParticleEmitter.shape3D; minEmissionBase = minEmission = templateKspParticleEmitter.minEmission; maxEmissionBase = maxEmission = templateKspParticleEmitter.maxEmission; minEnergyBase = minEnergy = templateKspParticleEmitter.minEnergy; maxEnergyBase = maxEnergy = templateKspParticleEmitter.maxEnergy; minSizeBase = minSize = templateKspParticleEmitter.minSize; maxSizeBase = maxSize = templateKspParticleEmitter.maxSize; localVelocityBase = localVelocity = templateKspParticleEmitter.localVelocity; worldVelocityBase = worldVelocity = templateKspParticleEmitter.worldVelocity; forceBase = force = templateKspParticleEmitter.force; rndForce = templateKspParticleEmitter.rndForce; rndVelocity = templateKspParticleEmitter.rndVelocity; rndRotation = templateKspParticleEmitter.rndRotation; angularVelocity = templateKspParticleEmitter.angularVelocity; rndAngularVelocity = templateKspParticleEmitter.rndAngularVelocity; // Unity sure love its strange way of using struct (this actually works because each properties of the struct does magic) ParticleSystem.ForceOverLifetimeModule fol = pe.forceOverLifetime; fol.enabled = force.sqrMagnitude > 0 || rndForce.sqrMagnitude > 0; fol.x = new ParticleSystem.MinMaxCurve(forceBase.x, forceBase.x + rndForce.x); fol.y = new ParticleSystem.MinMaxCurve(forceBase.y, forceBase.y + rndForce.y); fol.z = new ParticleSystem.MinMaxCurve(forceBase.z, forceBase.z + rndForce.z); color = templateKspParticleEmitter.color; saturationMult = 1; brightnessMult = 1; alphaMult = 1; PersistentEmitterManager.Add(this); }