Skip to content

Commit

Permalink
More old code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
sarbian committed Mar 10, 2018
1 parent fac2df2 commit 9e4f01a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 93 deletions.
84 changes: 3 additions & 81 deletions PersistentEmitterManager.cs
Expand Up @@ -33,15 +33,12 @@
internal class PersistentEmitterManager : MonoBehaviour
{
//public static PersistentEmitterManager Instance { get; private set; }

public static List<PersistentKSPParticleEmitter> persistentEmitters;

public static List<PersistentKSPShurikenEmitter> persistentEmittersShuriken;

private void Awake()
{
//PersistentEmitterManager.Instance = this;

persistentEmitters = new List<PersistentKSPParticleEmitter>();
persistentEmittersShuriken = new List<PersistentKSPShurikenEmitter>();

GameEvents.onGameSceneLoadRequested.Add(OnSceneChange);
Expand All @@ -52,29 +49,13 @@ private void OnDestroy()
//Print("OnDestroy");
GameEvents.onGameSceneLoadRequested.Remove(OnSceneChange);
}

public static void Add(PersistentKSPParticleEmitter pkpe)
{
persistentEmitters.Add(pkpe);
EffectBehaviour.AddParticleEmitter(pkpe.pe);

//print("[SmokeScreen PersistentEmitterManager]: Added 1 PersistentKSPParticleEmitter. Count = " + persistentEmitters.Count);
}


public static void Add(PersistentKSPShurikenEmitter pkpe)
{
persistentEmittersShuriken.Add(pkpe);
FloatingOrigin.RegisterParticleSystem(pkpe.pe);
}

public static void Remove(PersistentKSPParticleEmitter pkpe)
{
EffectBehaviour.RemoveParticleEmitter(pkpe.pe);
persistentEmitters.Remove(pkpe);

//print("[SmokeScreen PersistentEmitterManager]: Removed 1 PersistentKSPParticleEmitter. Count = " + persistentEmitters.Count);
}


public static void Remove(PersistentKSPShurikenEmitter pkpe)
{
FloatingOrigin.UnregisterParticleSystem(pkpe.pe);
Expand All @@ -85,20 +66,6 @@ public static void Remove(PersistentKSPShurikenEmitter pkpe)

private void OnSceneChange(GameScenes scene)
{
//Print("OnSceneChange");
for (int i = 0; i < persistentEmitters.Count; i++)
{
EffectBehaviour.RemoveParticleEmitter(persistentEmitters[i].pe);
//Print(" go is " + persistentEmitters[i].go);

//Destroy(persistentEmitters[i].go);
if (persistentEmitters[i].go != null && persistentEmitters[i].go.transform.parent != null)
{
Destroy(persistentEmitters[i].go);
}
}
persistentEmitters.Clear();

for (int i = 0; i < persistentEmittersShuriken.Count; i++)
{
FloatingOrigin.UnregisterParticleSystem(persistentEmittersShuriken[i].pe);
Expand All @@ -114,51 +81,6 @@ private void OnSceneChange(GameScenes scene)

public void FixedUpdate()
{
//var persistentEmittersCopy = persistentEmitters.ToArray();
for (int i = 0; i < persistentEmitters.Count; i++)
{
PersistentKSPParticleEmitter em = persistentEmitters[i];
if (em.endTime > 0 && em.endTime < Time.fixedTime)
{
em.EmissionStop();
}

#warning Clearly something is not OK because detached emmiter can generate errors like :
// NullReferenceException
//at(wrapper managed - to - native) UnityEngine.ParticleEmitter:get_particles()
//at PersistentKSPParticleEmitter.EmitterOnUpdate(Vector3 emitterWorldVelocity)[0x00000] in < filename unknown >:0
//at ModelMultiParticlePersistFX.FixedUpdate()[0x00000] in < filename unknown >:0


// A more robust logic need to be put in place for when the PersistentKSPParticleEmitter is detached but the KSPParticleEmitter is destroyed.


// If the gameObject is null clean up the emitter
if (em.go == null || em.pe == null || em.pe.pe == null)
{
//Print("FixedUpdate cleaning null go");
Remove(em);
// Make sure
Destroy(em.go);
i--;
}

// if not and the transform parent is null ( Emitter detached from part so the particle are not removed instantly )
// then the emitter won't be updated by the effect FixedUpdate Call. So update it here
else if (em.go.transform.parent == null)
{
em.EmitterOnUpdate(Vector3.zero);

if (em.pe.pe.particleCount == 0)
{
//Print("FixedUpdate cleaning parent go");
Remove(em);
Destroy(em.go);
i--;
}
}
}

for (int i = 0; i < persistentEmittersShuriken.Count; i++)
{
PersistentKSPShurikenEmitter em = persistentEmittersShuriken[i];
Expand Down
12 changes: 0 additions & 12 deletions SmokeScreenUI.cs
Expand Up @@ -102,18 +102,6 @@ private void windowGUI(int ID)

GUILayout.Space(10);

GUILayout.Label("Open ModelMultiParticlePersistFX UI :");

foreach (var mmFX in ModelMultiParticlePersistFX.List)
{
if (mmFX.hostPart != null)
{
mmFX.showUI = GUILayout.Toggle(
mmFX.showUI,
mmFX.hostPart.name + " " + mmFX.effectName + " " + mmFX.instanceName);
}
}

GUILayout.Label("Open ModelMultiShurikenPersistFX UI :");

foreach (var mmFX in ModelMultiShurikenPersistFX.List)
Expand Down

0 comments on commit 9e4f01a

Please sign in to comment.