using System; using System.Collections.Generic; using kt.Physics; using kt.Serialization; using UnityEngine; [Serializable] public class DynamicBoneColliderData : ASerializationVersionControl { public override int FixVersion { get { return 1000; } } public override void OnBeforeSerialize() { base.OnBeforeSerialize(); this.StatusJsonStrList = new List(); for (int i = 0; i < this.colliderStatusList.Count; i++) { NativeColliderStatus nativeColliderStatus = this.colliderStatusList[i]; string text = string.Empty; switch (nativeColliderStatus.colliderType) { case NativeColliderStatus.ColliderType.Plane: text = JsonUtility.ToJson(nativeColliderStatus as NativePlaneColliderStatus); break; case NativeColliderStatus.ColliderType.Capsule: text = JsonUtility.ToJson(nativeColliderStatus as NativeCapsuleColliderStatus); break; case NativeColliderStatus.ColliderType.Sphere: text = JsonUtility.ToJson(nativeColliderStatus as NativeSphereColliderStatus); break; case NativeColliderStatus.ColliderType.MaidPropCol: text = JsonUtility.ToJson(nativeColliderStatus as NativeMaidPropColliderStatus); break; } if (!string.IsNullOrEmpty(text)) { this.StatusJsonStrList.Add(text); } } } public override void OnAfterDeserialize() { base.OnAfterDeserialize(); this.colliderStatusList.Clear(); for (int i = 0; i < this.StatusJsonStrList.Count; i++) { string json = this.StatusJsonStrList[i]; NativeColliderStatus nativeColliderStatus = JsonUtility.FromJson(json); switch (nativeColliderStatus.colliderType) { case NativeColliderStatus.ColliderType.Plane: { NativePlaneColliderStatus item = JsonUtility.FromJson(json); this.colliderStatusList.Add(item); break; } case NativeColliderStatus.ColliderType.Capsule: { NativeCapsuleColliderStatus item2 = JsonUtility.FromJson(json); this.colliderStatusList.Add(item2); break; } case NativeColliderStatus.ColliderType.Sphere: { NativeSphereColliderStatus item3 = JsonUtility.FromJson(json); this.colliderStatusList.Add(item3); break; } case NativeColliderStatus.ColliderType.MaidPropCol: { NativeMaidPropColliderStatus item4 = JsonUtility.FromJson(json); this.colliderStatusList.Add(item4); break; } } } this.StatusJsonStrList.Clear(); this.StatusJsonStrList = null; } [NonSerialized] public List colliderStatusList = new List(); [SerializeField] private List StatusJsonStrList; public List limbEnableList = new List(); }