123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using UnityEngine.SceneManagement;
- namespace vietlabs.fr2
- {
- public class FR2_Helper
- {
- internal static readonly AssetType[] FILTERS =
- {
- new AssetType("Scene", ".unity"),
- new AssetType("Prefab", ".prefab"),
- new AssetType("Model", ".3df", ".3dm", ".3dmf", ".3dv", ".3dx", ".c5d", ".lwo", ".lws", ".ma", ".mb",
- ".mesh", ".vrl", ".wrl", ".wrz", ".fbx", ".dae", ".3ds", ".dxf", ".obj", ".skp", ".max", ".blend"),
- new AssetType("Material", ".mat", ".cubemap", ".physicsmaterial"),
- new AssetType("Texture", ".ai", ".apng", ".png", ".bmp", ".cdr", ".dib", ".eps", ".exif", ".ico", ".icon",
- ".j", ".j2c", ".j2k", ".jas", ".jiff", ".jng", ".jp2", ".jpc", ".jpe", ".jpeg", ".jpf", ".jpg", "jpw",
- "jpx", "jtf", ".mac", ".omf", ".qif", ".qti", "qtif", ".tex", ".tfw", ".tga", ".tif", ".tiff", ".wmf",
- ".psd", ".exr", ".rendertexture"),
- new AssetType("Video", ".asf", ".asx", ".avi", ".dat", ".divx", ".dvx", ".mlv", ".m2l", ".m2t", ".m2ts",
- ".m2v", ".m4e", ".m4v", "mjp", ".mov", ".movie", ".mp21", ".mp4", ".mpe", ".mpeg", ".mpg", ".mpv2",
- ".ogm", ".qt", ".rm", ".rmvb", ".wmv", ".xvid", ".flv"),
- new AssetType("Audio", ".mp3", ".wav", ".ogg", ".aif", ".aiff", ".mod", ".it", ".s3m", ".xm"),
- new AssetType("Script", ".cs", ".js", ".boo"),
- new AssetType("Text", ".txt", ".json", ".xml", ".bytes", ".sql"),
- new AssetType("Shader", ".shader", ".cginc"),
- new AssetType("Animation", ".anim", ".controller", ".overridecontroller", ".mask"),
- new AssetType("Unity Asset", ".asset", ".guiskin", ".flare", ".fontsettings", ".prefs"),
- new AssetType("Others") //
- };
- public static IEnumerable<GameObject> getAllObjsInCurScene()
- {
- // foreach (GameObject obj in Object.FindObjectsOfType(typeof(GameObject)))
- // {
- // yield return obj;
- // }
- for (var j = 0; j < SceneManager.sceneCount; j++)
- {
- Scene scene = SceneManager.GetSceneAt(j);
- foreach (GameObject item in GetGameObjectsInScene(scene))
- {
- yield return item;
- }
- }
- if (EditorApplication.isPlaying)
- {
- //dont destroy scene
- GameObject temp = null;
- try
- {
- temp = new GameObject();
- Object.DontDestroyOnLoad(temp);
- Scene dontDestroyOnLoad = temp.scene;
- Object.DestroyImmediate(temp);
- temp = null;
- foreach (GameObject item in GetGameObjectsInScene(dontDestroyOnLoad))
- {
- yield return item;
- }
- }
- finally
- {
- if (temp != null)
- {
- Object.DestroyImmediate(temp);
- }
- }
- }
- }
- private static IEnumerable<GameObject> GetGameObjectsInScene(Scene scene)
- {
- var rootObjects = new List<GameObject>();
- scene.GetRootGameObjects(rootObjects);
- // iterate root objects and do something
- for (var i = 0; i < rootObjects.Count; ++i)
- {
- GameObject gameObject = rootObjects[i];
- foreach (GameObject item in getAllChild(gameObject))
- {
- yield return item;
- }
- yield return gameObject;
- }
- }
- public static IEnumerable<GameObject> getAllChild(GameObject target)
- {
- if (target.transform.childCount > 0)
- {
- for (var i = 0; i < target.transform.childCount; i++)
- {
- yield return target.transform.GetChild(i).gameObject;
- foreach (GameObject item in getAllChild(target.transform.GetChild(i).gameObject))
- {
- yield return item;
- }
- }
- }
- }
- public static IEnumerable<Object> GetAllRefObjects(GameObject obj)
- {
- Component[] components = obj.GetComponents<Component>();
- foreach (Component com in components)
- {
- if (com == null)
- {
- continue;
- }
- var serialized = new SerializedObject(com);
- SerializedProperty it = serialized.GetIterator().Copy();
- while (it.NextVisible(true))
- {
- if (it.propertyType != SerializedPropertyType.ObjectReference)
- {
- continue;
- }
- if (it.objectReferenceValue == null)
- {
- continue;
- }
- yield return it.objectReferenceValue;
- }
- }
- }
- public static int StringMatch(string pattern, string input)
- {
- if (input == pattern)
- {
- return int.MaxValue;
- }
- if (input.Contains(pattern))
- {
- return int.MaxValue - 1;
- }
- var pidx = 0;
- var score = 0;
- var tokenScore = 0;
- for (var i = 0; i < input.Length; i++)
- {
- char ch = input[i];
- if (ch == pattern[pidx])
- {
- tokenScore += tokenScore + 1; //increasing score for continuos token
- pidx++;
- if (pidx >= pattern.Length)
- {
- break;
- }
- }
- else
- {
- tokenScore = 0;
- }
- score += tokenScore;
- }
- return score;
- }
- public static int GetIndex(string ext)
- {
- for (var i = 0; i < FILTERS.Length - 1; i++)
- {
- if (FILTERS[i].extension.Contains(ext))
- {
- return i;
- }
- }
- return FILTERS.Length - 1; //Others
- }
- public static void GuiLine(int i_height = 1)
- {
- Rect rect = EditorGUILayout.GetControlRect(false, i_height);
- rect.height = i_height;
- EditorGUI.DrawRect(rect, new Color(0.5f, 0.5f, 0.5f, 1));
- }
- public static string GetfileSizeString(long fileSize)
- {
- return fileSize <= 1024
- ? fileSize + " B"
- : fileSize <= 1024 * 1024
- ? Mathf.RoundToInt(fileSize / 1024f) + " KB"
- : Mathf.RoundToInt(fileSize / 1024f / 1024f) + " MB";
- }
- }
- }
|