DynamicBoneColliderData.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using kt.Physics;
  4. using kt.Serialization;
  5. using UnityEngine;
  6. [Serializable]
  7. public class DynamicBoneColliderData : ASerializationVersionControl
  8. {
  9. public override int FixVersion
  10. {
  11. get
  12. {
  13. return 1000;
  14. }
  15. }
  16. public override void OnBeforeSerialize()
  17. {
  18. base.OnBeforeSerialize();
  19. this.StatusJsonStrList = new List<string>();
  20. for (int i = 0; i < this.colliderStatusList.Count; i++)
  21. {
  22. NativeColliderStatus nativeColliderStatus = this.colliderStatusList[i];
  23. string text = string.Empty;
  24. switch (nativeColliderStatus.colliderType)
  25. {
  26. case NativeColliderStatus.ColliderType.Plane:
  27. text = JsonUtility.ToJson(nativeColliderStatus as NativePlaneColliderStatus);
  28. break;
  29. case NativeColliderStatus.ColliderType.Capsule:
  30. text = JsonUtility.ToJson(nativeColliderStatus as NativeCapsuleColliderStatus);
  31. break;
  32. case NativeColliderStatus.ColliderType.Sphere:
  33. text = JsonUtility.ToJson(nativeColliderStatus as NativeSphereColliderStatus);
  34. break;
  35. case NativeColliderStatus.ColliderType.MaidPropCol:
  36. text = JsonUtility.ToJson(nativeColliderStatus as NativeMaidPropColliderStatus);
  37. break;
  38. }
  39. if (!string.IsNullOrEmpty(text))
  40. {
  41. this.StatusJsonStrList.Add(text);
  42. }
  43. }
  44. }
  45. public override void OnAfterDeserialize()
  46. {
  47. base.OnAfterDeserialize();
  48. this.colliderStatusList.Clear();
  49. for (int i = 0; i < this.StatusJsonStrList.Count; i++)
  50. {
  51. string json = this.StatusJsonStrList[i];
  52. NativeColliderStatus nativeColliderStatus = JsonUtility.FromJson<NativeColliderStatus>(json);
  53. switch (nativeColliderStatus.colliderType)
  54. {
  55. case NativeColliderStatus.ColliderType.Plane:
  56. {
  57. NativePlaneColliderStatus item = JsonUtility.FromJson<NativePlaneColliderStatus>(json);
  58. this.colliderStatusList.Add(item);
  59. break;
  60. }
  61. case NativeColliderStatus.ColliderType.Capsule:
  62. {
  63. NativeCapsuleColliderStatus item2 = JsonUtility.FromJson<NativeCapsuleColliderStatus>(json);
  64. this.colliderStatusList.Add(item2);
  65. break;
  66. }
  67. case NativeColliderStatus.ColliderType.Sphere:
  68. {
  69. NativeSphereColliderStatus item3 = JsonUtility.FromJson<NativeSphereColliderStatus>(json);
  70. this.colliderStatusList.Add(item3);
  71. break;
  72. }
  73. case NativeColliderStatus.ColliderType.MaidPropCol:
  74. {
  75. NativeMaidPropColliderStatus item4 = JsonUtility.FromJson<NativeMaidPropColliderStatus>(json);
  76. this.colliderStatusList.Add(item4);
  77. break;
  78. }
  79. }
  80. }
  81. this.StatusJsonStrList.Clear();
  82. this.StatusJsonStrList = null;
  83. }
  84. [NonSerialized]
  85. public List<NativeColliderStatus> colliderStatusList = new List<NativeColliderStatus>();
  86. [SerializeField]
  87. private List<string> StatusJsonStrList;
  88. public List<DynamicYureBone.LimbColliderInfo> limbEnableList = new List<DynamicYureBone.LimbColliderInfo>();
  89. }