-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathPluginDesigner.cs
110 lines (94 loc) · 4.83 KB
/
PluginDesigner.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System.CodeDom;
using System.IO;
using System.Linq;
using System.Text;
using Invert.Core;
using Invert.Core.GraphDesigner;
using Invert.IOC;
[UnityEditor.InitializeOnLoad]
public class PluginDesigner : DiagramPlugin
{
static PluginDesigner() {
InvertApplication.CachedAssembly(typeof(PluginDesigner).Assembly);
}
public override void Initialize(UFrameContainer container)
{
#if DEBUG && UNITY_EDITOR
//container.RegisterInstance<IToolbarCommand>(new PrintPlugins(), "Json");
#endif
//container.RegisterInstance<IDiagramNodeCommand>(new SelectColorCommand(), "SelectColor");
var pluginConfig = container
.AddItem<ShellNodeSectionsSlot>()
.AddItem<ShellNodeInputsSlot>()
.AddItem<ShellNodeOutputsSlot>()
.AddItem<TemplatePropertyReference>()
.AddItem<TemplateMethodReference>()
.AddItem<TemplateFieldReference>()
.AddItem<TemplateEventReference>()
.AddItem<ShellAcceptableReferenceType>()
.AddItem<ShellConnectableReferenceType>()
.AddTypeItem<ShellPropertySelectorItem>()
.AddGraph<PluginGraphData,ShellPluginNode>("Shell Plugin")
.Color(NodeColor.Green)
.HasSubNode<IShellNode>()
.HasSubNode<TypeReferenceNode>()
.HasSubNode<ShellNodeConfig>()
.HasSubNode<ScreenshotNode>()
#if UNITY_EDITOR
// .AddCodeTemplate<DocumentationTemplate>()
#endif
;
// container.AddNode<ScreenshotNode, ScreenshotNodeViewModel, ScreenshotNodeDrawer>("Screenshot");
container.AddWorkspaceConfig<ArchitectWorkspace>("Architect","Create a uFrame Architect workspace for creating plugin graphs.")
.WithGraph<PluginGraphData>("Plugin", "Creates a new plugin graph for creating node configurations.");
var shellConfigurationNode =
container.AddNode<ShellNodeConfig, ShellNodeConfigViewModel, ShellNodeConfigDrawer>("Node Config")
.HasSubNode<ShellNodeConfig>()
.HasSubNode<ScreenshotNode>()
.HasSubNode<ShellTemplateConfigNode>()
;
// shellConfigurationNode.AddFlag("Graph Type");
container.AddNode<ShellTemplateConfigNode>("Code Template")
.Color(NodeColor.Purple);
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfig, ShellNodeConfigTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfigSection, ShellNodeConfigReferenceSectionTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfigSection, ShellNodeConfigChildItemTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfig, ShellNodeAsGraphTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellPluginNode, ShellConfigPluginTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfig, ShellNodeConfigViewModelTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellNodeConfig, ShellNodeConfigDrawerTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellTemplateConfigNode, ShellNodeConfigTemplateTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<IShellSlotType, ShellSlotItemTemplate>();
#if UNITY_EDITOR
if (GenerateDocumentation)
{
RegisteredTemplateGeneratorsFactory.RegisterTemplate<ShellPluginNode, DocumentationTemplate>();
RegisteredTemplateGeneratorsFactory.RegisterTemplate<IDocumentable, DocumentationPageTemplate>();
}
#endif
container.Connectable<ShellNodeConfigSection, ShellNodeConfig>();
container.Connectable<ShellNodeConfigSection, ShellNodeConfigSection>();
container.Connectable<IShellNodeConfigItem, IShellNodeConfigItem>();
container.Connectable<ShellNodeConfigOutput, ShellNodeConfigInput>();
container.Connectable<ShellNodeConfigOutput, ShellNodeConfig>();
container.Connectable<ShellNodeConfigOutput, ShellNodeConfigSection>();
container.Connectable<ShellNodeConfig, ShellNodeConfigInput>();
container.Connectable<ShellNodeConfig, ShellNodeConfigSection>();
container.Connectable<IShellNodeConfigItem, ShellTemplateConfigNode>();
container.Connectable<ShellNodeConfigSection, ShellNodeConfigInput>();
container.Connectable<ShellNodeConfigSection, ShellNodeConfigSection>();
}
public class ArchitectWorkspace : Workspace
{
}
[InspectorProperty]
public static bool GenerateDocumentation
{
get { return false; }
// InvertGraphEditor.Prefs.GetBool("PLUGINDESIGNER_GENDOCS", true); }
set
{
// InvertApplication.Prefs.SetBool("PLUGINDESIGNER_GENDOCS", value);
}
}
}