/// <summary> /// シリアライズ /// /// </summary> /// <returns></returns> public string Serialize() { List <byte> data = new List <byte>(256); data.AddRange(BinaryStructConverter.ToByteArray((serializableData)this)); if (frame.collider != null && frame.collider.Length > 0) { for (int i = 0; i < frame.collider.Length; i++) { data.AddRange(BinaryStructConverter.ToByteArray(frame.collider[i])); } } return(Convert.ToBase64String(data.ToArray())); }
/// <summary> /// デシリアライズ /// /// </summary> /// <param name="s"></param> static public internalFrameData Deserialize(string s) { var data = Convert.FromBase64String(s); var serializedResult = BinaryStructConverter.FromByteArray <serializableData>(data); var count = serializedResult.numColliders; internalFrameData result = serializedResult; if (count > 0) { int sizeofFrame = Marshal.SizeOf(typeof(serializableData)); int sizeofCollider = Marshal.SizeOf(typeof(HitboxColliderData)); var colliderArray = new HitboxColliderData[count]; for (int i = 0; i < count; i++) { colliderArray[i] = BinaryStructConverter.FromByteArray <HitboxColliderData>(data, sizeofFrame + sizeofCollider * i); } result.frame.collider = colliderArray; } return(result); }