using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; using System.Reflection; using UnityEngine.AddressableAssets; #if UNITY_EDITOR using System; using UnityEditor; using Editor = UnityEditor.Editor; using UnityEditor.UIElements; #else using Editor=BITKit.Constant.EmetyClass; #endif namespace BITKit { public class BITAttribute : System.Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true, Inherited = true)] public class CustomTypeAttribute : System.Attribute { public readonly Type Type; public CustomTypeAttribute(Type type) { Type = type; } } public class BITEditorUtils { public const string InspectorPath = "Assets/BITKit/Unity/UX/BITInspector.uss"; public const string StylePath = "Assets/BITKit/Unity/UX/Common/Common.uss"; #if UNITY_EDITOR public static StyleSheet Style => AssetDatabase.LoadAssetAtPath(StylePath); public static StyleSheet InspectorStyleSheet => AssetDatabase.LoadAssetAtPath(InspectorPath); #endif } public class ServerRpcAttribute : System.Attribute { } public class ClientRpcAttribute : System.Attribute { } #if UNITY_EDITOR public static class BITInspectorExtensions { public static T Get(this SerializedProperty self) { var obj = self.serializedObject.targetObject; var type = obj.GetType(); var field = type.GetField(self.propertyPath); return (T)field.GetValue(obj); } } public class BITInspector : Editor { const string ussName = "BITInspector"; public class VisualElementCreator { public static implicit operator VisualElement(VisualElementCreator self) { return self.root; } public VisualElement root; public VE Create() where VE : VisualElement, new() { root = root ?? new(); var ve = new VE(); root.Add(ve); return ve; } } protected VisualElementCreator root = new(); protected T agent; public override VisualElement CreateInspectorGUI() { if (serializedObject.targetObject is ICustomInspector inspector && inspector.GetVisualElement() is not null) { return inspector.GetVisualElement(); } else { FillDefaultInspector(); return root; } } protected Label CreateSubTitle(string value) { var label = root.Create