/// <summary> /// Initialize the rocket projectile to it's default gameplay states. /// </summary> public override void Initialize() { if (!active) { // get and play the rocket-flying sound effect AudioManager.PlaySoundEffect("rocket", true, out rocketSound); // start the rocket-trail effect if (ParticleEffectManager != null) { rocketTrailEffect = ParticleEffectManager.SpawnEffect( ParticleEffectType.RocketTrail, this); } } base.Initialize(); }
/// <summary> /// Register a new type of particle effect with the manager. /// </summary> /// <param name="effectType">The enumeration associated with this type.</param> /// <param name="filename">The path to the XML file to be deserialized.</param> /// <param name="initialCount">How many of these to pre-create.</param> public void RegisterParticleEffect(ParticleEffectType effectType, string filename, int initialCount) { if (!particleEffectCache.ContainsKey(effectType)) { string filepath = Path.Combine(contentManager.RootDirectory, filename); ParticleEffect particleEffect = ParticleEffect.Load(filepath); particleEffect.Initialize(contentManager); particleEffect.Stop(true); particleEffectCache.Add(effectType, new List <ParticleEffect>()); particleEffectCache[effectType].Add(particleEffect); for (int i = 1; i < initialCount; i++) { ParticleEffect cloneEffect = particleEffect.Clone(); cloneEffect.Initialize(contentManager); cloneEffect.Stop(true); particleEffectCache[effectType].Add(cloneEffect); } } }
/// <summary> /// Spawn a new particle effect at a given location and gameplay object /// </summary> /// <param name="effectType">The effect in question.</param> /// <param name="position">The position of the effect.</param> /// <param name="actor">The gameplay object.</param> /// <returns>The new particle effect.</returns> public ParticleEffect SpawnEffect(ParticleEffectType effectType, Vector2 position, GameplayObject gameplayObject) { ParticleEffect particleEffect = null; if (particleEffectCache.ContainsKey(effectType) == true) { List <ParticleEffect> availableSystems = particleEffectCache[effectType]; for (int i = 0; i < availableSystems.Count; ++i) { if (availableSystems[i].Active == false) { particleEffect = availableSystems[i]; break; } } if (particleEffect == null) { particleEffect = availableSystems[0].Clone(); particleEffect.Initialize(contentManager); availableSystems.Add(particleEffect); } } if (particleEffect != null) { particleEffect.Reset(); particleEffect.GameplayObject = gameplayObject; particleEffect.Position = position; activeParticleEffects.Add(particleEffect); } return(particleEffect); }