Beispiel #1
0
 public PlaneParticleSystem(Game game, int maximumCount, PlaneParticleSystemSettings settings)
     : base(game)
 {
     this.Settings  = settings;
     this.particles = new Pool <PlaneParticleSystem.Particle>(maximumCount);
     this.PrepareNextSpawn();
 }
Beispiel #2
0
 private void InitializeRgbGate()
 {
   IPlaneParticleSystems planeParticleSystems = this.PlaneParticleSystems;
   GateWarp gateWarp = this;
   Game game = this.Game;
   int maximumCount = 400;
   PlaneParticleSystemSettings particleSystemSettings = new PlaneParticleSystemSettings();
   particleSystemSettings.SpawnVolume = new BoundingBox()
   {
     Min = this.GateAo.Position + new Vector3(-3.25f, -6f, -3.25f),
     Max = this.GateAo.Position + new Vector3(3.25f, -2f, 3.25f)
   };
   particleSystemSettings.Velocity.Base = new Vector3(0.0f, 0.6f, 0.0f);
   particleSystemSettings.Velocity.Variation = new Vector3(0.0f, 0.1f, 0.1f);
   particleSystemSettings.SpawningSpeed = 7f;
   particleSystemSettings.ParticleLifetime = 6f;
   particleSystemSettings.Acceleration = 0.375f;
   particleSystemSettings.SizeBirth = (VaryingVector3) new Vector3(0.25f, 0.25f, 0.25f);
   particleSystemSettings.ColorBirth = (VaryingColor) Color.Black;
   particleSystemSettings.ColorLife.Base = new Color(0.5f, 0.5f, 0.5f, 1f);
   particleSystemSettings.ColorLife.Variation = new Color(0.5f, 0.5f, 0.5f, 1f);
   particleSystemSettings.ColorDeath = (VaryingColor) Color.Black;
   particleSystemSettings.FullBright = true;
   particleSystemSettings.RandomizeSpawnTime = true;
   particleSystemSettings.Billboarding = true;
   particleSystemSettings.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/dust_particle");
   particleSystemSettings.BlendingMode = BlendingMode.Additive;
   PlaneParticleSystemSettings settings = particleSystemSettings;
   PlaneParticleSystem planeParticleSystem1;
   PlaneParticleSystem planeParticleSystem2 = planeParticleSystem1 = new PlaneParticleSystem(game, maximumCount, settings);
   gateWarp.particles = planeParticleSystem1;
   PlaneParticleSystem system = planeParticleSystem2;
   planeParticleSystems.Add(system);
   this.rgbPlanes = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     DepthWrites = false,
     AlwaysOnTop = true,
     SamplerState = SamplerState.LinearClamp,
     Blending = new BlendingMode?(BlendingMode.Additive),
     Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures/rgb_gradient"))
   };
   this.rgbPlanes.AddFace(new Vector3(1f, 4.5f, 1f), new Vector3(0.0f, 3f, 0.0f), FaceOrientation.Front, true).Material = new Material()
   {
     Diffuse = Vector3.Zero,
     Opacity = 0.0f
   };
   this.rgbPlanes.AddFace(new Vector3(1f, 4.5f, 1f), new Vector3(0.0f, 3f, 0.0f), FaceOrientation.Front, true).Material = new Material()
   {
     Diffuse = Vector3.Zero,
     Opacity = 0.0f
   };
   this.rgbPlanes.AddFace(new Vector3(1f, 4.5f, 1f), new Vector3(0.0f, 3f, 0.0f), FaceOrientation.Front, true).Material = new Material()
   {
     Diffuse = Vector3.Zero,
     Opacity = 0.0f
   };
 }
