source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/Effects/Flame.cs @ 10335

Revision 4507, 2.3 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1using System;
2using Microsoft.Xna.Framework;
3
4namespace Jypeli.Effects
5{
6    /// <summary>
7    /// Järjestelmä liekeille
8    /// </summary>
9    public class Flame : ParticleSystem
10    {
11        private double addTime;
12
13        /// <summary>
14        /// Luo uuden liekin.
15        /// </summary>
16        /// <param name="image">Partikkelin kuva.</param>
17        public Flame(Image image)
18            : base(image, 100)
19        {
20            Angle = Angle.FromDegrees(90);
21            BlendMode = BlendMode.Alpha;
22        }
23
24        /// <summary>
25        /// Määritetään oletusarvot efektille
26        /// </summary>
27        protected override void InitializeParticles()
28        {
29            MinLifetime = 2.0;
30            MaxLifetime = 2.2;
31
32            MinScale = 70;
33            MaxScale = 100;
34
35            ScaleAmount = -2.0;
36            AlphaAmount = 1.0;
37
38            MinVelocity = 40;
39            MaxVelocity = 70;
40
41            MinAcceleration = 1;
42            MaxAcceleration = 2;
43
44            MinRotationSpeed = -MathHelper.PiOver4;
45            MaxRotationSpeed = MathHelper.PiOver4;
46
47        }
48
49        /// <summary>
50        /// Lasketaan liekin suunnalle satunnaisuutta
51        /// </summary>
52        /// <returns>Partikkelin suunta</returns>
53        protected override Vector GiveRandomDirection()
54        {
55            return Vector.FromLengthAndAngle(1, Angle + Angle.FromDegrees(RandomGen.NextDouble(-5, 5)));
56        }
57
58        /// <summary>
59        /// Päivitetään liekkiä
60        /// </summary>
61        /// <param name="time"></param>
62        public override void Update(Time time)
63        {
64            double t = time.SinceLastUpdate.TotalSeconds;
65            addTime += t;
66            if (addTime > 0.05)
67            {
68                base.AddEffect(Position, 2);
69                addTime = 0;
70            }
71            base.Update(time);
72        }
73
74        /// <summary>
75        /// Alustetaan partikkeli
76        /// </summary>
77        /// <param name="p">Partikkeli joka alustetaan</param>
78        /// <param name="position">Sijainti johon alustetaan</param>
79        protected override void InitializeParticle(Particle p, Vector position)
80        {
81            base.InitializeParticle(p, position);
82            if (!IgnoreWind)
83            p.Acceleration = Game.Wind;
84        }
85    }
86}
Note: See TracBrowser for help on using the repository browser.