示例#1
0
        private void TryInitialize()
        {
            this.RainPS      = (PlaneParticleSystem)null;
            this.ePreThunder = (SoundEmitter)null;
            if (this.lightning != null)
            {
                this.lightning.Dispose();
            }
            this.lightning = (Mesh)null;
            this.trileTops = (TrileInstance[])null;
            this.Visible   = this.Enabled = this.LevelManager.Rainy;
            if (!this.Enabled)
            {
                return;
            }
            this.doThunder = this.LevelManager.Name != "INDUSTRIAL_CITY";
            if (this.Transition == null)
            {
                Vector3 vector3 = this.RainColor.ToVector3();
                PlaneParticleSystemSettings settings = new PlaneParticleSystemSettings();
                settings.Velocity         = (VaryingVector3) new Vector3(0.0f, -50f, 0.0f);
                settings.SpawningSpeed    = 60f;
                settings.ParticleLifetime = 0.6f;
                settings.SpawnBatchSize   = 10;
                PlaneParticleSystemSettings particleSystemSettings1 = settings;
                VaryingVector3 varyingVector3_1 = new VaryingVector3();
                varyingVector3_1.Function = RainHost.RainScaling;
                VaryingVector3 varyingVector3_2 = varyingVector3_1;
                particleSystemSettings1.SizeBirth = varyingVector3_2;
                settings.FadeOutDuration          = 0.1f;
                PlaneParticleSystemSettings particleSystemSettings2 = settings;
                VaryingColor varyingColor1 = new VaryingColor();
                varyingColor1.Base      = this.RainColor;
                varyingColor1.Variation = new Color(0, 0, 0, 24);
                VaryingColor varyingColor2 = varyingColor1;
                particleSystemSettings2.ColorLife = varyingColor2;
                settings.ColorDeath               = (VaryingColor) new Color(vector3.X, vector3.Y, vector3.Z, 0.0f);
                settings.ColorBirth               = (VaryingColor) new Color(vector3.X, vector3.Y, vector3.Z, 0.0f);
                settings.Texture                  = this.CMProvider.Global.Load <Texture2D>("Other Textures/rain/rain");
                settings.BlendingMode             = BlendingMode.Alphablending;
                settings.Billboarding             = true;
                settings.NoLightDraw              = true;
                this.PlaneSystems.Add(this.RainPS = new PlaneParticleSystem(this.Game, 500, settings));
                for (int index = 0; index < 75; ++index)
                {
                    this.PlaneSystems.RainSplash(Vector3.Zero).FadeOutAndDie(0.0f);
                }
            }
            ContentManager contentManager = this.LevelManager.Name == null ? this.CMProvider.Global : this.CMProvider.CurrentLevel;

            this.lightning = new Mesh()
            {
                Effect  = (BaseEffect) new DefaultEffect.Textured(),
                Texture = (Dirtyable <Texture>)((Texture)this.CMProvider.Global.Load <Texture2D>("Other Textures/rain/lightning_a"))
            };
            this.lightning.AddFace(Vector3.One * new Vector3(16f, 32f, 16f), Vector3.Zero, FaceOrientation.Front, true, true);
            if (this.lightningSounds == null)
            {
                this.lightningSounds = new SoundEffect[4]
                {
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/Thunder1"),
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/Thunder2"),
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/Thunder3"),
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/Thunder4")
                }
            }
            ;
            if (this.thunderDistant == null)
            {
                this.thunderDistant = new SoundEffect[3]
                {
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/ThunderDistant01"),
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/ThunderDistant02"),
                    contentManager.Load <SoundEffect>("Sounds/Graveyard/ThunderDistant03")
                }
            }
            ;
            if (this.sPreThunder == null)
            {
                this.sPreThunder = contentManager.Load <SoundEffect>("Sounds/Graveyard/ThunderRumble");
            }
            this.trileTops = Enumerable.ToArray <TrileInstance>(Enumerable.Where <TrileInstance>((IEnumerable <TrileInstance>) this.LevelManager.Triles.Values, (Func <TrileInstance, bool>)(x =>
            {
                if (x.Enabled && !x.Trile.Immaterial && !ActorTypeExtensions.IsClimbable(x.Trile.ActorSettings.Type) && (x.Trile.Geometry == null || !x.Trile.Geometry.Empty || x.Trile.Faces[FaceOrientation.Front] != CollisionType.None))
                {
                    return(this.NoTop(x));
                }
                else
                {
                    return(false);
                }
            })));
            this.flashIn   = TimeSpan.FromSeconds((double)RandomHelper.Between(4.0, 6.0));
            this.distantIn = TimeSpan.FromSeconds((double)RandomHelper.Between(3.0, 6.0));
        }
