Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        private static RoverScanEffect NewRoverScanEffect()
        {
            RoverScanEffect ret = null;

            if (roverEffects.Count > 0)
            {
                ret = roverEffects[roverEffects.Count - 1];
                roverEffects.RemoveAt(roverEffects.Count - 1);
            }
            else
            {
                ret = new RoverScanEffect();
            }
            return(ret);
        }
Ejemplo n.º 3
0
        }   // end of ExplosionManager CreateScanEffect()

        /// <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 CreateRoverScanEffect(Vector3 position, float radius)
        {
            RoverScanEffect e = NewRoverScanEffect();

            e.position = position;
            e.radius   = radius;

            e.scanSmokeDuration  = 0.7f;
            e.scanSmoke          = new RoverScanSmokeEmitter(InGame.inGame.ParticleSystemManager);
            e.scanSmoke.Position = position;
            e.scanSmoke.ResetPreviousPosition();
            e.scanSmoke.PositionJitter  = 0.0f; // Random offset for each particle.
            e.scanSmoke.StartRadius     = radius * 0.02f;
            e.scanSmoke.EndRadius       = radius * 1.333f;
            e.scanSmoke.EmissionRate    = 6.0f;
            e.scanSmoke.Gravity         = new Vector3(0.0f, 0.0f, 100.0f);
            e.scanSmoke.MinLifetime     = 4.0f;
            e.scanSmoke.MaxLifetime     = 4.0f;
            e.scanSmoke.Color           = new Vector4(0.3f, 0.6f, 0.5f, 1.0f);
            e.scanSmoke.MaxRotationRate = 0.0f;
            e.scanSmoke.Active          = true;

            e.scanExplosionDuration = 0.7f;
            e.scanExplode           = new RoverScanExplosionEmitter(InGame.inGame.ParticleSystemManager);
            e.scanExplode.Position  = position;
            e.scanExplode.ResetPreviousPosition();
            e.scanExplode.PositionJitter  = 0.0f;  // Random offset for each particle.
            e.scanExplode.StartRadius     = radius * 0.02f;
            e.scanExplode.EndRadius       = radius;
            e.scanExplode.EmissionRate    = 4.0f;
            e.scanExplode.Gravity         = new Vector3(0.0f, 0.0f, 100.0f);
            e.scanExplode.MinLifetime     = 3.0f;
            e.scanExplode.MaxLifetime     = 3.0f;
            e.scanExplode.MaxRotationRate = 0.0f;
            e.scanExplode.Color           = new Vector4(0.3f, 0.6f, 0.5f, 1.0f);
            e.scanExplode.Active          = true;

            e.startTime = Time.GameTimeTotalSeconds;

            e.scanSmoke.AddToManager();
            e.scanExplode.AddToManager();

            fooList.Add(e);
        }   // end of ExplosionManager CreateRoverScanEffect()