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); } }
private static InspectVFX NewInspectEffect() { InspectVFX ret = null; if (inspectVFXs.Count > 0) { ret = inspectVFXs[inspectVFXs.Count - 1]; inspectVFXs.RemoveAt(inspectVFXs.Count - 1); } else { ret = new InspectVFX(); } return(ret); }
} // end of ExplosionManager CreateRoverScanEffect() /// <summary> /// Public call which allows the creation of an scan effect from anywhere in game. /// </summary> /// <param name="position">Where the explosion occurs.</param> /// <param name="radius">Approximate size of the explosion.</param> public static void CreateInspectEffect(Vector3 position, float radius) { InspectVFX e = NewInspectEffect(); e.position = position; e.radius = radius; e.inspectSmokeDuration = 0.9f; e.inspectSmoke = new InspectSmokeEmitter(InGame.inGame.ParticleSystemManager); e.inspectSmoke.Position = position; e.inspectSmoke.ResetPreviousPosition(); e.inspectSmoke.PositionJitter = 0.2f; // Random offset for each particle. e.inspectSmoke.StartRadius = radius * 0.5f; e.inspectSmoke.EndRadius = radius * 1.3f; e.inspectSmoke.EmissionRate = 20.0f; e.inspectSmoke.MaxRotationRate = 0.1f; e.inspectSmoke.Color = new Vector4(1.0f, 0.8f, 0.6f, 0.4f); e.inspectSmoke.Active = true; e.inspectExplosionDuration = 0.4f; e.inspectExplode = new InspectExplosionEmitter(InGame.inGame.ParticleSystemManager); e.inspectExplode.Position = position; e.inspectExplode.ResetPreviousPosition(); e.inspectExplode.PositionJitter = 0.0f; // Random offset for each particle. e.inspectExplode.StartRadius = radius * 0.2f; e.inspectExplode.EndRadius = radius * 1.3f; e.inspectExplode.MaxRotationRate = 0.1f; e.inspectExplode.EmissionRate = 30.0f; e.inspectExplode.MinLifetime = 0.1f; e.inspectExplode.MaxLifetime = 0.3f; e.inspectExplode.Color = new Vector4(1.0f, 1.0f, 1.0f, 1.0f); e.inspectExplode.Active = true; e.startTime = Time.GameTimeTotalSeconds; e.inspectSmoke.AddToManager(); e.inspectExplode.AddToManager(); fooList.Add(e); } // end of ExplosionManager CreateScanEffect()