static string GetString(Container.Item item) { if (item.Is <string>()) { return(item.GetValue <string>()); } if (item.Is <int>()) { return(item.GetValue <int>().ToString()); } if (item.Is <float>()) { return(item.GetValue <float>().ToString()); } if (item.Is <bool>()) { return(item.GetValue <bool>().ToString()); } if (item.Is <KeyCode>()) { return(item.GetValue <KeyCode>().ToString()); } if (item.IsArray) { var s = new List <string>(); foreach (var i in (item as Container.ItemArray).items) { s.Add(GetString(i)); } return(System.String.Join(",", s)); } return(ZeroValueOf <string>()); }
static bool GetArrayEnumOfType <T>(Container.Item item, out T[] array) where T : struct { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new List <T>(); for (int i = 0; i < arraySrc.items.Length; i++) { T res; if (GetEnumOfType <T>(arraySrc.items[i], out res)) { arrayRes.Add(res); } } array = arrayRes.ToArray(); return(true); } else { T res; if (GetEnumOfType <T>(item, out res)) { array = new T[1] { res }; return(true); } } array = new T[0]; return(false); }
static bool GetEnumOfType <T>(Container.Item item, out T res) where T : struct { if (item.Is <string>()) { if (System.Enum.TryParse <T>(item.GetValue <string>(), out res)) { return(true); } } res = (T)(object)0; return(false); }
static KeyCode[] GetArrayKeyCode(Container.Item item) { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new KeyCode[arraySrc.items.Length]; for (int i = 0; i < arraySrc.items.Length; i++) { arrayRes[i] = GetKeyCode(arraySrc.items[i]); } return(arrayRes); } return(ZeroValueOf <KeyCode[]>()); }
static bool[] GetArrayBool(Container.Item item) { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new bool[arraySrc.items.Length]; for (int i = 0; i < arraySrc.items.Length; i++) { arrayRes[i] = GetBool(arraySrc.items[i]); } return(arrayRes); } return(ZeroValueOf <bool[]>()); }
static float[] GetArrayFloat(Container.Item item) { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new float[arraySrc.items.Length]; for (int i = 0; i < arraySrc.items.Length; i++) { arrayRes[i] = GetFloat(arraySrc.items[i]); } return(arrayRes); } return(ZeroValueOf <float[]>()); }
static string[] GetArrayString(Container.Item item) { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new string[arraySrc.items.Length]; for (int i = 0; i < arraySrc.items.Length; i++) { arrayRes[i] = GetString(arraySrc.items[i]); } return(arrayRes); } return(ZeroValueOf <string[]>()); }
static Color GetColor(Container.Item item) { Color color = ZeroValueOf <Color>(); if (item.Is <string>()) { string c_ = "#" + item.GetValue <string>(); if (ColorUtility.TryParseHtmlString(c_, out color)) { return(color); } } return(color); }
static T GetValueOf <T>(Container.Item item) { if (typeof(T) == typeof(int)) { return((T)System.Convert.ChangeType(GetInt(item), typeof(T))); } else if (typeof(T) == typeof(float)) { return((T)System.Convert.ChangeType(GetFloat(item), typeof(T))); } else if (typeof(T) == typeof(string)) { return((T)System.Convert.ChangeType(GetString(item), typeof(T))); } else if (typeof(T) == typeof(Color)) { return((T)System.Convert.ChangeType(GetColor(item), typeof(T))); } else if (typeof(T) == typeof(bool)) { return((T)System.Convert.ChangeType(GetBool(item), typeof(T))); } else if (typeof(T) == typeof(KeyCode)) { return((T)System.Convert.ChangeType(GetKeyCode(item), typeof(T))); } else if (typeof(T) == typeof(int[])) { return((T)System.Convert.ChangeType(GetArrayInt(item), typeof(T))); } else if (typeof(T) == typeof(float[])) { return((T)System.Convert.ChangeType(GetArrayFloat(item), typeof(T))); } else if (typeof(T) == typeof(string[])) { return((T)System.Convert.ChangeType(GetArrayString(item), typeof(T))); } else if (typeof(T) == typeof(bool[])) { return((T)System.Convert.ChangeType(GetArrayBool(item), typeof(T))); } else if (typeof(T) == typeof(KeyCode[])) { return((T)System.Convert.ChangeType(GetArrayKeyCode(item), typeof(T))); } return((T)System.Convert.ChangeType(GetString(item), typeof(T))); }
static KeyCode GetKeyCode(Container.Item item) { if (item.Is <KeyCode>()) { return(item.GetValue <KeyCode>()); } if (item.Is <string>()) { KeyCode _keyCode; if (System.Enum.TryParse(item.GetValue <string>(), out _keyCode)) { return(_keyCode); } } return(ZeroValueOf <KeyCode>()); }
static T[] GetArrayOf <T>(Container.Item item) { if (item.IsArray) { var arraySrc = (item as Container.ItemArray); var arrayRes = new T[arraySrc.items.Length]; for (int i = 0; i < arraySrc.items.Length; i++) { arrayRes[i] = GetValueOf <T>(arraySrc.items[i]); } return(arrayRes); } return(new T[1] { GetValueOf <T>(item) }); }
static float GetFloat(Container.Item item) { if (item.Is <float>()) { return(item.GetValue <float>()); } if (item.Is <int>()) { return((float)item.GetValue <int>()); } if (item.Is <string>()) { float _float; if (float.TryParse(item.GetValue <string>(), out _float)) { return(_float); } } return(ZeroValueOf <float>()); }
static int GetInt(Container.Item item) { if (item.Is <int>()) { return(item.GetValue <int>()); } if (item.Is <float>()) { return(Mathf.RoundToInt(item.GetValue <float>())); } if (item.Is <string>()) { int _int; if (int.TryParse(item.GetValue <string>(), out _int)) { return(_int); } } return(ZeroValueOf <int>()); }
static bool GetBool(Container.Item item) { if (item.Is <bool>()) { return(item.GetValue <bool>()); } if (item.Is <string>()) { bool _bool; if (TryParseBool(item.GetValue <string>(), out _bool)) { return(_bool); } } if (item.Is <int>()) { return(TryParseBool(item.GetValue <int>())); } if (item.Is <float>()) { return(TryParseBool(item.GetValue <float>())); } return(ZeroValueOf <bool>()); }
static T GetRandomFromArrayOf <T>(Container.Item item) { var array = GetArrayOf <T>(item); return(array[Random.Range(0, array.Length)]); }