Skip to content

Commit

Permalink
Merge branch 'release/v2.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
naukri7707 committed Nov 12, 2023
2 parents b2fe657 + 7491442 commit d975a10
Show file tree
Hide file tree
Showing 37 changed files with 1,079 additions and 98 deletions.
19 changes: 18 additions & 1 deletion Packages/com.naukri.inspector-maid/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [2.2.0] - 2023-11-12

### 新增

- `UIElements.Compose` 使命令式 UI 設計更具結構性。
- `Spacer` 小部件 : 用以填滿容器空隙。
- Project Setting 新增快速建立特定 CustomEditor 選項,以幫助使用者啟用 InspectorMaid 服務。

### 更新

- 使用 Inspector-Maid 自舉建立 Project Setting 頁面。

### 修正

- 快速反射無法存取靜態成員錯誤。
- 監聽帶參數 `Func` 會時因綁定目標已註冊而導致參數錯誤的問題。

## [2.1.0] - 2023-11-10

### 新增
Expand All @@ -12,7 +29,7 @@
- Sample Script 基於 Class Attribute 重寫,減少對 Sample 欄位的干擾並美化介面。
### 修正

- 修正 Slot 參數名稱錯誤
- 修正 Slot 參數名稱錯誤

### 重構
- `Context` 連結方式改為由父 `Context` 主動 `Attach()``Context`
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,47 +1,28 @@
using Naukri.InspectorMaid.Editor.Extensions;
using Naukri.InspectorMaid.Editor.Contexts.Core;
using Naukri.InspectorMaid.Editor.Extensions;
using Naukri.InspectorMaid.Editor.Services;
using Naukri.InspectorMaid.Editor.Services.Default;
using Naukri.InspectorMaid.Editor.Widgets.Logic;
using Naukri.InspectorMaid.Editor.Widgets.Visual;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UObject = UnityEngine.Object;

namespace Naukri.InspectorMaid.Editor.Core
{
[CustomEditor(typeof(MonoBehaviour), true, isFallback = true)]
internal class InspectorMaidEditor : UnityEditor.Editor
public abstract partial class InspectorMaidEditor : UnityEditor.Editor
{
EditorEventService editorEventService;
private IEditorEventService editorEventService;

public override VisualElement CreateInspectorGUI()
{
var serviceWidget = new ServiceWidget();
var classContext = CreateContextTree(target);

editorEventService = new EditorEventService();
editorEventService = IEditorEventService.Of(classContext);

EditorApplication.update += editorEventService.InvokeUpdate;

var settings = InspectorMaidSettings.Instance;
var fastReflectionService = new FastReflectionService(target);
var memberWidgetTemplateService = new MemberWidgetTemplates(target, serializedObject);
var valueChangedListenerService = new ChangedNotifierService(editorEventService, fastReflectionService);

serviceWidget.AddService<IInspectorMaidSettings>(settings);
serviceWidget.AddService<IEditorEventService>(editorEventService);
serviceWidget.AddService<IFastReflectionService>(fastReflectionService);
serviceWidget.AddService<IMemberWidgetTemplates>(memberWidgetTemplateService);
serviceWidget.AddService<IChangedNotifierService>(valueChangedListenerService);

var rootWidget = new ClassWidget(target, serializedObject);

var serviceContext = serviceWidget.CreateContext();

var rootContext = rootWidget.CreateContext();

serviceContext.Attach(rootContext);

return rootContext.Build();
return classContext.Build();
}

protected virtual void OnSceneGUI()
Expand All @@ -58,4 +39,34 @@ protected virtual void OnDestroy()
}
}
}

partial class InspectorMaidEditor
{
public static VisualContext CreateContextTree(UObject target)
{
var serializedObject = new SerializedObject(target);

var serviceWidget = new ServiceWidget();
var serviceContext = serviceWidget.CreateContext();

var settings = InspectorMaidSettings.Instance;
var editorEventService = new EditorEventService();
var fastReflectionService = new FastReflectionService(target);
var memberWidgetTemplateService = new MemberWidgetTemplates(target, serializedObject);
var valueChangedListenerService = new ChangedNotifierService(editorEventService, fastReflectionService);

serviceWidget.AddService<IInspectorMaidSettings>(settings);
serviceWidget.AddService<IEditorEventService>(editorEventService);
serviceWidget.AddService<IFastReflectionService>(fastReflectionService);
serviceWidget.AddService<IMemberWidgetTemplates>(memberWidgetTemplateService);
serviceWidget.AddService<IChangedNotifierService>(valueChangedListenerService);

var classWidget = new ClassWidget(target, serializedObject);
var classContext = classWidget.CreateContext();

serviceContext.Attach(classContext);

return classContext;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,16 @@ public static bool HasAttribute<T>(this MemberInfo self) where T : Attribute
{
return Attribute.IsDefined(self, typeof(T));
}

public static bool IsStatic(this MemberInfo member)
{
return member switch
{
FieldInfo fieldInfo => fieldInfo.IsStatic,
PropertyInfo propertyInfo => IsStatic(propertyInfo.GetAccessors(true)[0]),
MethodBase methodBase => methodBase.IsStatic,
_ => throw new InvalidOperationException("Unsupport type")
};
}
}
}
Loading

0 comments on commit d975a10

Please sign in to comment.