示例#2
0
文件: RainHost.cs 项目: tanis2000/FEZ
 private void TryInitialize()
 {
   this.RainPS = (PlaneParticleSystem) null;
   this.ePreThunder = (SoundEmitter) null;
   if (this.lightning != null)
     this.lightning.Dispose();
   this.lightning = (Mesh) null;
   this.trileTops = (TrileInstance[]) null;
   this.Visible = this.Enabled = this.LevelManager.Rainy;
   if (!this.Enabled)
     return;
   this.doThunder = this.LevelManager.Name != "INDUSTRIAL_CITY";
   if (this.Transition == null)
   {
     Vector3 vector3 = this.RainColor.ToVector3();
     PlaneParticleSystemSettings settings = new PlaneParticleSystemSettings();
     settings.Velocity = (VaryingVector3) new Vector3(0.0f, -50f, 0.0f);
     settings.SpawningSpeed = 60f;
     settings.ParticleLifetime = 0.6f;
     settings.SpawnBatchSize = 10;
     PlaneParticleSystemSettings particleSystemSettings1 = settings;
     VaryingVector3 varyingVector3_1 = new VaryingVector3();
     varyingVector3_1.Function = RainHost.RainScaling;
     VaryingVector3 varyingVector3_2 = varyingVector3_1;
     particleSystemSettings1.SizeBirth = varyingVector3_2;
     settings.FadeOutDuration = 0.1f;
     PlaneParticleSystemSettings particleSystemSettings2 = settings;
     VaryingColor varyingColor1 = new VaryingColor();
     varyingColor1.Base = this.RainColor;
     varyingColor1.Variation = new Color(0, 0, 0, 24);
     VaryingColor varyingColor2 = varyingColor1;
     particleSystemSettings2.ColorLife = varyingColor2;
     settings.ColorDeath = (VaryingColor) new Color(vector3.X, vector3.Y, vector3.Z, 0.0f);
     settings.ColorBirth = (VaryingColor) new Color(vector3.X, vector3.Y, vector3.Z, 0.0f);
     settings.Texture = this.CMProvider.Global.Load<Texture2D>("Other Textures/rain/rain");
     settings.BlendingMode = BlendingMode.Alphablending;
     settings.Billboarding = true;
     settings.NoLightDraw = true;
     this.PlaneSystems.Add(this.RainPS = new PlaneParticleSystem(this.Game, 500, settings));
     for (int index = 0; index < 75; ++index)
       this.PlaneSystems.RainSplash(Vector3.Zero).FadeOutAndDie(0.0f);
   }
   ContentManager contentManager = this.LevelManager.Name == null ? this.CMProvider.Global : this.CMProvider.CurrentLevel;
   this.lightning = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.Global.Load<Texture2D>("Other Textures/rain/lightning_a"))
   };
   this.lightning.AddFace(Vector3.One * new Vector3(16f, 32f, 16f), Vector3.Zero, FaceOrientation.Front, true, true);
   if (this.lightningSounds == null)
     this.lightningSounds = new SoundEffect[4]
     {
       contentManager.Load<SoundEffect>("Sounds/Graveyard/Thunder1"),
       contentManager.Load<SoundEffect>("Sounds/Graveyard/Thunder2"),
       contentManager.Load<SoundEffect>("Sounds/Graveyard/Thunder3"),
       contentManager.Load<SoundEffect>("Sounds/Graveyard/Thunder4")
     };
   if (this.thunderDistant == null)
     this.thunderDistant = new SoundEffect[3]
     {
       contentManager.Load<SoundEffect>("Sounds/Graveyard/ThunderDistant01"),
       contentManager.Load<SoundEffect>("Sounds/Graveyard/ThunderDistant02"),
       contentManager.Load<SoundEffect>("Sounds/Graveyard/ThunderDistant03")
     };
   if (this.sPreThunder == null)
     this.sPreThunder = contentManager.Load<SoundEffect>("Sounds/Graveyard/ThunderRumble");
   this.trileTops = Enumerable.ToArray<TrileInstance>(Enumerable.Where<TrileInstance>((IEnumerable<TrileInstance>) this.LevelManager.Triles.Values, (Func<TrileInstance, bool>) (x =>
   {
     if (x.Enabled && !x.Trile.Immaterial && !ActorTypeExtensions.IsClimbable(x.Trile.ActorSettings.Type) && (x.Trile.Geometry == null || !x.Trile.Geometry.Empty || x.Trile.Faces[FaceOrientation.Front] != CollisionType.None))
       return this.NoTop(x);
     else
       return false;
   })));
   this.flashIn = TimeSpan.FromSeconds((double) RandomHelper.Between(4.0, 6.0));
   this.distantIn = TimeSpan.FromSeconds((double) RandomHelper.Between(3.0, 6.0));
 }
