You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
239 lines
9.3 KiB
239 lines
9.3 KiB
|
|
using System; |
|
using System.IO; |
|
using System.Collections.Generic; |
|
using System.Text.RegularExpressions; |
|
|
|
using UnityEngine; |
|
|
|
namespace UnityExtension |
|
{ |
|
//------------------------------------------------------------------------------------------------------------ |
|
public static class Utils |
|
{ |
|
//------------------------------------------------------------------------------------------------------------ |
|
public static bool HasKeys(Dictionary<string, object> lData, params string[] lKeys) |
|
{ |
|
if (lKeys != null) |
|
{ |
|
for (int lCount = 0; lCount < lKeys.Length; ++lCount) |
|
{ |
|
if (!lData.ContainsKey(lKeys[lCount])) |
|
{ |
|
return false; |
|
} |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static void ClearChildren(GameObject lGo, string lTarget) |
|
{ |
|
if (lGo != null) |
|
{ |
|
Transform lTransform = null; |
|
for (int lCount = lGo.transform.childCount - 1; lCount > -1; --lCount) |
|
{ |
|
lTransform = lGo.transform.GetChild(lCount); |
|
if (lTransform.name.Contains(lTarget)) |
|
{ |
|
lTransform.parent = null; |
|
GameObject.Destroy(lTransform.gameObject); |
|
} |
|
} |
|
} |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static void ClearChildrenRegex(GameObject lGo, string lPattern) |
|
{ |
|
if (lGo != null) |
|
{ |
|
Transform lTransform = null; |
|
Regex lRegex = new Regex(lPattern); |
|
for (int lCount = lGo.transform.childCount - 1; lCount > -1; --lCount) |
|
{ |
|
lTransform = lGo.transform.GetChild(lCount); |
|
if (lRegex.IsMatch(lTransform.name)) |
|
{ |
|
lTransform.parent = null; |
|
GameObject.Destroy(lTransform.gameObject); |
|
} |
|
} |
|
} |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static void VerifyObjects(string lMsg, params object[] lObjects) |
|
{ |
|
for (int lCount = 0; lCount < lObjects.Length; ++lCount) |
|
{ |
|
if (lObjects[lCount] == null) |
|
{ |
|
Debug.LogError(lMsg); |
|
break; |
|
} |
|
} |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static bool JSONCheck(string lText) |
|
{ |
|
return !string.IsNullOrEmpty(lText) && lText[0] == '{'; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Vector3 ParseVector3Json(string lJsonData) |
|
{ |
|
string[] lVector3Array = lJsonData.Replace("(", "").Replace(")", "").Replace(" ", "").Split(','); |
|
Vector3 lVector3 = Vector3.zero; |
|
|
|
if (float.TryParse(lVector3Array[0], out lVector3.x) == false) |
|
{ |
|
return Vector3.zero; |
|
} |
|
if (float.TryParse(lVector3Array[1], out lVector3.y) == false) |
|
{ |
|
return Vector3.zero; |
|
} |
|
if (float.TryParse(lVector3Array[2], out lVector3.z) == false) |
|
{ |
|
return Vector3.zero; |
|
} |
|
|
|
return lVector3; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Vector4 ParseVector4Json(string lJsonData) |
|
{ |
|
string[] lVector4Array = lJsonData.Replace("(", "").Replace(")", "").Replace(" ", "").Split(','); |
|
Vector4 lVector4 = Vector4.zero; |
|
|
|
if (float.TryParse(lVector4Array[0], out lVector4.x) == false) |
|
{ |
|
return Vector4.zero; |
|
} |
|
if (float.TryParse(lVector4Array[1], out lVector4.y) == false) |
|
{ |
|
return Vector4.zero; |
|
} |
|
if (float.TryParse(lVector4Array[2], out lVector4.z) == false) |
|
{ |
|
return Vector4.zero; |
|
} |
|
if (float.TryParse(lVector4Array[3], out lVector4.w) == false) |
|
{ |
|
return Vector4.zero; |
|
} |
|
|
|
return lVector4; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Vector2 ParseVector2String(string lData, char lSeperator = ' ') |
|
{ |
|
string[] lParts = lData.Split(new char[] { lSeperator }, StringSplitOptions.RemoveEmptyEntries); |
|
|
|
float lX = lParts[0].ParseInvariantFloat(); |
|
float lY = lParts[1].ParseInvariantFloat(); |
|
|
|
return new Vector2(lX, lY); |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Vector3 ParseVector3String(string lData, char lSeperator = ' ') |
|
{ |
|
string[] lParts = lData.Split(new char[] { lSeperator }, StringSplitOptions.RemoveEmptyEntries); |
|
|
|
float lX = lParts[0].ParseInvariantFloat(); |
|
float lY = lParts[1].ParseInvariantFloat(); |
|
float lZ = lParts[2].ParseInvariantFloat(); |
|
|
|
return new Vector3(lX, lY, lZ); |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Vector4 ParseVector4String(string lData, char lSeperator = ' ') |
|
{ |
|
string[] lParts = lData.Split(new char[] { lSeperator }, StringSplitOptions.RemoveEmptyEntries); |
|
|
|
float lX = lParts[0].ParseInvariantFloat(); |
|
float lY = lParts[1].ParseInvariantFloat(); |
|
float lZ = lParts[2].ParseInvariantFloat(); |
|
float lW = lParts[3].ParseInvariantFloat(); |
|
|
|
return new Vector4(lX, lY, lZ, lW); |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static Quaternion ParseQuaternion(string lJsonData) |
|
{ |
|
string[] lQuaternionArray = lJsonData.Replace("(", "").Replace(")", "").Replace(" ", "").Split(','); |
|
Quaternion lQuaternion = Quaternion.identity; |
|
|
|
if (float.TryParse(lQuaternionArray[0], out lQuaternion.x) == false) |
|
{ |
|
return Quaternion.identity; |
|
} |
|
if (float.TryParse(lQuaternionArray[1], out lQuaternion.y) == false) |
|
{ |
|
return Quaternion.identity; |
|
} |
|
if (float.TryParse(lQuaternionArray[2], out lQuaternion.z) == false) |
|
{ |
|
return Quaternion.identity; |
|
} |
|
if (float.TryParse(lQuaternionArray[3], out lQuaternion.w) == false) |
|
{ |
|
return Quaternion.identity; |
|
} |
|
|
|
return lQuaternion; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static string Vector3String(Vector3 lVector3) |
|
{ |
|
return "(" + |
|
lVector3.x.ToString("f3") + "," + |
|
lVector3.y.ToString("f3") + "," + |
|
lVector3.z.ToString("f3") + |
|
")"; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static string Vector4String(Vector4 lVector4) |
|
{ |
|
return "(" + |
|
lVector4.x.ToString("f3") + "," + |
|
lVector4.y.ToString("f3") + "," + |
|
lVector4.z.ToString("f3") + "," + |
|
lVector4.w.ToString("f3") + |
|
")"; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static string QuaternionString(Quaternion lQuaternion) |
|
{ |
|
return "(" + |
|
lQuaternion.x.ToString("f3") + "," + |
|
lQuaternion.y.ToString("f3") + "," + |
|
lQuaternion.z.ToString("f3") + "," + |
|
lQuaternion.w.ToString("f3") + |
|
")"; |
|
} |
|
|
|
//------------------------------------------------------------------------------------------------------------ |
|
public static int FirstInt(string lJsonData) |
|
{ |
|
string lDigits = ""; |
|
for (int lCount = 0; lCount < lJsonData.Length && Char.IsDigit(lJsonData[lCount]); ++lCount) |
|
{ |
|
lDigits += lJsonData[lCount]; |
|
} |
|
return int.Parse(lDigits); |
|
} |
|
} |
|
}
|
|
|