diff --git a/Assets/Convention b/Assets/Convention index 32f0038..a530eba 160000 --- a/Assets/Convention +++ b/Assets/Convention @@ -1 +1 @@ -Subproject commit 32f0038e343a20a750f068f0121021d6d9a1ea02 +Subproject commit a530eba460e2d2bb87cf704d95999ce6399ecd60 diff --git a/Assets/Scripts/Framework/ScriptableObject.cs b/Assets/Scripts/Framework/ScriptableObject.cs index 6fa63af..2ee2b98 100644 --- a/Assets/Scripts/Framework/ScriptableObject.cs +++ b/Assets/Scripts/Framework/ScriptableObject.cs @@ -1,9 +1,5 @@ using Convention; -using Convention.RScript; using Convention.WindowsUI.Variant; -using Demo.Game.Attr; -using Demo.Game; -using Dreamteck.Splines; using System; using System.Collections; using System.Collections.Generic; @@ -11,9 +7,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; using Unity.Collections; -using Unity.VisualScripting; using UnityEngine; -using UnityEngine.Rendering; namespace Demo.Game { diff --git a/Assets/Scripts/Framework/Updatement.cs b/Assets/Scripts/Framework/Updatement.cs index bada6c5..6b42a4d 100644 --- a/Assets/Scripts/Framework/Updatement.cs +++ b/Assets/Scripts/Framework/Updatement.cs @@ -3,11 +3,109 @@ using Demo.Editor.UI; using System; using System.Collections; using System.Collections.Generic; +using System.IO; using Unity.Collections; using UnityEngine; namespace Demo.Game { + namespace ConfigType + { + public abstract class UpdatementConfig: ScriptLoadableConfig where DataType : struct + { + public NativeArray TimePoints; + public NativeArray Positions; + public NativeArray EaseCurveTypes; + + protected abstract void DeserializePositions(BinaryReader reader, ref NativeArray positions); + protected abstract void SerializePositions(BinaryWriter writer, in NativeArray positions); + + public override void Deserialize(BinaryReader reader) + { + BinarySerializeUtility.DeserializeNativeArray(reader, ref TimePoints); + DeserializePositions(reader, ref Positions); + { + NativeArray temp = new(EaseCurveTypes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); + BinarySerializeUtility.DeserializeNativeArray(reader, ref temp); + for (int i = 0, e = EaseCurveTypes.Length; i < e; i++) + { + EaseCurveTypes[i] = (MathExtension.EaseCurveType)temp[i]; + } + temp.Dispose(); + } + base.Deserialize(reader); + } + + public override void Serialize(BinaryWriter writer) + { + BinarySerializeUtility.SerializeNativeArray(writer, TimePoints); + SerializePositions(writer, Positions); + { + NativeArray temp = new(EaseCurveTypes.Length, Allocator.Temp, NativeArrayOptions.UninitializedMemory); + for (int i = 0, e = EaseCurveTypes.Length; i < e; i++) + { + temp[i] = (int)EaseCurveTypes[i]; + } + BinarySerializeUtility.SerializeNativeArray(writer, temp); + temp.Dispose(); + } + base.Serialize(writer); + } + } + + public class UpdatementIntConfig : UpdatementConfig + { + protected override void DeserializePositions(BinaryReader reader, ref NativeArray positions) + { + BinarySerializeUtility.DeserializeNativeArray(reader, ref positions); + } + + protected override void SerializePositions(BinaryWriter writer, in NativeArray positions) + { + BinarySerializeUtility.SerializeNativeArray(writer, positions); + } + } + + public class UpdatementFloatConfig : UpdatementConfig + { + protected override void DeserializePositions(BinaryReader reader, ref NativeArray positions) + { + BinarySerializeUtility.DeserializeNativeArray(reader, ref positions); + } + + protected override void SerializePositions(BinaryWriter writer, in NativeArray positions) + { + BinarySerializeUtility.SerializeNativeArray(writer, positions); + } + } + + public class UpdatementVec2Config : UpdatementConfig + { + protected override void DeserializePositions(BinaryReader reader, ref NativeArray positions) + { + BinarySerializeUtility.DeserializeNativeArray(reader, ref positions); + } + + protected override void SerializePositions(BinaryWriter writer, in NativeArray positions) + { + BinarySerializeUtility.SerializeNativeArray(writer, positions); + } + } + + public class UpdatementVec3Config : UpdatementConfig + { + protected override void DeserializePositions(BinaryReader reader, ref NativeArray positions) + { + BinarySerializeUtility.DeserializeNativeArray(reader, ref positions); + } + + protected override void SerializePositions(BinaryWriter writer, in NativeArray positions) + { + BinarySerializeUtility.SerializeNativeArray(writer, positions); + } + } + } + public abstract class Updatement : TimelineScriptObject where DataType : struct { [Serializable]