ProviderInitializer.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #nullable enable
  2. using MemoryPack.Formatters;
  3. using UnityEngine;
  4. namespace MemoryPack
  5. {
  6. public static partial class MemoryPackFormatterProvider
  7. {
  8. static void UnityRegister<T>()
  9. where T : unmanaged
  10. {
  11. Register(new UnmanagedFormatter<T>());
  12. Register(new UnmanagedArrayFormatter<T>());
  13. Register(new ListFormatter<T>());
  14. Register(new NullableFormatter<T>());
  15. }
  16. static partial void RegisterInitialFormatters()
  17. {
  18. // struct
  19. UnityRegister<UnityEngine.Vector2>();
  20. UnityRegister<UnityEngine.Vector3>();
  21. UnityRegister<UnityEngine.Vector4>();
  22. UnityRegister<UnityEngine.Quaternion>();
  23. UnityRegister<UnityEngine.Color>();
  24. UnityRegister<UnityEngine.Bounds>();
  25. UnityRegister<UnityEngine.Rect>();
  26. UnityRegister<UnityEngine.Keyframe>();
  27. Register(new UnmanagedFormatter<UnityEngine.WrapMode>());
  28. UnityRegister<UnityEngine.Matrix4x4>();
  29. UnityRegister<UnityEngine.GradientColorKey>();
  30. UnityRegister<UnityEngine.GradientAlphaKey>();
  31. Register(new UnmanagedFormatter<UnityEngine.GradientMode>());
  32. UnityRegister<UnityEngine.Color32>();
  33. UnityRegister<UnityEngine.LayerMask>();
  34. UnityRegister<UnityEngine.Vector2Int>();
  35. UnityRegister<UnityEngine.Vector3Int>();
  36. UnityRegister<UnityEngine.RangeInt>();
  37. UnityRegister<UnityEngine.RectInt>();
  38. UnityRegister<UnityEngine.BoundsInt>();
  39. // class
  40. if (!IsRegistered<AnimationCurve>())
  41. {
  42. Register(new AnimationCurveFormatter());
  43. Register(new ArrayFormatter<AnimationCurve>());
  44. Register(new ListFormatter<AnimationCurve>());
  45. }
  46. if (!IsRegistered<Gradient>())
  47. {
  48. Register(new GradientFormatter());
  49. Register(new ArrayFormatter<Gradient>());
  50. Register(new ListFormatter<Gradient>());
  51. }
  52. if (!IsRegistered<RectOffset>())
  53. {
  54. Register(new RectOffsetFormatter());
  55. Register(new ArrayFormatter<RectOffset>());
  56. Register(new ListFormatter<RectOffset>());
  57. }
  58. }
  59. }
  60. }