Example #1
0
 /// <summary>
 /// Initialize the component.
 /// </summary>
 internal override void Initialize(GameObject owner)
 {
     base.Initialize(owner);
     // Set default values.
     SoftParticles       = true;
     FadeDistance        = 0.01f;
     DurationRandomness  = 1;
     Gravity             = new Vector3(-20, -5, 0);
     EndVelocity         = 0.75f;
     MinimumColor        = new Color(255, 255, 255, 255);
     MaximumColor        = new Color(255, 255, 255, 255);
     RotateSpeed         = new Vector2(-1, 1);
     StartSize           = new Vector2(5, 10);
     EndSize             = new Vector2(50, 200);
     BlendState          = BlendState.Additive;
     TilesX              = 1;
     TilesY              = 1;
     AnimationRepetition = 1;
     // Particle Emitter
     ((GameObject3D)Owner).ParticleEmitterChanged += OnParticleEmitterChanged;
     if (((GameObject3D)Owner).ParticleEmitter != null)
     {
         ((GameObject3D)Owner).ParticleEmitter.ParticleSystemChanged += OnParticleSystemChanged;
         ((GameObject3D)Owner).ParticleEmitter.DurationChanged       += OnDurationChanged;
         cachedParticleSystem = ((GameObject3D)Owner).ParticleEmitter.ParticleSystem;
         cachedDuration       = ((GameObject3D)Owner).ParticleEmitter.Duration;
     }
 } // Initialize
Example #2
0
        } // Uninitialize

        #endregion

        #region On Particle Emitter Changed

        /// <summary>
        /// On model filter's model changed.
        /// </summary>
        private void OnParticleEmitterChanged(object sender, Component oldComponent, Component newComponent)
        {
            // Remove event association.
            if (oldComponent != null)
            {
                ((ParticleEmitter)oldComponent).ParticleSystemChanged -= OnParticleSystemChanged;
                ((ParticleEmitter)oldComponent).DurationChanged       -= OnDurationChanged;
            }
            ((GameObject3D)Owner).ParticleEmitter.ParticleSystemChanged += OnParticleSystemChanged;
            ((GameObject3D)Owner).ParticleEmitter.DurationChanged       += OnDurationChanged;
            cachedParticleSystem = ((ParticleEmitter)newComponent).ParticleSystem;
            cachedDuration       = ((ParticleEmitter)newComponent).Duration;
        } // OnParticleEmitterChanged
Example #3
0
        } // Initialize

        #endregion

        #region Uninitialize

        /// <summary>
        /// Uninitialize the component.
        /// Is important to remove event associations and any other reference.
        /// </summary>
        internal override void Uninitialize()
        {
            Texture = null;
            cachedParticleSystem = null;
            ((GameObject3D)Owner).ParticleEmitterChanged -= OnParticleEmitterChanged;
            if (((GameObject3D)Owner).ParticleEmitter != null)
            {
                ((GameObject3D)Owner).ParticleEmitter.ParticleSystemChanged -= OnParticleSystemChanged;
                ((GameObject3D)Owner).ParticleEmitter.DurationChanged       -= OnDurationChanged;
            }
            // Call this last because the owner information is needed.
            base.Uninitialize();
        } // Uninitialize
Example #4
0
        } // OnParticleEmitterChanged

        #endregion

        #region On Particle System Changed

        /// <summary>
        /// On particle emitter's particle system changed.
        /// </summary>
        private void OnParticleSystemChanged(object sender, ParticleSystem particleSystem)
        {
            cachedParticleSystem = particleSystem;
        } // OnParticleSystemChanged