private static void Nuke(BaseFoo foo) { if (foo is DustPuff) { DustPuff puff = foo as DustPuff; puff.Emitter.RemoveFromManager(); dustPuffs.Add(puff); } else if (foo is SteamPuff) { SteamPuff puff = foo as SteamPuff; puff.Emitter.RemoveFromManager(); steamPuffs.Add(puff); } else if (foo is Explosion) { Explosion explosion = foo as Explosion; explosion.fireball.RemoveFromManager(); explosion.smoke.RemoveFromManager(); explosions.Add(explosion); } else if (foo is BeamExplosion) { BeamExplosion beamExplosion = foo as BeamExplosion; beamExplosion.beamFireball.RemoveFromManager(); beamExplosion.beamSmoke.RemoveFromManager(); beamExplosions.Add(beamExplosion); } else if (foo is ScanVFX) { ScanVFX scanVFX = foo as ScanVFX; scanVFX.scanExplode.RemoveFromManager(); scanVFX.scanSmoke.RemoveFromManager(); scanVFXs.Add(scanVFX); } else if (foo is RoverScanEffect) { RoverScanEffect roverEffect = foo as RoverScanEffect; roverEffect.scanExplode.RemoveFromManager(); roverEffect.scanSmoke.RemoveFromManager(); roverEffects.Add(roverEffect); } else if (foo is InspectVFX) { InspectVFX inspect = foo as InspectVFX; inspect.inspectExplode.RemoveFromManager(); inspect.inspectSmoke.RemoveFromManager(); inspectVFXs.Add(inspect); } }
} // end of ExplosionManager CreateDustPuff() /// <summary> /// Public call which allows the creation of a steam puff from anywhere in game. /// </summary> /// <param name="position">Where the steam puff occurs.</param> /// <param name="radius">Approximate size of the puff.</param> /// <param name="density">Acts as a multiplier on the emission rate to create more or less dense puffs.</param> public static void CreateSteamPuff(Vector3 position, float density, float scale) { SteamPuff steamPuff = NewFoo <SteamPuff>(steamPuffs); steamPuff.position = position; steamPuff.emitter.Position = position; steamPuff.emitter.ResetPreviousPosition(); steamPuff.emitter.Scale = scale; steamPuff.emitter.PositionJitter = steamPuff.emitter.StartRadius * scale * 0.5f; // Random offset for each particle. steamPuff.emitter.EmissionRate = 100.0f * density; steamPuff.emitter.Active = true; steamPuff.emitter.Emitting = true; steamPuff.startTime = Time.GameTimeTotalSeconds; } // end of ExplosionManager CreateSteamPuff()