/// <summary>
        ///		Loads this stype from a given binary reader.
        /// </summary>
        /// <param name="reader">Binary reader to load this type from.</param>
        public void Load(BinaryReader reader)
        {
            _maximumCycles = reader.ReadInt32();
            _emitShape = (EmitShape)reader.ReadInt32();
            _particleLifeTimeRandom = new MinMax(reader.ReadInt32(), reader.ReadInt32());
            _emitCount = new MinMax(reader.ReadInt32(), reader.ReadInt32());
            _emitRate = new MinMax(reader.ReadInt32(), reader.ReadInt32());

            int modifierCount = reader.ReadInt32();

            // Load each modifier.
            for (int i = 0; i < modifierCount; i++)
            {
                string modName = reader.ReadString();
                ParticleModifier modifier = (ParticleModifier)ReflectionMethods.CreateObject(modName);
                modifier.ParticleType = this;
                modifier.Load(reader);
                _modifiers.Add(modifier);
            }
        }
        /// <summary>
        ///		Loads this modifier from a given binary reader.
        /// </summary>
        /// <param name="reader">Binary reader to load this modifier from.</param>
        public override void Load(BinaryReader reader)
        {
            // Load ze base!
            base.Load(reader);

            // Load properties.
            int sr, sg, sb, sa;
            ColorMethods.SplitColor(ColorFormats.A8R8G8B8, reader.ReadInt32(), out sr, out sg, out sb, out sa);
            int fr, fg, fb, fa;
            ColorMethods.SplitColor(ColorFormats.A8R8G8B8, reader.ReadInt32(), out fr, out fg, out fb, out fa);

            _colorTint.Start = Color.FromArgb(sr, sg, sb);
            _colorTint.StartAlpha = (byte)sa;

            _colorTint.Finish = Color.FromArgb(fr, fg, fb);
            _colorTint.FinishAlpha = (byte)fa;

            _colorTintRedRandom = new MinMax(reader.ReadInt32(), reader.ReadInt32());
            _colorTintGreenRandom = new MinMax(reader.ReadInt32(), reader.ReadInt32());
            _colorTintBlueRandom = new MinMax(reader.ReadInt32(), reader.ReadInt32());
            _colorTintAlphaRandom = new MinMax(reader.ReadInt32(), reader.ReadInt32());
        }
 /// <summary>
 ///     Invoked when a new instance of this class is created.
 /// </summary>
 /// <param name="emitRate">Minimum and maximum time period between emission cycles.</param>
 /// <param name="emitCount">Minimum and maximum amount of particles that are emitted each cycle.</param>
 /// <param name="emitShape">Shape in which particles are emitted.</param>
 /// <param name="maximumCycles">Maximum number of cycles this type can process.</param>
 /// <param name="particleLifeTimeRandom">Minimum and maximum randomization of life time.</param>
 public ParticleType(MinMax emitRate, MinMax emitCount, EmitShape emitShape, int maximumCycles, MinMax particleLifeTimeRandom)
 {
     _emitRate = emitRate;
     _emitCount = emitCount;
     _emitShape = emitShape;
     _maximumCycles = maximumCycles;
     _particleLifeTimeRandom = particleLifeTimeRandom;
     Restart();
 }