DragPointLightSerializer.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.IO;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class DragPointLightSerializer : Serializer<DragPointLight>
  4. {
  5. private const short Version = 1;
  6. private static Serializer<LightProperty> LightPropertySerializer =>
  7. Serialization.Get<LightProperty>();
  8. public override void Serialize(DragPointLight light, BinaryWriter writer)
  9. {
  10. writer.WriteVersion(Version);
  11. var lightList = GetLightProperties(light);
  12. for (var i = 0; i < 3; i++)
  13. LightPropertySerializer.Serialize(lightList[i], writer);
  14. writer.Write(light.MyObject.position);
  15. writer.Write((int)light.SelectedLightType);
  16. writer.Write(light.IsColourMode);
  17. writer.Write(light.IsDisabled);
  18. }
  19. public override void Deserialize(DragPointLight light, BinaryReader reader, SceneMetadata metadata)
  20. {
  21. _ = reader.ReadVersion();
  22. var lightList = GetLightProperties(light);
  23. for (var i = 0; i < 3; i++)
  24. LightPropertySerializer.Deserialize(lightList[i], reader, metadata);
  25. light.MyObject.position = reader.ReadVector3();
  26. light.SetLightType((DragPointLight.MPSLightType)reader.ReadInt32());
  27. light.IsColourMode = reader.ReadBoolean();
  28. light.IsDisabled = reader.ReadBoolean();
  29. }
  30. private static LightProperty[] GetLightProperties(DragPointLight light) =>
  31. Utility.GetFieldValue<DragPointLight, LightProperty[]>(light, "LightProperties");
  32. }