private void SetupParticleSystem() { particleSystem = new ParticleSystem(); shipEffect = new ParticleEffect(); Texture2D texture1 = Content.Load <Texture2D>("Images/smoke2"); Texture2D texture2 = Content.Load <Texture2D>("Images/smoke3"); ParticleEmitter shipEmitter = new ConeEmitter(Vector2.Zero, MathHelper.ToRadians(90)); shipEmitter.AddTexture(texture1); shipEmitter.AddTexture(texture2); shipEmitter.Quantity = 10; shipEmitter.AddPropertyGenerator(new RandomSpeedGenerator(2.01f, 4.0f, 1.0f)); shipEmitter.AddPropertyGenerator(new ConstantColorGenerator(Color.Green * 0.7f)); shipEmitter.AddPropertyGenerator(new RandomTTLGenerator(2.0f, 5.0f, 1.0f)); shipEmitter.AddParticleModifier(new ScaleModifier2(0.1f, 2.0f)); shipEmitter.AddParticleModifier(new DepthModifier2(0.0f, 1.0f)); shipEmitter.AddParticleModifier(new OpacityModifier2(0.6f, 0f)); shipEmitter.AddParticleModifier(new DampingLinearVelocityModifier(0.99f)); shipEmitter.AddParticleModifier(new RotationModifier2(-1.0f, 1.0f)); shipEffect.AddEmitter(shipEmitter); particleSystem.AddEffect(shipEffect); shipEffect2 = new ParticleEffect(); ParticleEmitter shipEmitter2 = new ConeEmitter(Vector2.Zero, MathHelper.ToRadians(90)); shipEmitter2.AddTexture(texture1); shipEmitter2.AddTexture(texture2); shipEmitter2.Quantity = 10; shipEmitter2.AddPropertyGenerator(new RandomSpeedGenerator(2.01f, 4.0f, 1.0f)); shipEmitter2.AddPropertyGenerator(new ConstantColorGenerator(Color.Yellow * 0.7f)); shipEmitter2.AddPropertyGenerator(new RandomTTLGenerator(2.0f, 5.0f, 1.0f)); shipEmitter2.AddParticleModifier( new ScaleModifier2(0.1f, 2.0f)); shipEmitter2.AddParticleModifier( new DepthModifier2(0.0f, 1.0f)); shipEmitter2.AddParticleModifier( new OpacityModifier2(0.6f, 0f)); shipEmitter2.AddParticleModifier(new DampingLinearVelocityModifier(0.99f)); shipEmitter2.AddParticleModifier(new RotationModifier2(-1.0f, 1.0f)); shipEffect2.AddEmitter(shipEmitter2); particleSystem.AddEffect(shipEffect2); }
protected override void Initialize() { content = new ContentManager(Services, "Content"); spriteBatch = new SpriteBatch(GraphicsDevice); viewport = GraphicsDevice.Viewport; Texture2D tex1 = content.Load <Texture2D>("Images/smoke2"); particleSystem = new ParticleSystem(); Effect = new ParticleEffect(); Effect.Rotation = 0f; Effect.Position = new Vector2(viewport.Width / 2, viewport.Height / 2); ParticleEmitter emitter = new CircleEmitter(new Circle(100.0f, Vector2.Zero)); emitter.AutoGenerate = true; ParticleGenerationParams config = new ParticleGenerationParams(); config.AddTexture(tex1); config.ColorRangeStart = Color.Red; config.ColorRangeEnd = Color.Yellow; config.QuantityRange = new Vector2(10, 100); config.Flags = EmitterCastStyle.None; config.ScaleRange = new Vector2(0.1f, 1.1f); config.DepthRange = new Vector2(0.0f, 1.0f); config.OpacityRange = new Vector2(0.6f, 0f); config.InitialSpeedRange = new Vector2(0.1f, 2.0f); config.SpeedDamping = 0.99f; config.RotationRange = new Vector2(-1.0f, 1.0f); config.InitialRotationVariation = 1.0f; config.TTLRange = new Vector2(500.0f, 4000.0f); emitter.Configuration = config; Effect.AddEmitter(emitter); particleSystem.AddEffect(Effect); // Start the animation timer. // timer = Stopwatch.StartNew(); timer = new FpsTimer(1.0f / 20); totalTimeSpan = TimeSpan.FromTicks(DateTime.Now.Ticks); timer.Elapsed += timer_Elapsed; timer.Start(); gameTime = new GameTime(TimeSpan.Zero, TimeSpan.Zero); // Hook the idle event to constantly redraw our animation. Application.Idle += delegate { Invalidate(); }; }
public override void LoadContent() { base.LoadContent(); menuEntries = new List <MenuEntry>(); entryTexture = StateManager.Content.Load <Texture2D>("Images/button_clean"); Vector2 pos = new Vector2(Bounds.Width / 2, 100); playMenuEntry = CreateMenuEntry(entryTexture, "Play", pos, Keys.F1); playMenuEntry.AnimState = -0.5f; pos.Y += entryTexture.Height + 10; optionsMenuEntry = CreateMenuEntry(entryTexture, "Options", pos, Keys.F2); optionsMenuEntry.AnimState = 0.0f; pos.Y += entryTexture.Height + 10; physicsMenuEntry = CreateMenuEntry(entryTexture, "Physics", pos, Keys.F3); physicsMenuEntry.AnimState = 1.0f; pos.Y += entryTexture.Height + 10; exitMenuEntry = CreateMenuEntry(entryTexture, "Exit", pos, Keys.Escape); exitMenuEntry.AnimState = 0.5f; // AnimatedSprite // This will make a sprite which animates when mouse is clicked in it. /* * animSprite = new AnimatedSprite(StateManager.Content.Load<Texture2D>("Images/soniccd"), 11, 1); * animSprite.Position = new Vector2(Bounds.Width / 2, 400); * animSprite.Style = AnimatedSprite.AnimationStyle.Manual; * animSprite.InputEventSource = StateManager.Input; * AddComponent(animSprite); */ // TextureAtlas // Make textureatlas from the example image atlas = new TextureAtlas(StateManager.Content.Load <Texture2D>("Images/soniccd"), 11, 1); // Make AnimatedSprite from the atlas animSprite = new AnimatedSprite(atlas, 0, atlas.Frames - 1, 25); animSprite.Position = new Vector2(Bounds.Width / 2, 400); animSprite.Style = AnimatedSprite.AnimationStyle.Manual; animSprite.InputEventSource = StateManager.Input; AddComponent(animSprite); // This will use a image with 11 columns and 1 rows. And makes a // sprite for frame 2 (second frame). atlasSprite = atlas.MakeSprite(1); atlasSprite.Position = new Vector2(Bounds.Width / 2, 600); atlasSprite.Scale = 4.0f; // TODO: This adds a component to the canvas but canvas does not yet // Draw it automatically. See Draw() here, it does atlasSprite.Draw(..). AddComponent(atlasSprite); // Set up a simple smoke effect particleSystem = new ParticleSystem(); // particleSystem.EnableCache(6000, 10000); particleEffect = new ParticleEffect(20000); particleEffect.Rotation = 0f; particleEffect.Position = Vector2.Zero; // emitter = new LineEmitter(new Vector2(-200,0), new Vector2(200,0)); // emitter = new PointEmitter(Vector2.Zero); // emitter = new ConeEmitter(Vector2.Zero, MathHelper.ToRadians(45)); emitter = new CircleEmitter(new Circle(50.0f, new Vector2(0, 0))); emitter.Quantity = 2000; emitter.AddPropertyGenerator(new RandomSpeedGenerator(30.0f, 30.0f, 1.0f)); emitter.AddPropertyGenerator(new RandomScaleGenerator(0.1f, 0.5f, 1.0f)); emitter.AddPropertyGenerator(new RandomOpacityGenerator(0.5f, 0.0f, 1.0f)); emitter.AddPropertyGenerator(new RandomRotationGenerator(0.0f, MathConstants.TwoPI, 1.0f)); emitter.AddPropertyGenerator(new RandomAngularVelocityGenerator(-1.0f, 1.0f, 1.0f)); emitter.AddPropertyGenerator(new RandomTTLGenerator(0.5f, 10.0f, 1.0f)); emitter.AddPropertyGenerator(new RandomColorGenerator(Color.White, Color.Red)); emitter.AddParticleModifier(new OpacityModifier1(0.0f)); emitter.AddParticleModifier(new ScaleModifier1(1.0f)); emitter.AddParticleModifier(new DampingLinearVelocityModifier(1.001f)); emitter.Flags |= EmitterModes.AutoGenerate; emitter.AddTexture(StateManager.Content.Load <Texture2D>("Images/smoke1")); emitter.AddTexture(StateManager.Content.Load <Texture2D>("Images/smoke2")); emitter.AddTexture(StateManager.Content.Load <Texture2D>("Images/smoke3")); particleEffect.AddEmitter(emitter); particleSystem.AddEffect(particleEffect); }