using System; using System.Buffers; using MemoryPack; using UnityEngine; namespace SerializeAnimation.Serializer { [MemoryPackable] public readonly partial struct HumanPoseSerializable { public readonly Vector3 BodyPosition; public readonly Quaternion BodyRotation; // 95 public readonly float[] Muscles; public HumanPoseSerializable(Vector3 bodyPosition, Quaternion bodyRotation, float[] muscles) { BodyPosition = bodyPosition; BodyRotation = bodyRotation; Muscles = muscles; } public byte[] Serialize() { return MemoryPackSerializer.Serialize(this); } public static HumanPoseSerializable Deserialize(in ReadOnlySpan buffer) { return MemoryPackSerializer.Deserialize(buffer); } public static HumanPoseSerializable Deserialize(in ReadOnlySequence buffer) { return MemoryPackSerializer.Deserialize(buffer); } [MemoryPackIgnore] public HumanPose HumanPose => new HumanPose { bodyPosition = BodyPosition, bodyRotation = BodyRotation, muscles = Muscles, }; } public static class ExtensionHumanPose { public static HumanPoseSerializable ToSerializable(this HumanPose humanPose) { return new HumanPoseSerializable(humanPose.bodyPosition, humanPose.bodyRotation, humanPose.muscles); } } }