/// <summary> /// Reads the state of the object from an <see cref="IValueReader"/>. Values should be read in the exact /// same order as they were written. /// </summary> /// <param name="reader">The <see cref="IValueReader"/> to read the values from.</param> public void ReadState(IValueReader reader) { // Read the primary values Name = reader.ReadString(_nameKeyName); BlendMode = reader.ReadEnum <BlendMode>(_blendModeKeyName); Budget = reader.ReadInt(_budgetKeyName); EmitterLife = reader.ReadInt(_emitterLifeKeyName); ParticleLife = reader.ReadVariableInt(_particleLifeKeyName); Origin = reader.ReadVector2(_originKeyName); ReleaseAmount = reader.ReadVariableUShort(_releaseAmountKeyName); ReleaseColor = reader.ReadVariableColor(_releaseColorKeyName); ReleaseRate = reader.ReadVariableUShort(_releaseRateKeyName); ReleaseRotation = reader.ReadVariableFloat(_releaseRotationKeyName); ReleaseScale = reader.ReadVariableFloat(_releaseScaleKeyName); ReleaseSpeed = reader.ReadVariableFloat(_releaseSpeedKeyName); Sprite.SetGrh(reader.ReadGrhIndex(_grhIndexKeyName)); // Read the custom values var customValuesReader = reader.ReadNode(_customValuesNodeName); ReadCustomValues(customValuesReader); // Read the modifier collection ParticleModifiers.Read(_particleModifiersNodeName, reader); EmitterModifiers.Read(_emitterModifiersNodeName, reader); }