3 using Microsoft.Xna.Framework;
8 partial class FireSource
12 private float particleTimer;
14 partial
void UpdateProjSpecific(
float growModifier,
float deltaTime)
16 if (
this is DummyFireSource)
25 lightSource.
Color =
new Color(1.0f, 0.45f, 0.3f) * Rand.Range(0.8f, 1.0f);
26 if (Math.Abs((lightSource.
Range * 0.2f) - Math.Max(
size.X,
size.Y)) > 1.0f) { lightSource.
Range = Math.Max(
size.X,
size.Y) * 5.0f; }
33 if (particlePrefab ==
null) {
return; }
35 float particlesPerSecond = MathHelper.Clamp(
size.X / 2.0f, 10.0f, 200.0f);
37 float particleInterval = 1.0f / particlesPerSecond;
38 particleTimer += deltaTime;
39 while (particleTimer > particleInterval)
41 particleTimer -= particleInterval;
42 Vector2 particlePos =
new Vector2(
43 worldPosition.X + Rand.Range(0.0f,
size.X),
44 worldPosition.Y -
size.Y + particlePrefab.CollisionRadius);
46 Vector2 particleVel =
new Vector2(
47 particlePos.X - (worldPosition.X +
size.X / 2.0f),
48 Math.Max((
float)Math.Sqrt(
size.X) * Rand.Range(0.0f, 15.0f) * growModifier, 0.0f));
50 particleVel.X = MathHelper.Clamp(particleVel.X, -200.0f, 200.0f);
53 particlePos, particleVel, 0.0f,
hull);
55 if (particle ==
null) {
continue; }
58 if (Rand.Int(20) == 1) { particle.
OnChangeHull = onChangeHull; }
65 particlePos,
new Vector2(particleVel.X, particleVel.Y * 0.1f), 0.0f,
hull);
67 if (smokeParticle !=
null)
void EmitParticles(Vector2 size, Vector2 worldPosition, float deltaTime, Hull hull, float growModifier, Particle.OnChangeHullHandler onChangeHull=null)
static ParticleManager ParticleManager
OnChangeHullHandler OnChangeHull
delegate void OnChangeHullHandler(Vector2 position, Hull currentHull)
Particle CreateParticle(string prefabName, Vector2 position, float angle, float speed, Hull hullGuess=null, float collisionIgnoreTimer=0f, Tuple< Vector2, Vector2 > tracerPoints=null)
static ParticlePrefab FindPrefab(string prefabName)