LightManagerSerializer.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Collections.Generic;
  2. using System.IO;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class LightManagerSerializer : Serializer<LightManager>
  5. {
  6. private const short Version = 1;
  7. private static Serializer<DragPointLight> LightSerializer =>
  8. Serialization.Get<DragPointLight>();
  9. public override void Serialize(LightManager manager, BinaryWriter writer)
  10. {
  11. writer.Write(LightManager.Header);
  12. writer.WriteVersion(Version);
  13. var list = GetLightList(manager);
  14. writer.Write(list.Count);
  15. foreach (var light in list)
  16. LightSerializer.Serialize(light, writer);
  17. }
  18. public override void Deserialize(LightManager manager, BinaryReader reader, SceneMetadata metadata)
  19. {
  20. manager.ClearLights();
  21. _ = reader.ReadVersion();
  22. var lightCount = reader.ReadInt32();
  23. var list = GetLightList(manager);
  24. LightSerializer.Deserialize(list[0], reader, metadata);
  25. for (var i = 1; i < lightCount; i++)
  26. {
  27. manager.AddLight();
  28. LightSerializer.Deserialize(list[i], reader, metadata);
  29. }
  30. }
  31. private static List<DragPointLight> GetLightList(LightManager manager) =>
  32. Utility.GetFieldValue<LightManager, List<DragPointLight>>(manager, "lightList");
  33. }