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 CreateScanEffect() /// <summary> /// Public call which allows the creation of a dust puff from anywhere in game. /// </summary> /// <param name="position">Where the emitter 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 CreateDustPuff(Vector3 position, float radius, float density) { DustPuff dustPuff = NewFoo <DustPuff>(dustPuffs); dustPuff.position = position; dustPuff.radius = radius; dustPuff.dustDuration = 0.1f; dustPuff.emitter.Position = position; dustPuff.emitter.ResetPreviousPosition(); dustPuff.emitter.PositionJitter = radius * 0.7f; // Random offset for each particle. dustPuff.emitter.StartRadius = radius * 0.4f; dustPuff.emitter.EndRadius = radius; dustPuff.emitter.EmissionRate = density; dustPuff.emitter.Active = true; dustPuff.emitter.Emitting = true; dustPuff.startTime = Time.GameTimeTotalSeconds; } // end of ExplosionManager CreateDustPuff()