从旧版中移植,Prefab未确认

This commit is contained in:
2025-07-24 15:41:28 +08:00
parent 86842492ea
commit 43b824b722
300 changed files with 101926 additions and 14 deletions

View File

@@ -0,0 +1,82 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Convention.WindowsUI;
using Convention.WindowsUI.Variant;
using UnityEngine;
using UnityEngine.Events;
namespace Convention.Workflow
{
public class GraphInputWindow : MonoSingleton<GraphInputWindow>, ITitle, IText
{
[Resources, SerializeField, OnlyNotNullMode] private Text Title;
[Resources, SerializeField, OnlyNotNullMode] private Text Description;
[Resources, SerializeField, OnlyNotNullMode] private ModernUIButton AddContentInput;
[Resources, SerializeField, HopeNotNull, Header(nameof(HierarchyWindow))] private HierarchyWindow MyHierarchyWindow;
private PropertiesWindow.ItemEntry StartNodeInputsTab, FunctionsTab, EndNodeOutputsTab;
public string title { get => ((ITitle)this.Title).title; set => ((ITitle)this.Title).title = value; }
public string text { get => ((IText)this.Description).text; set => ((IText)this.Description).text = value; }
private class TitleClass : IHierarchyItemTitle
{
[InspectorDraw(InspectorDrawType.Text, false, false)]
public string title;
public TitleClass(string title)
{
this.title = title;
}
public string HierarchyItemTitle => title;
}
private void Start()
{
AddContentInput.AddListener(() =>
{
SharedModule.instance.OpenCustomMenu(this.transform as RectTransform, new SharedModule.CallbackData("test", go => { }));
});
Architecture.RegisterWithDuplicateAllow(typeof(GraphInputWindow), this, () =>
{
StartNodeInputsTab = MyHierarchyWindow.CreateRootItemEntryWithBinders(new TitleClass(nameof(StartNodeInputsTab)))[0];
StartNodeInputsTab.GetHierarchyItem().title = WorkflowManager.Transformer("StartNodes");
FunctionsTab = MyHierarchyWindow.CreateRootItemEntryWithBinders(new TitleClass(nameof(FunctionsTab)))[0];
FunctionsTab.GetHierarchyItem().title = WorkflowManager.Transformer("Functions");
EndNodeOutputsTab = MyHierarchyWindow.CreateRootItemEntryWithBinders(new TitleClass(nameof(EndNodeOutputsTab)))[0];
EndNodeOutputsTab.GetHierarchyItem().title = WorkflowManager.Transformer("EndNodes");
}, typeof(HierarchyWindow));
}
private void Reset()
{
MyHierarchyWindow = GetComponent<HierarchyWindow>();
}
public PropertiesWindow.ItemEntry RegisterOnHierarchyWindow(NodeInfo info)
{
PropertiesWindow.ItemEntry item = null;
if (info is StartNodeInfo)
{
item = StartNodeInputsTab.GetHierarchyItem().CreateSubPropertyItemWithBinders(info)[0];
}
else if (info is EndNodeInfo)
{
item = EndNodeOutputsTab.GetHierarchyItem().CreateSubPropertyItemWithBinders(info)[0];
}
else if (info is StepNodeInfo sNode)
{
var parentItem = FunctionsTab.GetHierarchyItem();
var menuEntry = parentItem.Entry.GetChilds().Find(x => (x.GetHierarchyItem().target as TitleClass).title == sNode.funcname);
if (menuEntry == null)
{
menuEntry = parentItem.CreateSubPropertyItemWithBinders(new TitleClass(sNode.funcname))[0];
}
item = menuEntry.GetHierarchyItem().CreateSubPropertyItemWithBinders(info)[0];
}
return item;
}
}
}