using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditorInternal;
using System.Reflection;
using System.IO;
namespace YKMoonEditor
{
public class UEditorUtility
{
public static bool GameObjectIsPrefab(GameObject gameObject)
{
if(gameObject == null) {
return false;
}
string path = AssetDatabase.GetAssetPath(gameObject);
if(string.IsNullOrEmpty(path)) {
return false;
}
return true;
}
///
/// Get all sortingLayerNames.
///
public static List GetSortingLayerNames()
{
Type internalEditorUtilityType = typeof(InternalEditorUtility);
PropertyInfo sortingLayersProperty = internalEditorUtilityType.GetProperty("sortingLayerNames", BindingFlags.Static | BindingFlags.NonPublic);
var sortingLayers = (string[])sortingLayersProperty.GetValue(null, new object[0]);
return new List(sortingLayers);
}
public static void DrawMonoScriptLine(MonoBehaviour mono)
{
GUI.enabled = false;
EditorGUILayout.ObjectField("Script:", MonoScript.FromMonoBehaviour(mono), mono.GetType(), false);
GUI.enabled = true;
}
public static void DrawMonoScriptLine(UnityEngine.Object target) where T : MonoBehaviour
{
GUI.enabled = false;
EditorGUILayout.ObjectField("Script:", MonoScript.FromMonoBehaviour((T)target), typeof(T), false);
GUI.enabled = true;
}
public static void DrawMonoScriptLine(UnityEngine.Object target)
{
GUI.enabled = false;
EditorGUILayout.ObjectField("Script:", MonoScript.FromMonoBehaviour(target as MonoBehaviour), target.GetType(), false);
GUI.enabled = true;
}
public static List LoadAllAssetsAtPath(string path, string ext) where T : UnityEngine.Object
{
List objects = new List();
if(Directory.Exists(path)) {
string[] assets = Directory.GetFiles(path);
foreach(string assetPath in assets) {
if(assetPath.Contains(".meta")) {
continue;
}
if(assetPath.EndsWith(ext)) {
objects.Add(AssetDatabase.LoadAssetAtPath(assetPath));
}
}
}
return objects;
}
public static Rect SplitRect(Rect src, Vector2Int size, Vector2 space, int index, Vector2 padding)
{
float w = (src.width - space.x * (size.x - 1)) / size.x;
float h = (src.height - space.y * (size.y - 1)) / size.y;
float x = src.x + (index % size.x) * (space.x + w) + padding.x;
float y = src.y + (index / size.x) * (space.y + h) + padding.y;
return new Rect(x, y, w - padding.x, h - padding.y);
}
}
}