示例#3
0
 private void CreateParticleSystems()
 {
   if (this.LevelManager.WaterType == LiquidType.None)
     return;
   LiquidColorScheme liquidColorScheme = LiquidHost.ColorSchemes[this.LevelManager.WaterType];
   switch (this.LevelManager.WaterType)
   {
     case LiquidType.Lava:
     case LiquidType.Sewer:
       Color color = new Color(liquidColorScheme.SubmergedFoam.ToVector3() * 0.5f);
       PlaneParticleSystemSettings particleSystemSettings1 = new PlaneParticleSystemSettings();
       particleSystemSettings1.Velocity = (VaryingVector3) new Vector3(0.0f, 0.15f, 0.0f);
       particleSystemSettings1.Gravity = new Vector3(0.0f, 0.0f, 0.0f);
       particleSystemSettings1.SpawningSpeed = 50f;
       particleSystemSettings1.ParticleLifetime = 2.2f;
       particleSystemSettings1.SpawnBatchSize = 1;
       PlaneParticleSystemSettings particleSystemSettings2 = particleSystemSettings1;
       VaryingVector3 varyingVector3_1 = new VaryingVector3();
       varyingVector3_1.Base = new Vector3(1.0 / 16.0);
       varyingVector3_1.Variation = new Vector3(1.0 / 16.0);
       varyingVector3_1.Function = VaryingVector3.Uniform;
       VaryingVector3 varyingVector3_2 = varyingVector3_1;
       particleSystemSettings2.SizeBirth = varyingVector3_2;
       PlaneParticleSystemSettings particleSystemSettings3 = particleSystemSettings1;
       VaryingVector3 varyingVector3_3 = new VaryingVector3();
       varyingVector3_3.Base = new Vector3(0.125f);
       varyingVector3_3.Variation = new Vector3(0.125f);
       varyingVector3_3.Function = VaryingVector3.Uniform;
       VaryingVector3 varyingVector3_4 = varyingVector3_3;
       particleSystemSettings3.SizeDeath = varyingVector3_4;
       particleSystemSettings1.FadeInDuration = 0.1f;
       particleSystemSettings1.FadeOutDuration = 0.1f;
       PlaneParticleSystemSettings particleSystemSettings4 = particleSystemSettings1;
       VaryingColor varyingColor1 = new VaryingColor();
       varyingColor1.Base = color;
       varyingColor1.Variation = color;
       varyingColor1.Function = VaryingColor.Uniform;
       VaryingColor varyingColor2 = varyingColor1;
       particleSystemSettings4.ColorLife = varyingColor2;
       particleSystemSettings1.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/white_square");
       particleSystemSettings1.BlendingMode = BlendingMode.Alphablending;
       particleSystemSettings1.Billboarding = true;
       PlaneParticleSystemSettings settings1 = particleSystemSettings1;
       IPlaneParticleSystems planeParticleSystems1 = this.PlaneParticleSystems;
       LiquidHost liquidHost1 = this;
       PlaneParticleSystem planeParticleSystem1 = new PlaneParticleSystem(this.Game, 100, settings1);
       planeParticleSystem1.DrawOrder = this.DrawOrder + 1;
       PlaneParticleSystem planeParticleSystem2;
       PlaneParticleSystem planeParticleSystem3 = planeParticleSystem2 = planeParticleSystem1;
       liquidHost1.BubbleSystem = planeParticleSystem2;
       PlaneParticleSystem system1 = planeParticleSystem3;
       planeParticleSystems1.Add(system1);
       if (this.LevelManager.WaterType == LiquidType.Sewer)
         break;
       PlaneParticleSystemSettings particleSystemSettings5 = new PlaneParticleSystemSettings();
       PlaneParticleSystemSettings particleSystemSettings6 = particleSystemSettings5;
       VaryingVector3 varyingVector3_5 = new VaryingVector3();
       varyingVector3_5.Variation = new Vector3(1f);
       VaryingVector3 varyingVector3_6 = varyingVector3_5;
       particleSystemSettings6.Velocity = varyingVector3_6;
       particleSystemSettings5.Gravity = new Vector3(0.0f, 0.01f, 0.0f);
       particleSystemSettings5.SpawningSpeed = 40f;
       particleSystemSettings5.ParticleLifetime = 2f;
       particleSystemSettings5.SpawnBatchSize = 1;
       particleSystemSettings5.RandomizeSpawnTime = true;
       PlaneParticleSystemSettings particleSystemSettings7 = particleSystemSettings5;
       VaryingVector3 varyingVector3_7 = new VaryingVector3();
       varyingVector3_7.Function = LiquidHost.EmberScaling;
       VaryingVector3 varyingVector3_8 = varyingVector3_7;
       particleSystemSettings7.SizeBirth = varyingVector3_8;
       particleSystemSettings5.FadeInDuration = 0.15f;
       particleSystemSettings5.FadeOutDuration = 0.4f;
       particleSystemSettings5.ColorBirth = (VaryingColor) new Color((int) byte.MaxValue, (int) byte.MaxValue, (int) byte.MaxValue, 0);
       particleSystemSettings5.ColorLife.Base = new Color((int) byte.MaxValue, 16, 16);
       particleSystemSettings5.ColorLife.Variation = new Color(0, 32, 32);
       particleSystemSettings5.ColorLife.Function = VaryingColor.Uniform;
       particleSystemSettings5.ColorDeath = (VaryingColor) new Color(0, 0, 0, 32);
       particleSystemSettings5.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/white_square");
       particleSystemSettings5.BlendingMode = BlendingMode.Alphablending;
       particleSystemSettings5.Billboarding = true;
       PlaneParticleSystemSettings settings2 = particleSystemSettings5;
       IPlaneParticleSystems planeParticleSystems2 = this.PlaneParticleSystems;
       LiquidHost liquidHost2 = this;
       PlaneParticleSystem planeParticleSystem4 = new PlaneParticleSystem(this.Game, 50, settings2);
       planeParticleSystem4.DrawOrder = this.DrawOrder + 1;
       PlaneParticleSystem planeParticleSystem5;
       PlaneParticleSystem planeParticleSystem6 = planeParticleSystem5 = planeParticleSystem4;
       liquidHost2.EmbersSystem = planeParticleSystem5;
       PlaneParticleSystem system2 = planeParticleSystem6;
       planeParticleSystems2.Add(system2);
       break;
   }
 }