2using System.Collections;
3using System.Collections.Generic;
6using System.Reflection;
8using System.Text.RegularExpressions;
11using UnityEngine.Events;
20 public static string lang(
this string s)
31 public static string lang(
this string s,
string ref1,
string ref2 =
null,
string ref3 =
null,
string ref4 =
null,
string ref5 =
null)
33 return Lang.
Parse(s, ref1, ref2, ref3, ref4, ref5);
46 public static string langGame(
this string s,
string ref1,
string ref2 =
null,
string ref3 =
null,
string ref4 =
null)
53 return "(" + str +
")";
56 public static string Bracket(
this string str,
int type = 0)
69 return list[0] + str + list[1];
72 return "_bracketLeft".lang() + str +
"_bracketRight".lang();
76 public static byte[]
ToBytes(
this BitArray bits)
78 byte[] array =
new byte[(bits.Length - 1) / 8 + 1];
79 bits.CopyTo(array, 0);
83 public static bool GetBit(
this byte pByte,
int bitNo)
85 return (pByte & (1 << bitNo)) != 0;
88 public static byte SetBit(
this byte pByte,
int bitNo,
bool value)
92 return Convert.ToByte(pByte & ~(1 << bitNo));
94 return Convert.ToByte(pByte | (1 << bitNo));
97 public static int ToInt3(
this float a)
99 return (
int)(a * 1000f);
104 return (
float)a / 1000f;
109 return (
int)(a * 100f);
114 return (
float)a / 100f;
135 public static bool IsOn(
this int data,
int digit)
139 return bitArray[digit];
144 return (T)Enum.ToObject(typeof(T), value);
149 return (T)Enum.ToObject(typeof(T), value);
152 public static T
ToEnum<T>(
this string value,
bool ignoreCase =
true)
154 return (T)Enum.Parse(typeof(T), value, ignoreCase);
157 public static Type
ToType(
this string value)
159 return Type.GetType(
"Elona." + value +
", Assembly-CSharp");
164 return ((T[])Enum.GetValues(src.GetType())).NextItem(src);
169 return ((T[])Enum.GetValues(src.GetType())).PrevItem(src);
172 public static bool Within(
this int v,
int v2,
int range)
176 return v - v2 < -range;
181 public static bool Within(
this byte v,
byte v2,
byte range)
185 return v - v2 < -range;
190 public static int Clamp(
this int v,
int min,
int max,
bool loop =
false)
194 v = ((!loop) ? min : max);
198 v = ((!loop) ? max : min);
223 return (T)o.GetType().GetField(s).GetValue(o);
228 FieldInfo field = o.GetType().GetField(name);
231 return typeof(T).IsAssignableFrom(field.FieldType);
238 return (T)o.GetType().GetField(name).GetValue(o);
241 public static void SetField<T>(
this object o,
string name, T value)
243 o.GetType().GetField(name).SetValue(o, value);
248 return (T)o.GetType().GetProperty(name).GetValue(o);
253 o.GetType().GetProperty(name).SetValue(o, value);
256 public static void Sort<T>(
this IList<T> list, Comparison<T> comparison)
260 ((List<T>)list).Sort(comparison);
263 List<T> list2 =
new List<T>(list);
264 list2.Sort(comparison);
265 for (
int i = 0; i < list.Count; i++)
271 public static void Sort<T>(
this IList<T> list, Func<T, int> keySelector)
273 List<T> list2 = list.OrderBy(keySelector).ToList();
275 foreach (T
item in list2)
281 public static TValue
TryGet<TValue>(
this IList<TValue> array,
int index,
int defIndex = -1)
283 if (array.Count != 0)
285 if (index >= array.Count)
289 if (array.Count <= defIndex)
291 return array[Mathf.Max(0, array.Count - 1)];
293 return array[defIndex];
295 return array[Mathf.Max(0, array.Count - 1)];
297 return array[Math.Max(0, index)];
299 return default(TValue);
302 public static TValue
TryGet<TValue>(
this IList<TValue> array,
int index,
bool returnNull)
304 if (index >= array.Count)
306 return default(TValue);
315 return array.Length == 0;
320 public static int IndexOf(
this IList<Component> list, GameObject go)
326 for (
int i = 0; i < list.Count; i++)
328 if (list[i].gameObject == go)
336 public static TValue
Move<TValue>(
this IList<TValue> list, TValue target,
int a)
338 int num = list.IndexOf(target);
342 num2 = list.Count - 1;
344 if (num2 >= list.Count)
349 list.Insert(num2, target);
355 return list.ToList();
358 public static void Each<TValue>(
this IList<TValue> list, Action<TValue> action)
360 for (
int num = list.Count - 1; num >= 0; num--)
368 int num = list.Count;
373 TValue value = list[num];
374 list[num] = list[index];
382 TValue value =
default(TValue);
383 if (key !=
null && source.TryGetValue(key, out value))
392 TValue value =
default(TValue);
393 if (key !=
null && source.TryGetValue(key, out value))
397 return source[key_fallback];
402 TValue val = dict.TryGetValue(key);
405 val = ((func !=
null) ? func() : Activator.CreateInstance<TValue>());
413 TKey[] array =
new TKey[dict.Keys.Count];
414 dict.Keys.CopyTo(array, 0);
420 TValue[] array =
new TValue[dict.Keys.Count];
421 dict.Values.CopyTo(array, 0);
427 int num = ie.Count();
432 return ie.ElementAt(
Rand.
rnd(num));
437 if (source.Count != 0)
439 return source.ElementAt(
Rand.
rnd(source.Count)).Value;
441 return default(TValue);
446 if (source.Count != 0)
448 return source[
Rand.
rnd(source.Count)];
450 return default(TValue);
455 return source.RandomItem(source.IndexOf(exclude));
460 if (source.Count > 1)
467 while (num == exclude);
470 if (source.Count == 1)
474 return default(TValue);
477 public static TValue
RandomItem<TValue>(
this IList<TValue> source, Func<TValue, bool> funcValid, TValue defaultValue =
default(TValue))
479 for (
int i = 0; i < 100; i++)
481 TValue val = source[
Rand.
rnd(source.Count)];
492 if (source.Count == 0)
494 return default(TValue);
496 if (source.Count == 1)
501 foreach (TValue
item in source)
503 num += getWeight(
item);
507 foreach (TValue item2
in source)
509 num += getWeight(item2);
515 return source.First();
520 if (source.Count != 0)
522 return source[divider % source.Count];
524 return default(TValue);
531 return default(TValue);
533 return source[source.First().Key];
538 if (source.Count != 0)
540 return source[source.Count - 1];
542 return default(TValue);
548 if (index >= source.Count)
552 if (source.Count != 0)
554 return source[index];
556 return default(TValue);
565 int num = source.IndexOf(val) + 1;
566 if (num >= source.Count)
575 int num = source.IndexOf(val) + 1;
576 if (num >= source.Count)
580 if (source.Count != 0)
584 return default(TValue);
589 int num = source.IndexOf(val) - 1;
592 num = source.Count - 1;
594 if (source.Count != 0)
598 return default(TValue);
607 else if (i >= source.Count)
609 i = source.Count - 1;
616 List<T> list =
new List<T>();
617 foreach (
object value
in source.Values)
629 dic =
new Dictionary<string, T>();
630 for (
int i = 0; i < list.Count; i++)
632 dic.Add(list[i].name, list[i].value);
636 public static T
FindMax<T>(
this List<T> list, Func<T, int> func)
638 int num =
int.MinValue;
639 T result =
default(T);
640 foreach (T
item in list)
642 int num2 = func(
item);
652 public static void Set<T1, T2>(
this Dictionary<T1, T2> dic, Dictionary<T1, T2> from)
655 foreach (KeyValuePair<T1, T2>
item in from)
663 if (
string.IsNullOrEmpty(text))
665 return new string[0];
667 return text.Split(
new string[3] {
"\r\n",
"\n",
"\r" }, StringSplitOptions.None);
672 if (
string.IsNullOrEmpty(text))
676 return text.Replace(
"\r",
"").Replace(
"\n",
"");
681 if (
string.IsNullOrEmpty(text))
685 return Regex.Replace(text,
"<.*?>",
"");
688 public static int Calc(
this string str,
int power = 0,
int ele = 0,
int p2 = 0)
690 return Cal.Calcuate(str.Replace(
"p2", p2.ToString() ??
"").Replace(
"p", power.ToString() ??
"").Replace(
"e", ele.ToString() ??
"")
696 return str.ToInt(typeof(T));
699 public static int ToInt(
this string str, Type type)
701 FieldInfo field = type.GetField(str, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
704 Debug.LogError(
"Field is null:" + str +
"/" + type);
707 return (
int)field.GetValue(
null);
710 public static int ToInt(
this string str)
712 if (
int.TryParse(str, out var result))
719 public static long ToLong(
this string str)
721 if (
long.TryParse(str, out var result))
733 if (!
float.TryParse(str, out result))
735 Debug.Log(
"exception: ToFlat1" + str);
741 Debug.Log(
"exception: ToFlat2" + str);
756 public static string StripPun(
this string str,
bool stripComma,
bool insertSpaceForComma =
false)
758 StringBuilder stringBuilder =
new StringBuilder();
759 foreach (
char c
in str)
765 if (insertSpaceForComma)
767 stringBuilder.Append(
'\u3000');
772 stringBuilder.Append(c);
777 stringBuilder.Append(c);
780 return stringBuilder.ToString();
783 public static string Repeat(
this string str,
int count)
785 StringBuilder stringBuilder =
new StringBuilder();
786 for (
int i = 0; i < Mathf.Abs(count); i++)
788 stringBuilder.Append(str);
790 return stringBuilder.ToString();
795 HashSet<char> brackets =
new HashSet<char> {
'"',
'「',
'」',
'“',
'”' };
796 return string.Concat(str.Where((
char c) => !brackets.Contains(c)));
801 if (!s.Contains(
"." + ext))
803 return s +
"." + ext;
817 public static string IsEmpty(
this string str,
string defaultStr)
819 if (str !=
null && !(str ==
""))
828 while (text.EndsWith(Environment.NewLine))
830 text = text.Substring(0, text.Length - Environment.NewLine.Length);
837 string[] array = str.Split(separator);
838 int[] array2 =
new int[array.Length];
839 for (
int i = 0; i < array.Length; i++)
841 array2[i] =
int.Parse(array[i]);
848 return str.Split(Environment.NewLine.ToCharArray());
851 public static bool Contains(
this string[] strs,
string id)
853 if (strs ==
null || strs.Length == 0)
857 for (
int i = 0; i < strs.Length; i++)
867 public static string Evalute(
this string[] array,
float val)
869 return array[(int)Mathf.Clamp((
float)(array.Length - 1) * val, 0f, array.Length - 1)];
881 return a / 1000 +
"K";
891 text = a / 1000000 +
"M";
900 return a / 1000 +
"K";
902 text2 = a.ToString();
910 text2 = a / 1000000 +
"M";
925 public static string ToText(
this int a,
bool skipIfZero =
true)
928 if (!(a == 0 && skipIfZero))
949 return s +
"<color=" + c.ToHex() +
">" + txt +
"</color>";
954 return "<color=" + c.ToHex() +
">" + s +
"</color>";
957 public static string TagSize(
this string s,
string txt,
int size)
959 return s +
"<size=" + size +
">" + txt +
"</size>";
962 public static string TagSize(
this string s,
int size)
964 return "<size=" + size +
">" + s +
"</size>";
967 public static bool HasTag(
this string s,
string id,
char splitter =
'/')
969 return s.Split(splitter).Contains(
id);
972 public static string SetTag(
this string s,
string id,
bool enable,
char splitter =
'/')
974 s = ((!enable) ? s.RemoveTag(
id, splitter) : s.AddTag(
id, splitter));
978 public static string AddTag(
this string s,
string id,
char splitter =
'/')
980 if (!s.HasTag(
id, splitter))
982 s = s + (s.IsEmpty() ?
"" : ((object)splitter))?.ToString() + id;
987 public static string RemoveTag(
this string s,
string id,
char splitter =
'/')
989 string[] array = s.Split(splitter);
991 string[] array2 = array;
992 foreach (
string text
in array2)
996 s.AddTag(text, splitter);
1004 return fileInfo.Directory.FullName +
"/" + Path.GetFileNameWithoutExtension(fileInfo.Name);
1009 return new FileInfo(path).GetFullFileNameWithoutExtension();
1014 if (s ==
"talisman")
1023 if (a.ToLower() ==
"unicorn")
1036 char c = s.ToLower()[0];
1037 s = (
GetSpecialArticle(s) ?? ((c ==
'a' || c ==
'i' || c ==
'u' || c ==
'e' || c ==
'o') ?
"an " :
"a ")) + s;
1048 string text = ((num >= 2) ? (num.ToFormat() +
" ") : (
GetSpecialArticle(s) ?? ((c ==
'a' || c ==
'i' || c ==
'u' || c ==
'e' || c ==
'o') ?
"an " :
"a ")));
1051 s = ((replace.IsEmpty() || !s.Contains(replace) || s.Contains(
"limestone stone")) ?
Pluralize(s) : s.Replace(replace,
Pluralize(replace)));
1055 ArticleStyle.The =>
"_the".lang().ToTitleCase() +
" " + ((num > 1) ? (num +
" ") :
"") + s,
1056 ArticleStyle.None => ((num > 1) ? (num.ToFormat() +
" ") :
"") + s.ToTitleCase(),
1061 public static string ToTitleCase(
this string s,
bool wholeText =
false)
1067 char[] array = s.ToCharArray();
1069 for (
int i = 0; i < array.Length; i++)
1073 array[i] =
char.ToUpper(array[i]);
1080 if (array[i] ==
' ')
1085 return new string(array);
1088 public static void LoopTail<T>(
this List<T> list,
bool vertical =
false) where T : Selectable
1092 Navigation navigation = list[0].navigation;
1093 Navigation navigation2 = list[list.Count - 1].navigation;
1096 navigation.selectOnUp = list[list.Count - 1];
1097 navigation2.selectOnDown = list[0];
1101 navigation.selectOnLeft = list[list.Count - 1];
1102 navigation2.selectOnRight = list[0];
1104 list[0].navigation = navigation;
1105 list[list.Count - 1].navigation = navigation2;
1109 public static void SetNavigation(
this Component a, Component b,
bool vertical =
false)
1115 Selectable component = a.GetComponent<Selectable>();
1116 Selectable component2 = b.GetComponent<Selectable>();
1117 if ((
bool)component && (bool)component2)
1119 Navigation navigation = component.navigation;
1120 Navigation navigation2 = component2.navigation;
1123 navigation.selectOnUp = component2;
1124 navigation2.selectOnDown = component;
1128 navigation.selectOnLeft = component2;
1129 navigation2.selectOnRight = component;
1131 component.navigation = navigation;
1132 component2.navigation = navigation2;
1136 public static void LoopSelectable(
this List<Selectable> sels,
bool vertical =
true,
bool horizonal =
true,
bool asGroup =
true)
1138 for (
int i = 0; i < sels.Count; i++)
1140 Selectable selectable = sels[i];
1141 Selectable selectable2 = sels[0];
1142 Navigation navigation = selectable.navigation;
1145 navigation.selectOnRight = ((i + 1 < sels.Count) ? sels[i + 1] : selectable2);
1149 for (
int j = i + 1; j < sels.Count; j++)
1151 if (sels[j].transform.position.y < selectable.transform.position.y)
1153 selectable2 = sels[j];
1160 selectable2 = ((i + 1 < sels.Count) ? sels[i + 1] : selectable2);
1164 navigation.selectOnDown = selectable2;
1166 selectable.navigation = navigation;
1168 for (
int num = sels.Count - 1; num >= 0; num--)
1170 Selectable selectable3 = sels[num];
1171 Selectable selectable4 = sels[sels.Count - 1];
1172 Navigation navigation2 = selectable3.navigation;
1175 navigation2.selectOnLeft = ((num > 0) ? sels[num - 1] : selectable4);
1179 int num2 = sels.Count - 1;
1180 for (
int num3 = num - 1; num3 >= 0; num3--)
1182 if (sels[num3].transform.position.y > selectable3.transform.position.y)
1189 while (num4 >= 0 && !(sels[num4].transform.position.y > sels[num2].transform.position.y))
1191 selectable4 = sels[num4];
1197 selectable4 = ((num > 0) ? sels[num - 1] : selectable4);
1201 navigation2.selectOnUp = ((selectable4 == selectable3) ? sels[sels.Count - 1] : selectable4);
1203 navigation2.mode = Navigation.Mode.Explicit;
1204 selectable3.navigation = navigation2;
1208 public static void LoopSelectable(
this Transform l,
bool vertical =
true,
bool horizonal =
true,
bool asGroup =
true)
1210 List<Selectable> list = l.GetComponentsInChildren<Selectable>().ToList();
1211 for (
int num = list.Count - 1; num >= 0; num--)
1213 if (!list[num].interactable || list[num].navigation.mode == Navigation.Mode.None)
1218 list.LoopSelectable(vertical, horizonal, asGroup);
1224 ColorUtility.TryParseHtmlString(
"#" + s, out color);
1230 c.color =
new Color(c.color.r, c.color.g, c.color.b, a);
1235 c.color =
new Color(c.color.r, c.color.g, c.color.b, a);
1246 return new Color(c.r * mtp + add, c.g * mtp + add, c.b * mtp + add, c.a);
1251 return "<color=" +
$"#{(int)(c.r * 255f):X2}{(int)(c.g * 255f):X2}{(int)(c.b * 255f):X2}" +
">";
1256 return $"#{(int)(c.r * 255f):X2}{(int)(c.g * 255f):X2}{(int)(c.b * 255f):X2}";
1261 b.onClick.RemoveAllListeners();
1262 b.onClick.AddListener(delegate
1270 e.RemoveAllListeners();
1271 e.AddListener(delegate
1277 public static void SetAlpha(
this Text text,
float aloha = 1f)
1279 text.color =
new Color(text.color.r, text.color.g, text.color.b, aloha);
1282 public static void SetSlider(
this Slider slider,
float value, Func<float, string> action,
bool notify)
1284 slider.SetSlider(value, action, -1, -1, notify);
1287 public static void SetSlider(
this Slider slider,
float value, Func<float, string> action,
int min = -1,
int max = -1,
bool notify =
true)
1289 slider.onValueChanged.RemoveAllListeners();
1290 slider.onValueChanged.AddListener(delegate(
float a)
1292 slider.GetComponentInChildren<Text>(includeInactive:
true).text = action(a);
1296 slider.minValue = min;
1297 slider.maxValue = max;
1301 slider.value = value;
1305 slider.SetValueWithoutNotify(value);
1307 slider.GetComponentInChildren<Text>(includeInactive:
true).text = action(value);
1312 T val = t.gameObject.GetComponent<T>();
1315 val = t.gameObject.AddComponent<T>();
1320 public static RectTransform
Rect(
this Component c)
1322 return c.transform as RectTransform;
1325 public static void CopyRect(
this RectTransform r, RectTransform t)
1328 r.sizeDelta = t.sizeDelta;
1329 r.anchorMin = t.anchorMin;
1330 r.anchorMax = t.anchorMax;
1331 r.anchoredPosition = t.anchoredPosition;
1336 c.SetActive(!c.gameObject.activeSelf);
1341 if (c.gameObject.activeSelf != enable)
1343 c.gameObject.SetActive(enable);
1347 public static void SetActive(
this Component c,
bool enable, Action<bool> onChangeState)
1349 if (c.gameObject.activeSelf != enable)
1351 c.gameObject.SetActive(enable);
1352 onChangeState(enable);
1358 return go.GetComponentInChildren<Selectable>();
1364 foreach (Transform
item in obj.transform)
1366 item.gameObject.SetLayerRecursively(layer);
1372 Selectable selectable = (obj ? obj.GetComponent<Selectable>() :
null);
1373 if ((
bool)selectable)
1375 return selectable.interactable;
1380 public static bool IsChildOf(
this GameObject c, GameObject root)
1382 if (c.transform == root.transform)
1386 if ((
bool)c.transform.parent)
1388 return c.transform.parent.gameObject.IsChildOf(root);
1395 return c.gameObject.scene.name ==
null;
1398 public static T
CreateMold<T>(
this Component c,
string name =
null) where T : Component
1401 for (
int i = 0; i < c.transform.childCount; i++)
1403 T component = c.transform.GetChild(i).GetComponent<T>();
1404 if ((
bool)component && (name.IsEmpty() || name == component.name))
1406 component.gameObject.SetActive(value:
false);
1411 c.DestroyChildren();
1415 public static Transform
Find(
this Component c,
string name =
null)
1417 return c.Find<Transform>(name);
1420 public static T
Find<T>(
this Component c,
string name =
null,
bool recursive =
false) where T : Component
1424 T[] componentsInChildren = c.transform.GetComponentsInChildren<T>();
1425 foreach (T val
in componentsInChildren)
1427 if (name ==
null || name == val.name)
1434 for (
int j = 0; j < c.transform.childCount; j++)
1436 T component = c.transform.GetChild(j).GetComponent<T>();
1437 if ((
bool)component && (name ==
null || name == component.name))
1445 public static GameObject
FindTagInParents(
this Component c,
string tag,
bool includeInactive =
true)
1447 Transform transform = c.transform;
1448 for (
int i = 0; i < transform.childCount; i++)
1450 Transform child = transform.GetChild(i);
1451 if ((includeInactive || child.gameObject.activeSelf) && child.tag == tag)
1453 return child.gameObject;
1456 if ((
bool)transform.parent)
1458 return transform.parent.FindTagInParents(tag, includeInactive);
1465 for (
int i = 0; i < c.childCount; i++)
1467 T component = c.GetChild(i).GetComponent<T>();
1468 if ((
bool)component)
1478 List<T> list =
new List<T>();
1479 Transform transform = comp.transform;
1480 for (
int i = 0; i < transform.childCount; i++)
1482 T component = transform.GetChild(i).GetComponent<T>();
1483 if ((
bool)component && (includeInactive || component.gameObject.activeInHierarchy))
1485 list.Add(component);
1493 List<T> list =
new List<T>();
1494 Transform transform = comp.transform;
1495 for (
int i = 0; i < transform.childCount; i++)
1497 T component = transform.GetChild(i).GetComponent<T>();
1498 if ((
bool)component && (includeInactive || component.gameObject.activeInHierarchy))
1500 list.Add(component);
1508 Transform transform = comp.transform;
1509 for (
int i = 0; i < transform.childCount; i++)
1511 T component = transform.GetChild(i).GetComponent<T>();
1512 if ((
bool)component)
1520 public static void DestroyChildren(
this Component component,
bool destroyInactive =
false,
bool ignoreDestroy =
true)
1522 if (!component || !component.transform)
1524 Debug.LogWarning(
"DestroyChlidren:" + component);
1527 for (
int num = component.transform.childCount - 1; num >= 0; num--)
1529 GameObject gameObject = component.transform.GetChild(num).gameObject;
1530 if ((!ignoreDestroy || !(gameObject.tag ==
"IgnoreDestroy")) && (destroyInactive || gameObject.activeSelf))
1532 UnityEngine.Object.DestroyImmediate(gameObject);
1539 return RectTransformUtility.RectangleContainsScreenPoint(r, Input.mousePosition, cam);
1546 foreach (Transform
item in c.transform)
1548 if (
item is RectTransform)
1550 item.RebuildLayout(recursive:
true);
1554 LayoutRebuilder.ForceRebuildLayoutImmediate(c.transform as RectTransform);
1560 if ((
bool)c.transform.parent && !c.transform.parent.GetComponent<T>())
1562 c.transform.parent.RebuildLayoutTo<T>();
1569 if (!(c == target) && (
bool)c.transform.parent)
1571 c.transform.parent.RebuildLayoutTo(target);
1575 public static void SetRect(
this RectTransform r,
float x,
float y,
float w,
float h,
float pivotX,
float pivotY,
float minX,
float minY,
float maxX,
float maxY)
1577 r.SetPivot(pivotX, pivotY);
1578 r.SetAnchor(minX, minY, maxX, maxY);
1581 r.sizeDelta =
new Vector2(w, h);
1583 r.anchoredPosition =
new Vector2((x == -1f) ? r.anchoredPosition.x : x, (y == -1f) ? r.anchoredPosition.y : y);
1586 public static void SetPivot(
this RectTransform r,
float x,
float y)
1588 r.pivot =
new Vector2(x, y);
1591 public static void SetAnchor(
this RectTransform r,
float minX,
float minY,
float maxX,
float maxY)
1593 r.anchorMin =
new Vector2(minX, minY);
1594 r.anchorMax =
new Vector2(maxX, maxY);
1602 _rect.SetAnchor(0.5f, 1f, 0.5f, 1f);
1605 _rect.SetAnchor(0.5f, 0f, 0.5f, 0f);
1608 _rect.SetAnchor(0f, 1f, 0f, 1f);
1611 _rect.SetAnchor(1f, 1f, 1f, 1f);
1614 _rect.SetAnchor(0f, 0f, 0f, 0f);
1617 _rect.SetAnchor(1f, 0f, 1f, 0f);
1620 _rect.SetAnchor(0f, 0.5f, 0f, 0.5f);
1623 _rect.SetAnchor(1f, 0.5f, 1f, 0.5f);
1626 _rect.SetAnchor(0.5f, 0.5f, 0.5f, 0.5f);
1633 Vector3 position = _rect.position;
1634 _rect._SetAnchor((anchor ==
RectPosition.Auto) ? _rect.GetAnchor() : anchor);
1635 _rect.position = position;
1640 Vector3 position = _rect.position;
1641 int width = Screen.width;
1642 int height = Screen.height;
1643 bool flag = position.y > (float)height * 0.5f;
1644 if (position.x > (
float)width * 0.3f && position.x < (float)width * 0.7f)
1646 if (position.y > (
float)height * 0.3f && position.y < (float)height * 0.7f)
1656 if (position.x < (
float)width * 0.5f)
1673 return trans.GetChild(trans.childCount - 1);
1678 return new Vector2(
self.x,
self.z);
1681 public static void SetScale(
this SpriteRenderer renderer,
float size)
1683 float x = renderer.bounds.size.x;
1684 float y = renderer.bounds.size.y;
1685 float x2 = size / x;
1686 float y2 = size / y;
1687 renderer.transform.localScale =
new Vector3(x2, y2, 1f);
1692 if (
object.Equals(
forward, Vector2.up))
1696 object.Equals(
forward, Vector2.right);
1702 self.LookAt2D(target.position,
forward);
1708 Vector3 vector = target -
self.position;
1709 float num = Mathf.Atan2(vector.y, vector.x) * 57.29578f;
1710 self.rotation = Quaternion.AngleAxis(num - forwardDiffPoint, Vector3.forward);
1713 public static float Distance(
this Transform t, Vector2 pos)
1715 return Vector3.Distance(t.position, pos);
1718 public static Vector3
Plus(
this Vector3 v, Vector2 v2)
1725 public static Vector3
SetZ(
this Vector3 v,
float a)
1731 public static Vector3
SetY(
this Vector3 v,
float a)
1737 public static Vector3
PlusX(
this Vector3 v,
float a)
1743 public static Vector3
PlusY(
this Vector3 v,
float a)
1749 public static Vector3
PlusZ(
this Vector3 v,
float a)
1755 public static void SetPosition(
this Transform transform,
float x,
float y,
float z)
1763 vector3.Set(x, transform.position.y, transform.position.z);
1769 vector3.Set(transform.position.x, y, transform.position.z);
1775 vector3.Set(transform.position.x, transform.position.y, z);
1779 public static void AddPosition(
this Transform transform,
float x,
float y,
float z)
1781 vector3.Set(transform.position.x + x, transform.position.y + y, transform.position.z + z);
1787 vector3.Set(transform.position.x + x, transform.position.y, transform.position.z);
1793 vector3.Set(transform.position.x, transform.position.y + y, transform.position.z);
1799 vector3.Set(transform.position.x, transform.position.y, transform.position.z + z);
1806 transform.localPosition =
vector3;
1811 vector3.Set(x, transform.localPosition.y, transform.localPosition.z);
1812 transform.localPosition =
vector3;
1817 vector3.Set(transform.localPosition.x, y, transform.localPosition.z);
1818 transform.localPosition =
vector3;
1823 vector3.Set(transform.localPosition.x, transform.localPosition.y, z);
1824 transform.localPosition =
vector3;
1829 vector3.Set(transform.localPosition.x + x, transform.localPosition.y + y, transform.localPosition.z + z);
1830 transform.localPosition =
vector3;
1835 vector3.Set(transform.localPosition.x + x, transform.localPosition.y, transform.localPosition.z);
1836 transform.localPosition =
vector3;
1841 vector3.Set(transform.localPosition.x, transform.localPosition.y + y, transform.localPosition.z);
1842 transform.localPosition =
vector3;
1847 vector3.Set(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z + z);
1848 transform.localPosition =
vector3;
1851 public static void SetLocalScale(
this Transform transform,
float x,
float y,
float z)
1854 transform.localScale =
vector3;
1859 vector3.Set(x, transform.localScale.y, transform.localScale.z);
1860 transform.localScale =
vector3;
1865 vector3.Set(transform.localScale.x, y, transform.localScale.z);
1866 transform.localScale =
vector3;
1871 vector3.Set(transform.localScale.x, transform.localScale.y, z);
1872 transform.localScale =
vector3;
1875 public static void AddLocalScale(
this Transform transform,
float x,
float y,
float z)
1877 vector3.Set(transform.localScale.x + x, transform.localScale.y + y, transform.localScale.z + z);
1878 transform.localScale =
vector3;
1883 vector3.Set(transform.localScale.x + x, transform.localScale.y, transform.localScale.z);
1884 transform.localScale =
vector3;
1889 vector3.Set(transform.localScale.x, transform.localScale.y + y, transform.localScale.z);
1890 transform.localScale =
vector3;
1895 vector3.Set(transform.localScale.x, transform.localScale.y, transform.localScale.z + z);
1896 transform.localScale =
vector3;
1899 public static void SetEulerAngles(
this Transform transform,
float x,
float y,
float z)
1902 transform.eulerAngles =
vector3;
1907 vector3.Set(x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1908 transform.eulerAngles =
vector3;
1913 vector3.Set(transform.localEulerAngles.x, y, transform.localEulerAngles.z);
1914 transform.eulerAngles =
vector3;
1919 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, z);
1920 transform.eulerAngles =
vector3;
1923 public static void AddEulerAngles(
this Transform transform,
float x,
float y,
float z)
1925 vector3.Set(transform.eulerAngles.x + x, transform.eulerAngles.y + y, transform.eulerAngles.z + z);
1926 transform.eulerAngles =
vector3;
1931 vector3.Set(transform.eulerAngles.x + x, transform.eulerAngles.y, transform.eulerAngles.z);
1932 transform.eulerAngles =
vector3;
1937 vector3.Set(transform.eulerAngles.x, transform.eulerAngles.y + y, transform.eulerAngles.z);
1938 transform.eulerAngles =
vector3;
1943 vector3.Set(transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z + z);
1944 transform.eulerAngles =
vector3;
1950 transform.localEulerAngles =
vector3;
1955 vector3.Set(x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1956 transform.localEulerAngles =
vector3;
1961 vector3.Set(transform.localEulerAngles.x, y, transform.localEulerAngles.z);
1962 transform.localEulerAngles =
vector3;
1967 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, z);
1968 transform.localEulerAngles =
vector3;
1973 vector3.Set(transform.localEulerAngles.x + x, transform.localEulerAngles.y + y, transform.localEulerAngles.z + z);
1974 transform.localEulerAngles =
vector3;
1979 vector3.Set(transform.localEulerAngles.x + x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1980 transform.localEulerAngles =
vector3;
1985 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y + y, transform.localEulerAngles.z);
1986 transform.localEulerAngles =
vector3;
1991 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, transform.localEulerAngles.z + z);
1992 transform.localEulerAngles =
vector3;
1999 m.EnableKeyword(
id);
2003 m.DisableKeyword(
id);
2009 for (
int num = items.Count - 1; num >= 0; num--)
2017 int num = items.Count - 1;
2018 while (num >= 0 && !action(items[num]))
2026 int num = items.LastIndexOf(
item);
2031 items.RemoveAt(num);
2039 return 360f - (0f - angle) % 360f;
2041 return angle % 360f;
2051 string name = s.name;
2052 T val = UnityEngine.Object.Instantiate(s);
2059 Type typeFromHandle = typeof(UnityEventBase);
2060 Assembly assembly = Assembly.GetAssembly(typeFromHandle);
2061 Type type = assembly.GetType(
"UnityEngine.Events.InvokableCallList");
2062 Type type2 = assembly.GetType(
"UnityEngine.Events.BaseInvokableCall");
2063 Type type3 = typeof(List<>).MakeGenericType(type2);
2064 FieldInfo field = typeFromHandle.GetField(
"m_Calls", BindingFlags.Instance | BindingFlags.NonPublic);
2065 FieldInfo field2 = type.GetField(
"m_RuntimeCalls", BindingFlags.Instance | BindingFlags.NonPublic);
2066 object value = field.GetValue(unityEvent);
2067 object value2 = field2.GetValue(value);
2068 return (
int)type3.GetProperty(
"Count").GetValue(value2,
null);
static string TryAddExtension(this string s, string ext)
static string StripLastPun(this string str)
static byte SetBit(this byte pByte, int bitNo, bool value)
static T GetComponentInChildrenExcludSelf< T >(this Transform c)
static int[] SplitToInts(this string str, char separator)
static void SetEulerAnglesZ(this Transform transform, float z)
static T CreateMold< T >(this Component c, string name=null)
static void SetAnchor(this RectTransform r, float minX, float minY, float maxX, float maxY)
static T GetField< T >(this object o, string name)
static void SetPosition(this Transform transform, float x, float y, float z)
static string TagColor(this string s, Color c, string txt)
static void SetEulerAnglesX(this Transform transform, float x)
static int NextIndex< TValue >(this IList< TValue > source, TValue val)
static string RemoveAllTags(this string text)
static int ClampMax(this int v, int max)
static void Each< TValue >(this IList< TValue > list, Action< TValue > action)
static void AddLocalPosition(this Transform transform, float x, float y, float z)
static T PrevEnum< T >(this T src)
static string langGame(this string s, string ref1, string ref2=null, string ref3=null, string ref4=null)
static string Pluralize(string s)
static TKey[] CopyKeys< TKey, TValue >(this IDictionary< TKey, TValue > dict)
static void AddLocalEulerAnglesY(this Transform transform, float y)
static IList< TValue > Shuffle< TValue >(this IList< TValue > list)
static string Parentheses(this string str)
static void AddLocalScale(this Transform transform, float x, float y, float z)
static string ToTitleCase(this string s, bool wholeText=false)
static T Find< T >(this Component c, string name=null, bool recursive=false)
static TValue Clamp< TValue >(this IList< TValue > source, int i)
static TValue TryGetValue< TKey, TValue >(this IDictionary< TKey, TValue > source, TKey key, TValue fallback=default(TValue))
static void SetLocalEulerAngles(this Transform transform, float x, float y, float z)
static string ToFormat(this int a)
static void LoopSelectable(this List< Selectable > sels, bool vertical=true, bool horizonal=true, bool asGroup=true)
static string langPlural(this string s, int i)
static void SetScale(this SpriteRenderer renderer, float size)
static int ToInt(this string str, Type type)
static float GetForwardDiffPoint(Vector2 forward)
static T ToEnum< T >(this int value)
static bool IsChildOf(this GameObject c, GameObject root)
static int Calc(this string str, int power=0, int ele=0, int p2=0)
static void AddLocalScaleY(this Transform transform, float y)
static void SetSlider(this Slider slider, float value, Func< float, string > action, int min=-1, int max=-1, bool notify=true)
static string StripPun(this string str, bool stripComma, bool insertSpaceForComma=false)
static int IndexOf(this IList< Component > list, GameObject go)
static Vector3 SetY(this Vector3 v, float a)
static void AddPositionX(this Transform transform, float x)
static void LoopTail< T >(this List< T > list, bool vertical=false)
static T GetOrCreate< T >(this Component t)
static bool IsOn(this int data, int digit)
static IList< TValue > Copy< TValue >(this IList< TValue > list)
static float FromInt2(this int a)
static Selectable GetSelectable(this GameObject go)
static string AddArticle(this string s, int num, ArticleStyle style=ArticleStyle.Default, string replace=null)
static void SetLocalPositionZ(this Transform transform, float z)
static void SetLocalEulerAnglesZ(this Transform transform, float z)
static void RebuildLayoutTo(this Component c, Component target)
static bool IsEmpty(this string str)
static bool IsPrefab(this Component c)
static void SetActive(this Component c, bool enable)
static void ToDictionary< T >(this IList< UPair< T > > list, ref Dictionary< string, T > dic)
static string RemoveTag(this string s, string id, char splitter='/')
static void AddEulerAnglesZ(this Transform transform, float z)
static void SetProperty< T >(this object o, string name, T value)
static bool Within(this byte v, byte v2, byte range)
static void SetAlpha(this Text text, float aloha=1f)
static void ToggleActive(this Component c)
static bool Contains(this string[] strs, string id)
static int GetRuntimeEventCount(this UnityEventBase unityEvent)
static string[] SplitByNewline(this string text)
static void SetLayerRecursively(this GameObject obj, int layer)
static void SetActive(this Component c, bool enable, Action< bool > onChangeState)
static void SetLocalEulerAnglesY(this Transform transform, float y)
static bool Within(this int v, int v2, int range)
static Vector2 ToVector2(this Vector3 self)
static bool HasTag(this string s, string id, char splitter='/')
static void LoopSelectable(this Transform l, bool vertical=true, bool horizonal=true, bool asGroup=true)
static string[] langList(this string s)
static Color ToColor(this string s)
static void AddLocalEulerAnglesX(this Transform transform, float x)
static void SetLocalPosition(this Transform transform, float x, float y, float z)
static void AddPositionY(this Transform transform, float y)
static RectPosition GetAnchor(this RectTransform _rect)
static bool GetBit(this byte pByte, int bitNo)
static void ToggleKeyword(this Material m, string id, bool enable)
static string Tag(this Color c)
static T NextEnum< T >(this T src)
static void SetPositionX(this Transform transform, float x)
static void SetLocalScaleX(this Transform transform, float x)
static TValue GetOrCreate< TKey, TValue >(this IDictionary< TKey, TValue > dict, TKey key, Func< TValue > func=null)
static Vector3 PlusY(this Vector3 v, float a)
static bool IsEmpty(this Array array)
static T GetProperty< T >(this object o, string name)
static void SetLocalPositionX(this Transform transform, float x)
static void SetLocalEulerAnglesX(this Transform transform, float x)
static float Distance(this Transform t, Vector2 pos)
static void AddLocalScaleX(this Transform transform, float x)
static float FromInt3(this int a)
static void AddEulerAngles(this Transform transform, float x, float y, float z)
static string TagSize(this string s, int size)
static void AddLocalScaleZ(this Transform transform, float z)
static void SetAlpha(this RawImage c, float a)
static void AddEulerAnglesX(this Transform transform, float x)
static Transform Find(this Component c, string name=null)
static void DestroyChildren(this Component component, bool destroyInactive=false, bool ignoreDestroy=true)
static bool IsInteractable(this GameObject obj)
static void Sort< T >(this IList< T > list, Comparison< T > comparison)
static int ToInt3(this float a)
static TValue RandomItem< TKey, TValue >(this IDictionary< TKey, TValue > source)
static string StripBrackets(this string str)
static string ToHex(this Color c)
static TValue RandomItemWeighted< TValue >(this IList< TValue > source, Func< TValue, float > getWeight)
static string lang(this string s)
static float ToFloat(this string str)
static Vector3 SetZ(this Vector3 v, float a)
static void AddLocalEulerAnglesZ(this Transform transform, float z)
static bool IsNull(this object o)
static void SetAlpha(this Image c, float a)
static void SetAnchor(this RectTransform _rect, RectPosition anchor=RectPosition.Auto)
static bool IsMouseOver(this RectTransform r, Camera cam)
static Vector3 PlusX(this Vector3 v, float a)
static List< T > GetComponentsInDirectChildren< T >(this Transform comp, bool includeInactive=true)
static string RemoveNewline(this string text)
static void SetSlider(this Slider slider, float value, Func< float, string > action, bool notify)
static bool RemoveFromEnd< T >(this List< T > items, T item)
static string langGame(this string s)
static void SetNavigation(this Component a, Component b, bool vertical=false)
static TValue RandomItem< TValue >(this IList< TValue > source)
static void AddLocalEulerAngles(this Transform transform, float x, float y, float z)
static int ClampMin(this int v, int min)
static TValue FirstItem< TKey, TValue >(this IDictionary< TKey, TValue > source)
static void SetPivot(this RectTransform r, float x, float y)
static TValue NextItem< TValue >(this IList< TValue > source, ref int index)
static T FindMax< T >(this List< T > list, Func< T, int > func)
static void SetField< T >(this object o, string name, T value)
static TValue TryGet< TValue >(this IList< TValue > array, int index, int defIndex=-1)
static TValue Move< TValue >(this IList< TValue > list, TValue target, int a)
static T GetComponentInDirectChildren< T >(this Component comp)
static void SetRect(this RectTransform r, float x, float y, float w, float h, float pivotX, float pivotY, float minX, float minY, float maxX, float maxY)
static Type ToType(this string value)
static string AddTag(this string s, string id, char splitter='/')
static void ForeachReverse< T >(this IList< T > items, Action< T > action)
static TValue PrevItem< TValue >(this IList< TValue > source, TValue val)
static void RebuildLayout(this Component c, bool recursive=false)
static Vector3 Plus(this Vector3 v, Vector2 v2)
static GameObject FindTagInParents(this Component c, string tag, bool includeInactive=true)
static string GetFullFileNameWithoutExtension(this string path)
static int ToInt< T >(this string str)
static string ToShortNumber(this int a)
static void SetEulerAnglesY(this Transform transform, float y)
static IPluralize pluralizer
static void AddLocalPositionX(this Transform transform, float x)
static string IsEmpty(this string str, string defaultStr)
static void Set< T1, T2 >(this Dictionary< T1, T2 > dic, Dictionary< T1, T2 > from)
static T RandomItem< T >(this IEnumerable< T > ie)
static T Instantiate< T >(this T s)
static string TagSize(this string s, string txt, int size)
static string Repeat(this string str, int count)
static Transform GetLastChild(this Transform trans)
static int ToInt(this string str)
static void SetPositionY(this Transform transform, float y)
static string ToFormat(this long a)
static string ToText(this int a, bool skipIfZero=true)
static void _SetAnchor(this RectTransform _rect, RectPosition anchor)
static Vector3 Random(this Vector3 v)
static string SetTag(this string s, string id, bool enable, char splitter='/')
static string GetFullFileNameWithoutExtension(this FileInfo fileInfo)
static void SetListener(this Button.ButtonClickedEvent e, Action action)
static void RebuildLayoutTo< T >(this Component c)
static void SetOnClick(this Button b, Action action)
static string Bracket(this string str, int type=0)
static void AddPosition(this Transform transform, float x, float y, float z)
static RectTransform Rect(this Component c)
static void AddLocalPositionZ(this Transform transform, float z)
static long ToLong(this string str)
static string Evalute(this string[] array, float val)
static string lang(this string s, string ref1, string ref2=null, string ref3=null, string ref4=null, string ref5=null)
static int Minimum(this int i)
static string GetSpecialArticle(string a)
static void LookAt2D(this Transform self, Transform target, Vector2 forward)
static void SetLocalScaleZ(this Transform transform, float z)
static void SetEulerAngles(this Transform transform, float x, float y, float z)
static float ClampAngle(this float angle)
static int Clamp(this int v, int min, int max, bool loop=false)
static string TrimNewLines(this string text)
static string TagColor(this string s, Color c)
static string[] SplitNewline(this string str)
static void CopyRect(this RectTransform r, RectTransform t)
static Color Multiply(this Color c, float mtp, float add)
static TValue[] CopyValues< TKey, TValue >(this IDictionary< TKey, TValue > dict)
static void SetLocalPositionY(this Transform transform, float y)
static Vector3 PlusZ(this Vector3 v, float a)
static void SetPositionZ(this Transform transform, float z)
static Color SetAlpha(this Color c, float a)
static void SetLocalScaleY(this Transform transform, float y)
static TValue LastItem< TValue >(this IList< TValue > source)
static byte[] ToBytes(this BitArray bits)
static T ToField< T >(this string s, object o)
static void SetLocalScale(this Transform transform, float x, float y, float z)
static string AddArticle(this string s)
static TValue Remainder< TValue >(this IList< TValue > source, int divider)
static int ToInt2(this float a)
static List< T > GetList< T >(this IDictionary source)
static void AddLocalPositionY(this Transform transform, float y)
static void AddPositionZ(this Transform transform, float z)
static bool HasField< T >(this object o, string name)
static void AddEulerAnglesY(this Transform transform, float y)
static void LookAt2D(this Transform self, Vector3 target, Vector2 forward)
static LangSetting setting
static string Get(string id)
static string[] GetList(string id)
static string Parse(string idLang, string val1, string val2=null, string val3=null, string val4=null, string val5=null)
static int Range(int min, int max)
string Parse(string idLang, string val1, string val2=null, string val3=null, string val4=null)