/// <summary> /// Writes the state of the object to an <see cref="IValueWriter"/>. /// </summary> /// <param name="writer">The <see cref="IValueWriter"/> to write the values to.</param> public void WriteState(IValueWriter writer) { // Write the primary values writer.Write(_nameKeyName, Name); writer.Write(_blendModeKeyName, BlendMode); writer.Write(_budgetKeyName, Budget); writer.Write(_emitterLifeKeyName, EmitterLife); writer.Write(_particleLifeKeyName, ParticleLife); writer.Write(_originKeyName, Origin); writer.Write(_releaseAmountKeyName, ReleaseAmount); writer.Write(_releaseColorKeyName, ReleaseColor); writer.Write(_releaseRateKeyName, ReleaseRate); writer.Write(_releaseRotationKeyName, ReleaseRotation); writer.Write(_releaseScaleKeyName, ReleaseScale); writer.Write(_releaseSpeedKeyName, ReleaseSpeed); writer.Write(_grhIndexKeyName, Sprite.GrhData != null ? Sprite.GrhData.GrhIndex : GrhIndex.Invalid); // Write the custom values writer.WriteStartNode(_customValuesNodeName); { WriteCustomValues(writer); } writer.WriteEndNode(_customValuesNodeName); // Write the modifier collection ParticleModifiers.Write(_particleModifiersNodeName, writer); EmitterModifiers.Write(_emitterModifiersNodeName, writer); }