 |
Jypeli
9
The simple game programming library
|
Siirry tämän tiedoston dokumentaatioon.
2 using System.Collections.Generic;
20 private Random
random =
new Random();
39 #region Subclass variables
172 for (
int i = 0; i < maxAmountOfParticles; i++)
192 public void AddEffect(
double x,
double y,
int numberOfParticles)
199 for (
int i = 0; i < numberOfParticles &&
freeParticles.Count > 0; i++)
214 for (
int i = 0; i < numberOfParticles &&
freeParticles.Count > 0; i++)
228 double angle =
random.NextDouble() * MathHelper.TwoPi;
229 return new Vector(Math.Cos(angle), Math.Sin(angle));
248 p.
Initialize(position, scale, rotation, rotationSpeed, velocity * direction, acceleration * direction, lifetime);
255 double rotation = angle.
Degrees;
262 p.
Initialize(position, scale, rotation, rotationSpeed, velocity * direction, acceleration * direction, lifetime);
273 LinkedListNode<Particle> node =
particles.First;
285 LinkedListNode<Particle> previous = node;
322 static readonly Vector3
topLeft =
new Vector3(-0.5f, 0.5f, 0);
323 static readonly Vector3
bottomLeft =
new Vector3(-0.5f, -0.5f, 0);
324 static readonly Vector3
topRight =
new Vector3(0.5f, 0.5f, 0);
325 static readonly Vector3
bottomRight =
new Vector3(0.5f, -0.5f, 0);
345 return BlendState.AlphaBlend;
347 return BlendState.Additive;
349 return BlendState.AlphaBlend;
360 device.RasterizerState = RasterizerState.CullClockwise;
361 device.SamplerStates[0] = SamplerState.LinearClamp;
364 effect.Texture = texture;
365 effect.CurrentTechnique.Passes[0].Apply();
372 double alpha = 4 * nTime * (1 - nTime) *
AlphaAmount;
376 Matrix.CreateScale(scale * texture.Width / texture.Height, scale, 1f)
382 effect.Alpha = (float)alpha;
383 effect.World = matrix;
384 effect.CurrentTechnique.Passes[0].Apply();
386 device.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleList,
vertices, 0, 2);
396 double alpha = 4 * nTime * (1 - nTime) *
AlphaAmount;
400 Matrix.CreateScale(scale, scale, 1f)
406 Matrix.CreateScale(0.65f, 0.65f, 1f)
409 effect.Texture = texture;
410 effect.Alpha = (float)alpha;
411 effect.World = matrix;
412 effect.CurrentTechnique.Passes[0].Apply();
414 device.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleList,
vertices, 0, 2);
416 effect.Texture = outerTexture;
417 effect.World = matrix2;
418 effect.CurrentTechnique.Passes[0].Apply();
420 device.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleList,
vertices, 0, 2);
double MaxVelocity
Suurin nopeus joka efektin partikkelilla voi olla
static readonly Vector3 topLeft
double Rotation
Partikkelin kierto
Microsoft.Xna.Framework.Matrix Matrix
double MinRotation
Pienin kierre mikä efektin partikkelilla voi olla
Järjestelmä partikkelien käsittelyyn
LinkedList< Particle > particles
static readonly Vector2 textureTopRight
void Initialize(Vector position, double scale, double rotation, double rotationSpeed, Vector velocity, Vector acceleration, double lifetime)
Alusta partikkeli
void AddEffect(Vector position, Angle angle, int numberOfParticles)
double MinVelocity
Pienin nopeus joka efektin partikkelilla voi olla
TimeSpan Lifetime
Partikkelin tämän hetkinen ikä
double AlphaAmount
Efektin läpinäkyvyyskerroin (0.0-1.0)
Image ParticleImage
Yksittäisen partikkelin kuva.
virtual Vector GiveRandomDirection()
Antaa satunnaisen suunnan
double MaxScale
Suurin skaalaus joka efektin partikkeleilla voi olla
double MaxRotationSpeed
Suurin pyörimisnopeus joka efektin partikkelilla voi olla
Image OuterParticleImage
Partikkelin toissijainen kuva. Jos null niin käytetään vain yhtä kuvaa.
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
void AddEffect(Vector position, int numberOfParticles)
Lisää efektin kentälle
static readonly Vector2 textureBottomLeft
static readonly Vector2 textureBottomRight
static readonly VertexPositionTexture[] vertices
static readonly Vector3 bottomLeft
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
virtual void InitializeParticles()
Metodi joka asettaa partikkeleille attribuutit Täytyy kutsua perityistä luokista
static BasicEffect BasicTextureEffect
double MaxAcceleration
Suurin kiihtyvyys joka efektin partikkelilla voi olla
Boolean IgnoreWind
Vaikuttaako efektiin tuuli
void Draw(Matrix worldMatrix)
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
static readonly Vector2 textureTopLeft
void FadeIn(double timeInSeconds)
Efekti tulee näkyviin tietyn sekuntimäärän aikana
override void Update(Time time)
Kutsutaan kun luokka päivitetään
double MaxRotation
Suurin kierre mikä efektin partikkelilla voi olla
bool Alive
Onko partikkelin "elossa", eli päivitetäänkö ja piirretäänkö se
double MinRotationSpeed
Pienin pyörimisnopeus joka efektin partikkelilla voi olla
virtual void InitializeParticle(Particle p, Vector position, Angle angle)
double MinScale
Pienin skaalaus joka efektin partikkeleilla voi olla
ParticleSystem(Image particleImage, int maxAmountOfParticles)
Muodostaja
void FadeOut(double TimeInSeconds)
Efekti hiipuu näkyvistä tietyn sekuntimäärän aikana
Vector Position
Partikkelin sijainti
Contains graphics resources.
static double NextDouble(double min, double max)
Palauttaa satunnaisen liukuluvun parametrien
static readonly Vector3 bottomRight
double MinAcceleration
Pienin kiihtyvyys joka efektin partikkelilla voi olla
TimeSpan MaxLifetime
Partikkelin elinikä
double MaxLifetime
Efektin partikkelin pisin mahdollinen elinaika
static BlendState ToXnaBlendState(BlendMode mode)
void Update(double time)
Päivittää partikkelin sijannin, nopeuden ja kierron
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
static new GraphicsDevice GraphicsDevice
XNA:n grafiikkakortti.
double Degrees
Palauttaa tai asettaa kulman asteina.
Queue< Particle > freeParticles
double MinLifetime
Efektin partikkelin lyhin mahdollinen elinaika
double Scale
Partikkelin skaalaus
double ScaleAmount
Määrä jonka partikkeli skaalautuu päivityksessä
static readonly Vector3 topRight
void AddEffect(double x, double y, int numberOfParticles)
Lisää efektin kentälle
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
virtual void InitializeParticle(Particle p, Vector position)
Alustaa yhden partikkelin