Beispiel #3
0
 public void Initialize(PlaneParticleSystem system)
 {
     this.System        = system;
     this.Settings      = system.Settings;
     this.LifeColor     = this.Settings.ColorLife.Evaluate().ToVector4();
     this.SpawnColor    = this.Settings.ColorBirth == null ? new Vector4(FezMath.XYZ(this.LifeColor), 0.0f) : this.Settings.ColorBirth.Evaluate().ToVector4();
     this.DieColor      = this.Settings.ColorDeath == null ? new Vector4(FezMath.XYZ(this.LifeColor), 0.0f) : this.Settings.ColorDeath.Evaluate().ToVector4();
     this.Scale         = this.SizeBirth = this.Settings.SizeBirth.Evaluate();
     this.SizeDeath     = this.Settings.SizeDeath.Base == new Vector3(-1f) ? this.SizeBirth : this.Settings.SizeDeath.Evaluate();
     this.Position      = new Vector3(RandomHelper.Between((double)this.Settings.SpawnVolume.Min.X, (double)this.Settings.SpawnVolume.Max.X), RandomHelper.Between((double)this.Settings.SpawnVolume.Min.Y, (double)this.Settings.SpawnVolume.Max.Y), RandomHelper.Between((double)this.Settings.SpawnVolume.Min.Z, (double)this.Settings.SpawnVolume.Max.Z));
     this.Velocity      = !this.Settings.EnergySource.HasValue ? this.Settings.Velocity.Evaluate() : Vector3.Normalize(this.Position - this.Settings.EnergySource.Value) * this.Settings.Velocity.Evaluate().Length();
     this.GravityEffect = Vector3.Zero;
     this.AgeSeconds    = 0.0f;
     this.DeathProvoked = false;
     this.Phi           = this.Settings.Orientation.HasValue ? FezMath.ToPhi(this.Settings.Orientation.Value) : FezMath.ToPhi(this.Camera.Viewpoint);
     this.System.Geometry.Instances[this.InstanceIndex] = new Matrix(this.Position.X, this.Position.Y, this.Position.Z, this.Phi, this.SizeBirth.X, this.SizeBirth.Y, this.SizeBirth.Z, 0.0f, this.SpawnColor.X, this.SpawnColor.Y, this.SpawnColor.Z, this.SpawnColor.W, 0.0f, 0.0f, 0.0f, 0.0f);
 }
Beispiel #4
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));
 }
Beispiel #5
0
 public void Initialize(PlaneParticleSystem system)
 {
   this.System = system;
   this.Settings = system.Settings;
   this.LifeColor = this.Settings.ColorLife.Evaluate().ToVector4();
   this.SpawnColor = this.Settings.ColorBirth == null ? new Vector4(FezMath.XYZ(this.LifeColor), 0.0f) : this.Settings.ColorBirth.Evaluate().ToVector4();
   this.DieColor = this.Settings.ColorDeath == null ? new Vector4(FezMath.XYZ(this.LifeColor), 0.0f) : this.Settings.ColorDeath.Evaluate().ToVector4();
   this.Scale = this.SizeBirth = this.Settings.SizeBirth.Evaluate();
   this.SizeDeath = this.Settings.SizeDeath.Base == new Vector3(-1f) ? this.SizeBirth : this.Settings.SizeDeath.Evaluate();
   this.Position = new Vector3(RandomHelper.Between((double) this.Settings.SpawnVolume.Min.X, (double) this.Settings.SpawnVolume.Max.X), RandomHelper.Between((double) this.Settings.SpawnVolume.Min.Y, (double) this.Settings.SpawnVolume.Max.Y), RandomHelper.Between((double) this.Settings.SpawnVolume.Min.Z, (double) this.Settings.SpawnVolume.Max.Z));
   this.Velocity = !this.Settings.EnergySource.HasValue ? this.Settings.Velocity.Evaluate() : Vector3.Normalize(this.Position - this.Settings.EnergySource.Value) * this.Settings.Velocity.Evaluate().Length();
   this.GravityEffect = Vector3.Zero;
   this.AgeSeconds = 0.0f;
   this.DeathProvoked = false;
   this.Phi = this.Settings.Orientation.HasValue ? FezMath.ToPhi(this.Settings.Orientation.Value) : FezMath.ToPhi(this.Camera.Viewpoint);
   this.System.Geometry.Instances[this.InstanceIndex] = new Matrix(this.Position.X, this.Position.Y, this.Position.Z, this.Phi, this.SizeBirth.X, this.SizeBirth.Y, this.SizeBirth.Z, 0.0f, this.SpawnColor.X, this.SpawnColor.Y, this.SpawnColor.Z, this.SpawnColor.W, 0.0f, 0.0f, 0.0f, 0.0f);
 }
