// Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null // GameDataEditor.GDEPPX using System; using System.Collections; using System.Collections.Generic; using GameDataEditor; using UnityEngine; namespace GameDataEditor { public class GDEPPX { private enum ListType { Float, Int32, Bool, String, Vector2, Vector3, Quaternion, Color, Vector4, Float_2D, Int32_2D, Bool_2D, String_2D, Vector2_2D, Vector3_2D, Vector4_2D, Quaternion_2D, Color_2D } private static int endianDiff1; private static int endianDiff2; private static int idx; private static byte[] byteBlock; private static void ConvertToInt(List list, byte[] bytes) { ConvertToInt((IList)list, bytes); } private static void ConvertToInt(IList list, byte[] bytes) { list.Add(ConvertBytesToInt32(bytes)); } private static void ConvertToFloat(List list, byte[] bytes) { ConvertToFloat((IList)list, bytes); } private static void ConvertToFloat(IList list, byte[] bytes) { list.Add(ConvertBytesToFloat(bytes)); } private static void ConvertToVector2(List list, byte[] bytes) { ConvertToVector2((IList)list, bytes); } private static void ConvertToVector2(IList list, byte[] bytes) { list.Add(new Vector2(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); } private static void ConvertToVector3(List list, byte[] bytes) { ConvertToVector3((IList)list, bytes); } private static void ConvertToVector3(IList list, byte[] bytes) { list.Add(new Vector3(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); } private static void ConvertToVector4(List list, byte[] bytes) { ConvertToVector4((IList)list, bytes); } private static void ConvertToVector4(IList list, byte[] bytes) { list.Add(new Vector4(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); } private static void ConvertToQuaternion(List list, byte[] bytes) { ConvertToQuaternion((IList)list, bytes); } private static void ConvertToQuaternion(IList list, byte[] bytes) { list.Add(new Quaternion(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); } private static void ConvertToColor(List list, byte[] bytes) { ConvertToColor((IList)list, bytes); } private static void ConvertToColor(IList list, byte[] bytes) { list.Add(new Color(ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes), ConvertBytesToFloat(bytes))); } private static void ConvertFromInt(int[] array, byte[] bytes, int i) { ConvertInt32ToBytes(array[i], bytes); } private static void ConvertFromInt(IList list, byte[] bytes, int i) { ConvertInt32ToBytes((int)list[i], bytes); } private static void ConvertFromFloat(float[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i], bytes); } private static void ConvertFromFloat(IList list, byte[] bytes, int i) { ConvertFloatToBytes((float)list[i], bytes); } private static void ConvertFromVector2(Vector2[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i].x, bytes); ConvertFloatToBytes(array[i].y, bytes); } private static void ConvertFromVector2(IList list, byte[] bytes, int i) { ConvertFloatToBytes(((Vector2)list[i]).x, bytes); ConvertFloatToBytes(((Vector2)list[i]).y, bytes); } private static void ConvertFromVector3(Vector3[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i].x, bytes); ConvertFloatToBytes(array[i].y, bytes); ConvertFloatToBytes(array[i].z, bytes); } private static void ConvertFromVector3(IList list, byte[] bytes, int i) { ConvertFloatToBytes(((Vector3)list[i]).x, bytes); ConvertFloatToBytes(((Vector3)list[i]).y, bytes); ConvertFloatToBytes(((Vector3)list[i]).z, bytes); } private static void ConvertFromVector4(Vector4[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i].x, bytes); ConvertFloatToBytes(array[i].y, bytes); ConvertFloatToBytes(array[i].z, bytes); ConvertFloatToBytes(array[i].w, bytes); } private static void ConvertFromVector4(IList list, byte[] bytes, int i) { ConvertFloatToBytes(((Vector4)list[i]).x, bytes); ConvertFloatToBytes(((Vector4)list[i]).y, bytes); ConvertFloatToBytes(((Vector4)list[i]).z, bytes); ConvertFloatToBytes(((Vector4)list[i]).w, bytes); } private static void ConvertFromQuaternion(Quaternion[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i].x, bytes); ConvertFloatToBytes(array[i].y, bytes); ConvertFloatToBytes(array[i].z, bytes); ConvertFloatToBytes(array[i].w, bytes); } private static void ConvertFromQuaternion(IList list, byte[] bytes, int i) { ConvertFloatToBytes(((Quaternion)list[i]).x, bytes); ConvertFloatToBytes(((Quaternion)list[i]).y, bytes); ConvertFloatToBytes(((Quaternion)list[i]).z, bytes); ConvertFloatToBytes(((Quaternion)list[i]).w, bytes); } private static void ConvertFromColor(Color[] array, byte[] bytes, int i) { ConvertFloatToBytes(array[i].r, bytes); ConvertFloatToBytes(array[i].g, bytes); ConvertFloatToBytes(array[i].b, bytes); ConvertFloatToBytes(array[i].a, bytes); } private static void ConvertFromColor(IList list, byte[] bytes, int i) { ConvertFloatToBytes(((Color)list[i]).r, bytes); ConvertFloatToBytes(((Color)list[i]).g, bytes); ConvertFloatToBytes(((Color)list[i]).b, bytes); ConvertFloatToBytes(((Color)list[i]).a, bytes); } private static void ConvertFloatToBytes(float f, byte[] bytes) { byteBlock = BitConverter.GetBytes(f); ConvertTo4Bytes(bytes); } private static float ConvertBytesToFloat(byte[] bytes) { ConvertFrom4Bytes(bytes); return BitConverter.ToSingle(byteBlock, 0); } private static void ConvertInt32ToBytes(int i, byte[] bytes) { byteBlock = BitConverter.GetBytes(i); ConvertTo4Bytes(bytes); } private static int ConvertBytesToInt32(byte[] bytes) { ConvertFrom4Bytes(bytes); return BitConverter.ToInt32(byteBlock, 0); } private static void ConvertTo4Bytes(byte[] bytes) { bytes[idx] = byteBlock[endianDiff1]; bytes[idx + 1] = byteBlock[1 + endianDiff2]; bytes[idx + 2] = byteBlock[2 - endianDiff2]; bytes[idx + 3] = byteBlock[3 - endianDiff1]; idx += 4; } private static void ConvertFrom4Bytes(byte[] bytes) { byteBlock[endianDiff1] = bytes[idx]; byteBlock[1 + endianDiff2] = bytes[idx + 1]; byteBlock[2 - endianDiff2] = bytes[idx + 2]; byteBlock[3 - endianDiff1] = bytes[idx + 3]; idx += 4; } public static bool GetBool(string name) { return PlayerPrefs.GetInt(name) == 1; } public static bool GetBool(string name, bool defaultValue) { return 1 == PlayerPrefs.GetInt(name, defaultValue ? 1 : 0); } public static long GetLong(string key, long defaultValue) { SplitLong(defaultValue, out var lowBits, out var highBits); lowBits = PlayerPrefs.GetInt(key + "_lowBits", lowBits); highBits = PlayerPrefs.GetInt(key + "_highBits", highBits); ulong num = (uint)highBits; num <<= 32; return (long)(num | (uint)lowBits); } public static long GetLong(string key) { int @int = PlayerPrefs.GetInt(key + "_lowBits"); int int2 = PlayerPrefs.GetInt(key + "_highBits"); ulong num = (uint)int2; num <<= 32; return (long)(num | (uint)@int); } private static Vector2 GetVector2(string key) { List floatList = GetFloatList(key); if (floatList.Count < 2) { return Vector2.zero; } return new Vector2(floatList[0], floatList[1]); } public static Vector2 GetVector2(string key, Vector2 defaultValue) { Vector2 result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector2(key); } return result; } public static Color GetColor(string key) { List floatList = GetFloatList(key); if (floatList.Count < 4) { return Color.black; } return new Color(floatList[0], floatList[1], floatList[2], floatList[3]); } public static Color GetColor(string key, Color defaultValue) { Color result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetColor(key); } return result; } public static Vector3 GetVector3(string key) { List floatList = GetFloatList(key); if (floatList.Count < 3) { return Vector3.zero; } return new Vector3(floatList[0], floatList[1], floatList[2]); } public static Vector3 GetVector3(string key, Vector3 defaultValue) { Vector3 result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector3(key); } return result; } public static Vector4 GetVector4(string key) { List floatList = GetFloatList(key); if (floatList.Count < 4) { return Vector4.zero; } return new Vector4(floatList[0], floatList[1], floatList[2], floatList[3]); } public static Vector4 GetVector4(string key, Vector4 defaultValue) { Vector4 result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector4(key); } return result; } public static List GetBoolList(string key) { List list = new List(); if (PlayerPrefs.HasKey(key)) { byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); if (array.Length < 5) { Debug.LogError($"Corrupt preference file for: {key}"); return list; } if (array[0] != 2) { Debug.LogError($"{key} is not a boolean array."); return list; } Initialize(); byte[] array2 = new byte[array.Length - 5]; Array.Copy(array, 5, array2, 0, array2.Length); BitArray bitArray = new BitArray(array2); bitArray.Length = ConvertBytesToInt32(array); bool[] array3 = new bool[bitArray.Count]; bitArray.CopyTo(array3, 0); list.AddRange(array3); } return list; } public static List GetBoolList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetBoolList(key); } return result; } public static List> Get2DBoolList(string key) { List> list = new List>(); if (PlayerPrefs.HasKey(key)) { byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); if (array.Length < 5) { Debug.LogError($"Corrupt preference file for: {key}"); return list; } if (array[0] != 11) { Debug.LogError($"{key} is not a boolean array."); return list; } int num = BitConverter.ToInt32(array, 1); int num2 = num * 4 + 5; byte[] array2 = new byte[array.Length - num2]; Array.Copy(array, num2, array2, 0, array2.Length); BitArray bitArray = new BitArray(array2); int num3 = 5; int num4 = 0; int num5 = 0; for (int i = 0; i < num; i++) { num4 = BitConverter.ToInt32(array, num3); num3 += 4; List list2 = new List(); for (int j = 0; j < num4; j++) { list2.Add(bitArray.Get(num5++)); } list.Add(list2); } } return list; } public static List> Get2DBoolList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DBoolList(key); } return result; } public static List GetStringList(string key) { if (PlayerPrefs.HasKey(key)) { string @string = PlayerPrefs.GetString(key); List list = Json.Deserialize(@string) as List; return list.ConvertAll((object obj) => obj.ToString()); } return new List(); } public static List GetStringList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetStringList(key); } return result; } public static List> Get2DStringList(string key) { if (PlayerPrefs.HasKey(key)) { string @string = PlayerPrefs.GetString(key); List list = Json.Deserialize(@string) as List; List> list2 = new List>(); { foreach (object item in list) { List list3 = item as List; list2.Add(list3.ConvertAll((object obj) => obj.ToString())); } return list2; } } return new List>(); } public static List> Get2DStringList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DStringList(key); } return result; } public static List GetIntList(string key) { List list = new List(); GetValue(key, list, ListType.Int32, 1, ConvertToInt); return list; } public static List GetIntList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetIntList(key); } return result; } public static List> Get2DIntList(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Int32_2D, 1, ConvertToInt); return list; } public static List> Get2DIntList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DIntList(key); } return result; } public static List GetFloatList(string key) { List list = new List(); GetValue(key, list, ListType.Float, 1, ConvertToFloat); return list; } public static List GetFloatList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetFloatList(key); } return result; } public static List> Get2DFloatList(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Float_2D, 1, ConvertToFloat); return list; } public static List> Get2DFloatList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DFloatList(key); } return result; } public static List GetVector2List(string key) { List list = new List(); GetValue(key, list, ListType.Vector2, 2, ConvertToVector2); return list; } public static List GetVector2List(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector2List(key); } return result; } public static List> Get2DVector2List(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Vector2_2D, 2, ConvertToVector2); return list; } public static List> Get2DVector2List(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DVector2List(key); } return result; } public static List GetVector3List(string key) { List list = new List(); GetValue(key, list, ListType.Vector3, 3, ConvertToVector3); return list; } public static List GetVector3List(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector3List(key); } return result; } public static List> Get2DVector3List(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Vector3_2D, 3, ConvertToVector3); return list; } public static List> Get2DVector3List(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DVector3List(key); } return result; } public static List GetVector4List(string key) { List list = new List(); GetValue(key, list, ListType.Vector4, 4, ConvertToVector4); return list; } public static List GetVector4List(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetVector4List(key); } return result; } public static List> Get2DVector4List(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Vector4_2D, 4, ConvertToVector4); return list; } public static List> Get2DVector4List(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DVector4List(key); } return result; } public static List GetQuaternionList(string key) { List list = new List(); GetValue(key, list, ListType.Quaternion, 4, ConvertToQuaternion); return list; } public static List GetQuaternionList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetQuaternionList(key); } return result; } public static List> Get2DQuaternionList(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Quaternion_2D, 4, ConvertToQuaternion); return list; } public static List> Get2DQuaternionList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DQuaternionList(key); } return result; } public static List GetColorList(string key) { List list = new List(); GetValue(key, list, ListType.Color, 4, ConvertToColor); return list; } public static List GetColorList(string key, List defaultValue) { List result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetColorList(key); } return result; } public static List> Get2DColorList(string key) { List> list = new List>(); Get2DValue(key, list, ListType.Color_2D, 4, ConvertToColor); return list; } public static List> Get2DColorList(string key, List> defaultValue) { List> result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = Get2DColorList(key); } return result; } private static void GetValue(string key, T list, ListType arrayType, int vectorNumber, Action convert) where T : IList { if (!PlayerPrefs.HasKey(key)) { return; } byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); if ((array.Length - 1) % (vectorNumber * 4) != 0) { Debug.LogError($"Corrupt preference file for: {key}"); return; } if ((ListType)array[0] != arrayType) { Debug.LogError($"{key} is not a {arrayType.ToString()} array."); return; } Initialize(); int num = (array.Length - 1) / (vectorNumber * 4); for (int i = 0; i < num; i++) { convert(list, array); } } private static void Get2DValue(string key, T list, ListType arrayType, int vectorNumber, Action convert) where T : IList { if (!PlayerPrefs.HasKey(key)) { return; } byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); if (array.Length < 5) { Debug.LogError($"Corrupt preference file for: {key}"); return; } int num = BitConverter.ToInt32(array, 1); byte[] array2 = new byte[num * 4 + 5]; Array.Copy(array, 0, array2, 0, array2.Length); List list2 = new List(array); list2.RemoveRange(1, array2.Length - 1); array = list2.ToArray(); if ((array.Length - 1) % (vectorNumber * 4) != 0) { Debug.LogError($"Corrupt preference file for: {key}"); return; } if ((ListType)array[0] != arrayType) { Debug.LogError(string.Format("Corrupt preference file for: {0}", key, arrayType.ToString())); return; } Initialize(); GetNewListForType(arrayType, out var list3); int num2 = (array.Length - 1) / (vectorNumber * 4); for (int i = 0; i < num2; i++) { convert(list3, array); } int num3 = 0; int num4 = 0; int num5 = 5; for (int j = 0; j < num; j++) { num3 = BitConverter.ToInt32(array2, num5); num5 += 4; GetNewListForType(arrayType, out var list4); for (int k = 0; k < num3; k++) { list4.Add(list3[num4++]); } list.Add(list4); } } private static void GetNewListForType(ListType arrayType, out IList list) { list = null; if (arrayType.Equals(ListType.Bool_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Int32_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Float_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Vector2_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Vector3_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Vector4_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Quaternion_2D)) { list = new List(); } else if (arrayType.Equals(ListType.Color_2D)) { list = new List(); } } public static Quaternion GetQuaternion(string key) { List floatList = GetFloatList(key); if (floatList.Count < 4) { return Quaternion.identity; } return new Quaternion(floatList[0], floatList[1], floatList[2], floatList[3]); } public static Quaternion GetQuaternion(string key, Quaternion defaultValue) { Quaternion result = defaultValue; if (PlayerPrefs.HasKey(key)) { result = GetQuaternion(key); } return result; } private static void Initialize(bool is2DList = false) { if (BitConverter.IsLittleEndian) { endianDiff1 = 0; endianDiff2 = 0; } else { endianDiff1 = 3; endianDiff2 = 1; } if (byteBlock == null) { byteBlock = new byte[4]; } if (is2DList) { idx = 0; } else { idx = 1; } } private static void SplitLong(long input, out int lowBits, out int highBits) { lowBits = (int)input; highBits = (int)(input >> 32); } public static void ShowArrayType(string key) { byte[] array = Convert.FromBase64String(PlayerPrefs.GetString(key)); if (array.Length > 0) { ListType listType = (ListType)array[0]; Debug.Log(string.Format("Corrupt preference file for: {0}", key, listType.ToString())); } } private static bool SaveBytes(string key, byte[] bytes) { try { PlayerPrefs.SetString(key, Convert.ToBase64String(bytes)); } catch { return false; } return true; } public static bool SetBool(string name, bool value) { try { PlayerPrefs.SetInt(name, value ? 1 : 0); } catch { return false; } return true; } public static void SetLong(string key, long value) { SplitLong(value, out var lowBits, out var highBits); PlayerPrefs.SetInt(key + "_lowBits", lowBits); PlayerPrefs.SetInt(key + "_highBits", highBits); } public static bool SetVector2(string key, Vector2 vector) { return SetFloatList(key, new List { vector.x, vector.y }); } public static bool SetVector3(string key, Vector3 vector) { return SetFloatList(key, new List { vector.x, vector.y, vector.z }); } public static bool SetVector4(string key, Vector4 vector) { return SetFloatList(key, new List { vector.x, vector.y, vector.z, vector.w }); } public static bool SetQuaternion(string key, Quaternion vector) { return SetFloatList(key, new List { vector.x, vector.y, vector.z, vector.w }); } public static bool SetColor(string key, Color color) { return SetFloatList(key, new List { color.r, color.g, color.b, color.a }); } public static bool SetGameObject(string key, GameObject go) { return true; } public static bool SetTexture2D(string key, Texture2D tex) { return true; } public static bool SetMaterial(string key, Material mat) { return true; } public static bool SetAudioClip(string key, AudioClip aud) { return true; } public static bool SetBoolList(string key, List boolList) { byte[] array = new byte[(boolList.Count + 7) / 8 + 5]; array[0] = Convert.ToByte(ListType.Bool); BitArray bitArray = new BitArray(boolList.ToArray()); bitArray.CopyTo(array, 5); Initialize(); ConvertInt32ToBytes(boolList.Count, array); return SaveBytes(key, array); } public static bool Set2DBoolList(string key, List> list) { int num = 5; List list2 = new List(); foreach (List item in list) { num += 4; list2.AddRange(item); } num += (list2.Count + 7) / 8; int num2 = 0; byte[] array = new byte[num]; array[0] = Convert.ToByte(ListType.Bool_2D); num2++; byte[] bytes = BitConverter.GetBytes(list.Count); if (!BitConverter.IsLittleEndian) { Array.Reverse(bytes); } bytes.CopyTo(array, num2); num2 += bytes.Length; foreach (List item2 in list) { bytes = BitConverter.GetBytes(item2.Count); if (!BitConverter.IsLittleEndian) { Array.Reverse(bytes); } bytes.CopyTo(array, num2); num2 += bytes.Length; } BitArray bitArray = new BitArray(list2.ToArray()); bitArray.CopyTo(array, num2); return SaveBytes(key, array); } public static bool SetStringList(string key, List list) { bool result = false; try { string value = Json.Serialize(list); PlayerPrefs.SetString(key, value); result = true; } catch (Exception exception) { Debug.LogException(exception); } return result; } public static bool Set2DStringList(string key, List> list) { bool result = false; try { string value = Json.Serialize(list); PlayerPrefs.SetString(key, value); result = true; } catch (Exception exception) { Debug.LogException(exception); } return result; } public static bool SetIntList(string key, List list) { return SetValue(key, list, ListType.Int32, 1, ConvertFromInt); } public static bool SetFloatList(string key, List list) { return SetValue(key, list, ListType.Float, 1, ConvertFromFloat); } public static bool SetVector2List(string key, List list) { return SetValue(key, list, ListType.Vector2, 2, ConvertFromVector2); } public static bool SetVector3List(string key, List list) { return SetValue(key, list, ListType.Vector3, 3, ConvertFromVector3); } public static bool SetVector4List(string key, List list) { return SetValue(key, list, ListType.Vector4, 4, ConvertFromVector4); } public static bool SetQuaternionList(string key, List list) { return SetValue(key, list, ListType.Quaternion, 4, ConvertFromQuaternion); } public static bool SetColorList(string key, List list) { return SetValue(key, list, ListType.Color, 4, ConvertFromColor); } public static bool SetGameObjectList(string key, List list) { return true; } public static bool SetTexture2DList(string key, List list) { return true; } public static bool SetMaterialList(string key, List List) { return true; } public static bool SetAudioClipList(string key, List list) { return true; } private static bool SetValue(string key, T array, ListType arrayType, int vectorNumber, Action convert) where T : IList { byte[] array2 = new byte[4 * array.Count * vectorNumber + 1]; array2[0] = Convert.ToByte(arrayType); Initialize(); for (int i = 0; i < array.Count; i++) { convert(array, array2, i); } return SaveBytes(key, array2); } public static bool Set2DIntList(string key, List> int2DList) { return Set2DValue(key, int2DList, ListType.Int32_2D, 1, ConvertFromInt); } public static bool Set2DFloatList(string key, List> float2DList) { return Set2DValue(key, float2DList, ListType.Float_2D, 1, ConvertFromFloat); } public static bool Set2DVector2List(string key, List> vec2_2DList) { return Set2DValue(key, vec2_2DList, ListType.Vector2_2D, 2, ConvertFromVector2); } public static bool Set2DVector3List(string key, List> vec3_2DList) { return Set2DValue(key, vec3_2DList, ListType.Vector3_2D, 3, ConvertFromVector3); } public static bool Set2DVector4List(string key, List> vec4_2DList) { return Set2DValue(key, vec4_2DList, ListType.Vector4_2D, 4, ConvertFromVector4); } public static bool Set2DGameObjectList(string key, List> go_2DList) { return true; } public static bool Set2DTexture2DList(string key, List> tex_2DList) { return true; } public static bool Set2DMaterialList(string key, List> mat_2DList) { return true; } public static bool Set2DAudioClipList(string key, List> aud_2DList) { return true; } public static bool Set2DQuaternionList(string key, List> quaternion_2DList) { return Set2DValue(key, quaternion_2DList, ListType.Quaternion_2D, 4, ConvertFromQuaternion); } public static bool Set2DColorList(string key, List> color_2DList) { return Set2DValue(key, color_2DList, ListType.Color_2D, 4, ConvertFromColor); } private static bool Set2DValue(string key, IList list, ListType arrayType, int vectorNumber, Action convert) { List list2 = new List(); list2.Add(Convert.ToByte(arrayType)); byte[] bytes = BitConverter.GetBytes(list.Count); if (!BitConverter.IsLittleEndian) { Array.Reverse(bytes); } list2.AddRange(bytes); foreach (IList item in list) { bytes = BitConverter.GetBytes(item.Count); if (!BitConverter.IsLittleEndian) { Array.Reverse(bytes); } list2.AddRange(bytes); } for (int i = 0; i < list.Count; i++) { IList list4 = list[i] as IList; byte[] array = new byte[4 * list4.Count * vectorNumber]; Initialize(is2DList: true); for (int j = 0; j < list4.Count; j++) { convert(list4, array, j); } list2.AddRange(array); } return SaveBytes(key, list2.ToArray()); } } }