SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
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.
|
|
using System;using System.Collections;using System.IO;using System.Linq;using System.Text.RegularExpressions;using System.Threading;
using UnityEngine;
namespace UnityEditor.XR.Management{ internal static class EditorUtilities { internal static readonly string[] s_DefaultGeneralSettingsPath = {"XR"}; internal static readonly string[] s_DefaultLoaderPath = {"XR","Loaders"}; internal static readonly string[] s_DefaultSettingsPath = {"XR","Settings"};
internal static bool AssetDatabaseHasInstanceOfType(string type) { var assets = AssetDatabase.FindAssets(String.Format("t:{0}", type)); return assets.Any(); }
internal static T GetInstanceOfTypeFromAssetDatabase<T>() where T : class { var assets = AssetDatabase.FindAssets(String.Format("t:{0}", typeof(T).Name)); if (assets.Any()) { string assetPath = AssetDatabase.GUIDToAssetPath(assets[0]); var asset = AssetDatabase.LoadAssetAtPath(assetPath, typeof(T)); return asset as T; } return null; }
internal static ScriptableObject GetInstanceOfTypeWithNameFromAssetDatabase(string typeName) { var assets = AssetDatabase.FindAssets(String.Format("t:{0}", typeName)); if (assets.Any()) { string assetPath = AssetDatabase.GUIDToAssetPath(assets[0]); var asset = AssetDatabase.LoadAssetAtPath(assetPath, typeof(ScriptableObject)); return asset as ScriptableObject; } return null; }
internal static string GetAssetPathForComponents(string[] pathComponents, string root = "Assets") { if (pathComponents.Length <= 0) return null;
string path = root; foreach( var pc in pathComponents) { string subFolder = Path.Combine(path, pc); bool shouldCreate = true; foreach (var f in AssetDatabase.GetSubFolders(path)) { if (String.Compare(Path.GetFullPath(f), Path.GetFullPath(subFolder), true) == 0) { shouldCreate = false; break; } }
if (shouldCreate) AssetDatabase.CreateFolder(path, pc); path = subFolder; }
return path; }
internal static string TypeNameToString(Type type) { return type == null ? "" : TypeNameToString(type.FullName); }
internal static string TypeNameToString(string type) { string[] typeParts = type.Split(new char[] { '.' }); if (!typeParts.Any()) return String.Empty;
string[] words = Regex.Matches(typeParts.Last(), "(^[a-z]+|[A-Z]+(?![a-z])|[A-Z][a-z]+)") .OfType<Match>() .Select(m => m.Value) .ToArray(); return string.Join(" ", words); }
internal static ScriptableObject CreateScriptableObjectInstance(string typeName, string path) { ScriptableObject obj = ScriptableObject.CreateInstance(typeName) as ScriptableObject; if (obj != null) { if (!string.IsNullOrEmpty(path)) { string fileName = String.Format("{0}.asset", EditorUtilities.TypeNameToString(typeName)); string targetPath = Path.Combine(path, fileName); AssetDatabase.CreateAsset(obj, targetPath); return obj; } }
Debug.LogError($"We were unable to create an instance of the requested type {typeName}. Please make sure that all packages are updated to support this version of XR Plug-In Management. See the Unity documentation for XR Plug-In Management for information on resolving this issue."); return null; }
}}
|