Beispiel #6
0
 public PlaneParticleSystem(Game game, int maximumCount, PlaneParticleSystemSettings settings)
   : base(game)
 {
   this.Settings = settings;
   this.particles = new Pool<PlaneParticleSystem.Particle>(maximumCount);
   this.PrepareNextSpawn();
 }
Beispiel #7
0
 public override void Initialize()
 {
   base.Initialize();
   ServiceHelper.AddComponent((IGameComponent) (this.Starfield = new StarField(this.Game)
   {
     Opacity = 0.0f,
     HasHorizontalTrails = true,
     FollowCamera = true
   }));
   ServiceHelper.AddComponent((IGameComponent) (this.SfRenderer = new EldersHexahedron.StarfieldRenderer(this.Game, this)));
   this.StatuePlanes = Enumerable.ToArray<BackgroundPlane>(Enumerable.Where<BackgroundPlane>((IEnumerable<BackgroundPlane>) this.LevelManager.BackgroundPlanes.Values, (Func<BackgroundPlane, bool>) (x => x.Id >= 0)));
   this.DealGlassesPlane = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     DepthWrites = false,
     AlwaysOnTop = false,
     Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures" + (this.GameState.SaveData.Finished64 ? "/deal_with_3d" : "/deal_with_it"))),
     SamplerState = SamplerState.PointClamp
   };
   this.DealGlassesPlane.AddFace(new Vector3(1f, 0.25f, 1f), Vector3.Zero, FaceOrientation.Right, true, true);
   ArtObject artObject = this.CMProvider.CurrentLevel.Load<ArtObject>("Art Objects/TINY_CHAPEAUAO");
   int key = IdentifierPool.FirstAvailable<ArtObjectInstance>(this.LevelManager.ArtObjects);
   this.TinyChapeau = new ArtObjectInstance(artObject)
   {
     Id = key
   };
   this.LevelManager.ArtObjects.Add(key, this.TinyChapeau);
   this.TinyChapeau.Initialize();
   this.TinyChapeau.Hidden = true;
   this.TinyChapeau.ArtObject.Group.Position = new Vector3(-0.125f, 0.375f, -0.125f);
   this.TinyChapeau.ArtObject.Group.BakeTransformInstanced<VertexPositionNormalTextureInstance, Matrix>();
   this.BeamMesh = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     DepthWrites = false,
     AlwaysOnTop = false,
     Material = {
       Diffuse = new Vector3(221f, 178f, (float) byte.MaxValue) / (float) byte.MaxValue
     }
   };
   this.BeamMesh.AddFace(new Vector3(1f, 1f, 1f), Vector3.Zero, FaceOrientation.Right, true, true).Texture = (Texture) this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures/VerticalGradient");
   Group group = this.BeamMesh.AddFace(new Vector3(2f, 1f, 2f), Vector3.Zero, FaceOrientation.Right, true, true);
   group.Texture = (Texture) this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures/HorizontalGradient");
   group.Material = new Material()
   {
     Opacity = 0.4f,
     Diffuse = new Vector3(221f, 178f, (float) byte.MaxValue) / (float) byte.MaxValue
   };
   group.Enabled = false;
   this.BeamMask = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     DepthWrites = false,
     AlwaysOnTop = false
   };
   this.BeamMask.AddFace(new Vector3(1f, 1f, 1f), Vector3.Zero, FaceOrientation.Right, true, true);
   this.MatrixMesh = new Mesh()
   {
     Effect = (BaseEffect) new MatrixEffect(),
     DepthWrites = false,
     AlwaysOnTop = false,
     Blending = new BlendingMode?(BlendingMode.Multiply2X)
   };
   this.RaysMesh = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.VertexColored(),
     DepthWrites = false,
     AlwaysOnTop = false,
     Blending = new BlendingMode?(BlendingMode.Alphablending)
   };
   this.FlareMesh = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     DepthWrites = false,
     AlwaysOnTop = false,
     SamplerState = SamplerState.LinearClamp,
     Blending = new BlendingMode?(BlendingMode.Alphablending),
     Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures/flare_alpha"))
   };
   this.FlareMesh.AddFace(new Vector3(1f, 1f, 1f), Vector3.Zero, FaceOrientation.Right, true, true);
   this.TrialRaysMesh = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.VertexColored(),
     Blending = new BlendingMode?(BlendingMode.Additive),
     SamplerState = SamplerState.AnisotropicClamp,
     DepthWrites = false,
     AlwaysOnTop = true
   };
   if (this.GameState.IsTrialMode)
     this.TrialRaysMesh.Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.Global.Load<Texture2D>("Other Textures/smooth_ray"));
   this.TrialFlareMesh = new Mesh()
   {
     Effect = (BaseEffect) new DefaultEffect.Textured(),
     Texture = (Dirtyable<Texture>) ((Texture) this.CMProvider.Global.Load<Texture2D>("Other Textures/flare_alpha")),
     Blending = new BlendingMode?(BlendingMode.Alphablending),
     SamplerState = SamplerState.AnisotropicClamp,
     DepthWrites = false,
     AlwaysOnTop = true
   };
   this.TrialFlareMesh.AddFace(Vector3.One, Vector3.Zero, FaceOrientation.Right, true);
   this.LoadSounds();
   this.AoInstance.Rotation = Quaternion.CreateFromAxisAngle(Vector3.Up, 1.570796f) * Quaternion.CreateFromAxisAngle(Vector3.Right, (float) Math.Asin(Math.Sqrt(2.0) / Math.Sqrt(3.0))) * Quaternion.CreateFromAxisAngle(Vector3.Up, 0.7853982f);
   this.Origin = this.AoInstance.Position;
   this.AoRotationOrigin = Quaternion.CreateFromAxisAngle(Vector3.Forward, 0.7853982f) * Quaternion.CreateFromAxisAngle(Vector3.Up, 0.7853982f);
   this.AoInstance.Material = new Material();
   this.PlayerManager.Position = new Vector3(18.5f, 879.0 / 32.0, 34.5f);
   this.PlayerManager.Position = this.PlayerManager.Position * Vector3.UnitY + FezMath.XZMask * this.AoInstance.Position;
   this.GomezOrigin = this.PlayerManager.Position;
   this.CameraManager.Center = new Vector3(18.5f, 879.0 / 32.0, 34.5f);
   this.CameraManager.Center = this.CameraManager.Center * Vector3.UnitY + FezMath.XZMask * this.AoInstance.Position + new Vector3(0.0f, 4f, 0.0f);
   this.CameraManager.SnapInterpolation();
   this.CameraOrigin = this.CameraManager.Center;
   while (!this.PlayerManager.CanControl)
     this.PlayerManager.CanControl = true;
   this.PlayerManager.CanControl = false;
   this.CameraManager.Constrained = true;
   this.PlayerManager.HideFez = true;
   this.GenerateCubes();
   for (int index = 1; index < 9; ++index)
     this.MatrixWords[index - 1] = this.CMProvider.CurrentLevel.Load<Texture2D>("Other Textures/zuish_matrix/" + (object) index);
   this.SpinSpeed = 225f;
   SoundEffectExtensions.Emit(this.sHexSlowDown);
   this.eAmbientHex = SoundEffectExtensions.Emit(this.sAmbientHex, true, 0.0f, 0.5f);
   Vector3 vector3 = -FezMath.ForwardVector(this.CameraManager.Viewpoint) * 4f;
   IPlaneParticleSystems planeParticleSystems = this.PlaneParticleSystems;
   EldersHexahedron eldersHexahedron = this;
   Game game = this.Game;
   int maximumCount = 200;
   PlaneParticleSystemSettings particleSystemSettings = new PlaneParticleSystemSettings();
   particleSystemSettings.SpawnVolume = new BoundingBox()
   {
     Min = this.PlayerManager.Position + new Vector3(-1f, 5f, -1f) + vector3,
     Max = this.PlayerManager.Position + new Vector3(1f, 20f, 1f) + vector3
   };
   particleSystemSettings.Velocity.Base = new Vector3(0.0f, -0.5f, 0.0f);
   particleSystemSettings.Velocity.Variation = new Vector3(0.0f, -0.25f, 0.1f);
   particleSystemSettings.SpawningSpeed = 12f;
   particleSystemSettings.ParticleLifetime = 15f;
   particleSystemSettings.Acceleration = -0.1f;
   particleSystemSettings.SizeBirth = (VaryingVector3) new Vector3(0.125f, 0.125f, 0.125f);
   particleSystemSettings.ColorBirth = (VaryingColor) Color.Black;
   particleSystemSettings.ColorLife.Base = new Color(0.6f, 0.6f, 0.6f, 1f);
   particleSystemSettings.ColorLife.Variation = new Color(0.1f, 0.1f, 0.1f, 0.0f);
   particleSystemSettings.ColorDeath = (VaryingColor) Color.Black;
   particleSystemSettings.FullBright = true;
   particleSystemSettings.RandomizeSpawnTime = true;
   particleSystemSettings.FadeInDuration = 0.25f;
   particleSystemSettings.FadeOutDuration = 0.5f;
   particleSystemSettings.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/dust_particle");
   particleSystemSettings.BlendingMode = BlendingMode.Additive;
   PlaneParticleSystemSettings settings = particleSystemSettings;
   PlaneParticleSystem planeParticleSystem1;
   PlaneParticleSystem planeParticleSystem2 = planeParticleSystem1 = new PlaneParticleSystem(game, maximumCount, settings);
   eldersHexahedron.Particles = planeParticleSystem1;
   PlaneParticleSystem system = planeParticleSystem2;
   planeParticleSystems.Add(system);
   this.Particles.Enabled = false;
   this.LevelManager.LevelChanged += new Action(this.Kill);
 }
