Jypeli  5
The simple game programming library
Smoke.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using Microsoft.Xna.Framework;
3 
4 namespace Jypeli.Effects
5 {
9  public class Smoke : ParticleSystem
10  {
11  private double addTime;
12  private double width;
13 
17  public Smoke()
18  : base(Game.LoadImageFromResources("smoke"), 100)
19  {
20  this.Angle = Angle.FromDegrees(90);
21  this.width = 5;
22  }
23 
29  public Smoke(Image particleImage, double width)
30  : base(particleImage, (int)width*4)
31  {
32  this.Angle = Angle.FromDegrees(90);
33  this.width = width;
34  }
35 
39  protected override void InitializeParticles()
40  {
41  MinLifetime = 4.0;
42  MaxLifetime = 4.2;
43 
44  MinScale = 70;
45  MaxScale = 100;
46 
47  ScaleAmount = 1;
48 
49  AlphaAmount = 0.3;
50 
51  MinVelocity = 40;
52  MaxVelocity = 60;
53 
54  MinAcceleration = 1;
55  MaxAcceleration = 1;
56 
57  MinRotationSpeed = -MathHelper.PiOver4;
58  MaxRotationSpeed = MathHelper.PiOver4;
59 
60  }
61 
66  protected override Vector GiveRandomDirection()
67  {
68  return Vector.FromLengthAndAngle(1, Angle + Angle.FromDegrees(RandomGen.NextDouble(-5, 5)));
69  }
70 
75  public override void Update(Time time)
76  {
77  double t = time.SinceLastUpdate.TotalSeconds;
78  addTime += t;
79  if (addTime > 0.1)
80  {
81  for (int i = 0; i < (int)Math.Ceiling(width/50); i++)
82  {
83  base.AddEffect(RandomGen.NextDouble(Position.X - width / 2, Position.X + width / 2), Position.Y, 2);
84  }
85 
86  addTime = 0;
87  }
88  base.Update(time);
89  }
90 
96  protected override void InitializeParticle(Particle p, Vector position)
97  {
98  base.InitializeParticle(p, position);
99 
100  if(!IgnoreWind)
101  p.Acceleration = Game.Wind;
102 
103  }
104  }
105 }
Smoke(Image particleImage, double width)
Savu, johon vaikuttaa tuuli ja jonka tekstuuria ja leveyttä voi vaihtaa.
Definition: Smoke.cs:29
Järjestelmä partikkelien käsittelyyn
Smoke()
Savu, johon vaikuttaa tuuli
Definition: Smoke.cs:17
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
Definition: Angle.cs:40
Savuefekti.
Definition: Smoke.cs:9
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
Definition: RandomGen.cs:39
static double NextDouble(double min, double max)
Palauttaa satunnaisen liukuluvun parametrien
Definition: RandomGen.cs:78
override Vector GiveRandomDirection()
Lasketaan savun suunnalle satunnaisuutta
Definition: Smoke.cs:66
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Definition: Time.cs:24
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Definition: Time.cs:13
Kuva.
Definition: Image.cs:24
Vector Acceleration
Partikkelin kiihtyvyys
Definition: Particle.cs:71
Peliluokka reaaliaikaisille peleille.
Definition: DebugScreen.cs:10
override void InitializeParticles()
Määritetään oletusarvot efektille
Definition: Smoke.cs:39
override void Update(Time time)
Päivitetään savua
Definition: Smoke.cs:75
static Vector Wind
Tuuli. Vaikuttaa vain efekteihin
Definition: Game.cs:326
override void InitializeParticle(Particle p, Vector position)
Alustetaan partikkeli
Definition: Smoke.cs:96
2D-vektori.
Definition: Vector.cs:56
static Angle FromDegrees(double degree)
Luo kulman annettujen asteiden mukaan.
Definition: Angle.cs:325