public PlaneParticleSystem(Game game, int maximumCount, PlaneParticleSystemSettings settings) : base(game) { this.Settings = settings; this.particles = new Pool <PlaneParticleSystem.Particle>(maximumCount); this.PrepareNextSpawn(); }
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 }; }
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); }
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)); }
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); }
public PlaneParticleSystem(Game game, int maximumCount, PlaneParticleSystemSettings settings) : base(game) { this.Settings = settings; this.particles = new Pool<PlaneParticleSystem.Particle>(maximumCount); this.PrepareNextSpawn(); }
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); }
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; } }
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); } } }