Beispiel #8
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;
   }
 }
Beispiel #9
0
 private void TryInitialize()
 {
   foreach (WaterfallsHost.WaterfallState waterfallState in this.Waterfalls)
     waterfallState.Dispose();
   this.Waterfalls.Clear();
   foreach (BackgroundPlane plane in Enumerable.ToArray<BackgroundPlane>((IEnumerable<BackgroundPlane>) this.LevelManager.BackgroundPlanes.Values))
   {
     if (plane.ActorType == ActorType.Waterfall || plane.ActorType == ActorType.Trickle)
     {
       Vector3 vector3_1 = Vector3.Transform(plane.Size * plane.Scale * Vector3.UnitX / 2f, plane.Rotation);
       Vector3 vector = Vector3.Transform(Vector3.UnitZ, plane.Rotation);
       Vector3 vector3_2 = FezMath.XZMask - FezMath.Abs(vector);
       Vector3 vector3_3 = plane.Position + plane.Size * plane.Scale * Vector3.UnitY / 2f - new Vector3(0.0f, 1.0 / 32.0, 0.0f) - vector * 2f / 16f;
       Game game = this.Game;
       int maximumCount = 25;
       PlaneParticleSystemSettings particleSystemSettings1 = new PlaneParticleSystemSettings();
       particleSystemSettings1.SpawnVolume = new BoundingBox()
       {
         Min = vector3_3 - vector3_1,
         Max = vector3_3 + vector3_1
       };
       PlaneParticleSystemSettings particleSystemSettings2 = particleSystemSettings1;
       VaryingVector3 varyingVector3_1 = new VaryingVector3();
       varyingVector3_1.Base = Vector3.Up * 1.6f + vector / 4f;
       varyingVector3_1.Variation = Vector3.Up * 0.8f + vector / 4f + vector3_2 / 2f;
       VaryingVector3 varyingVector3_2 = varyingVector3_1;
       particleSystemSettings2.Velocity = varyingVector3_2;
       particleSystemSettings1.Gravity = new Vector3(0.0f, -0.15f, 0.0f);
       particleSystemSettings1.SpawningSpeed = 5f;
       particleSystemSettings1.RandomizeSpawnTime = true;
       particleSystemSettings1.ParticleLifetime = 2f;
       particleSystemSettings1.FadeInDuration = 0.0f;
       particleSystemSettings1.FadeOutDuration = 0.1f;
       particleSystemSettings1.SizeBirth = (VaryingVector3) new Vector3(1.0 / 16.0);
       particleSystemSettings1.ColorLife = (VaryingColor) (this.LevelManager.WaterType == LiquidType.Sewer ? new Color(215, 232, 148) : new Color(1f, 1f, 1f, 0.75f));
       particleSystemSettings1.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/white_square");
       particleSystemSettings1.BlendingMode = BlendingMode.Alphablending;
       particleSystemSettings1.ClampToTrixels = true;
       particleSystemSettings1.Billboarding = true;
       particleSystemSettings1.FullBright = this.LevelManager.WaterType == LiquidType.Sewer;
       particleSystemSettings1.UseCallback = true;
       PlaneParticleSystemSettings settings = particleSystemSettings1;
       PlaneParticleSystem planeParticleSystem = new PlaneParticleSystem(game, maximumCount, settings);
       if (this.LevelManager.WaterType == LiquidType.Sewer)
       {
         planeParticleSystem.DrawOrder = 20;
         planeParticleSystem.Settings.StencilMask = new StencilMask?(StencilMask.Level);
       }
       this.PlaneParticleSystems.Add(planeParticleSystem);
       this.Waterfalls.Add(new WaterfallsHost.WaterfallState(plane, planeParticleSystem, this));
     }
     else if (plane.ActorType == ActorType.Drips)
     {
       Vector3 vector3_1 = new Vector3(plane.Size.X, 0.0f, plane.Size.X) / 2f;
       Vector3 vector3_2 = Vector3.Transform(Vector3.UnitZ, plane.Rotation);
       Vector3 vector3_3 = FezMath.XZMask - FezMath.Abs(vector3_2);
       Vector3 vector3_4 = plane.Position - new Vector3(0.0f, 0.125f, 0.0f);
       bool flag = plane.Crosshatch || plane.Billboard;
       Game game = this.Game;
       int maximumCount = 25;
       PlaneParticleSystemSettings particleSystemSettings1 = new PlaneParticleSystemSettings();
       particleSystemSettings1.SpawnVolume = new BoundingBox()
       {
         Min = vector3_4 - vector3_1,
         Max = vector3_4 + vector3_1
       };
       PlaneParticleSystemSettings particleSystemSettings2 = particleSystemSettings1;
       VaryingVector3 varyingVector3_1 = new VaryingVector3();
       varyingVector3_1.Base = Vector3.Zero;
       varyingVector3_1.Variation = Vector3.Zero;
       VaryingVector3 varyingVector3_2 = varyingVector3_1;
       particleSystemSettings2.Velocity = varyingVector3_2;
       particleSystemSettings1.Gravity = new Vector3(0.0f, -0.15f, 0.0f);
       particleSystemSettings1.SpawningSpeed = 2f;
       particleSystemSettings1.RandomizeSpawnTime = true;
       particleSystemSettings1.ParticleLifetime = 2f;
       particleSystemSettings1.FadeInDuration = 0.0f;
       particleSystemSettings1.FadeOutDuration = 0.0f;
       particleSystemSettings1.SizeBirth = (VaryingVector3) new Vector3(1.0 / 16.0);
       particleSystemSettings1.ColorLife = (VaryingColor) (this.LevelManager.WaterType == LiquidType.Sewer ? new Color(215, 232, 148) : Color.White);
       particleSystemSettings1.Texture = this.CMProvider.Global.Load<Texture2D>("Background Planes/white_square");
       particleSystemSettings1.BlendingMode = BlendingMode.Alphablending;
       particleSystemSettings1.ClampToTrixels = true;
       particleSystemSettings1.FullBright = true;
       PlaneParticleSystemSettings settings = particleSystemSettings1;
       PlaneParticleSystem system = new PlaneParticleSystem(game, maximumCount, settings);
       if (this.LevelManager.WaterType == LiquidType.Sewer)
       {
         system.DrawOrder = 20;
         system.Settings.StencilMask = new StencilMask?(StencilMask.Level);
       }
       if (flag)
       {
         system.Settings.Billboarding = true;
         system.Settings.SpawnVolume = new BoundingBox()
         {
           Min = vector3_4 - vector3_1,
           Max = vector3_4 + vector3_1
         };
       }
       else
       {
         system.Settings.Doublesided = plane.Doublesided;
         system.Settings.SpawnVolume = new BoundingBox()
         {
           Min = vector3_4 - vector3_1 * vector3_3,
           Max = vector3_4 + vector3_1 * vector3_3
         };
         system.Settings.Orientation = new FaceOrientation?(FezMath.OrientationFromDirection(vector3_2));
       }
       this.PlaneParticleSystems.Add(system);
     }
   }
 }