summaryrefslogtreecommitdiffstats
path: root/modules/visual_script/visual_script_editor.h
diff options
context:
space:
mode:
authorGeorge Marques <george@gmarqu.es>2017-11-15 13:57:24 -0200
committerGeorge Marques <george@gmarqu.es>2017-11-15 17:13:13 -0200
commit0284727e7bc6337ebcd98e61eacf0d095d74a094 (patch)
tree4c108558ec25992c2c940cbbde4d3832055c45a2 /modules/visual_script/visual_script_editor.h
parent9543801d51910cdf61123f591fd91993f57782ae (diff)
downloadredot-engine-0284727e7bc6337ebcd98e61eacf0d095d74a094.tar.gz
Create API to add and remove VisualScript custom nodes
This makes a VisualScriptEditor singleton, which gives plugins the ability to register their own custom nodes. Those will be available for insertion in the Visual Script editor, under the "Custom Nodes" category.
Diffstat (limited to 'modules/visual_script/visual_script_editor.h')
-rw-r--r--modules/visual_script/visual_script_editor.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/modules/visual_script/visual_script_editor.h b/modules/visual_script/visual_script_editor.h
index db54d10300..3d037e82ea 100644
--- a/modules/visual_script/visual_script_editor.h
+++ b/modules/visual_script/visual_script_editor.h
@@ -278,6 +278,29 @@ public:
VisualScriptEditor();
~VisualScriptEditor();
};
+
+// Singleton
+class _VisualScriptEditor : public Object {
+ GDCLASS(_VisualScriptEditor, Object);
+
+ friend class VisualScriptLanguage;
+
+protected:
+ static void _bind_methods();
+ static _VisualScriptEditor *singleton;
+
+ static Map<String, RefPtr> custom_nodes;
+ static Ref<VisualScriptNode> create_node_custom(const String &p_name);
+
+public:
+ static _VisualScriptEditor *get_singleton() { return singleton; }
+
+ void add_custom_node(const String &p_name, const String &p_category, const Ref<Script> &p_script);
+ void remove_custom_node(const String &p_name, const String &p_category);
+
+ _VisualScriptEditor();
+ ~_VisualScriptEditor();
+};
#endif
#endif // VISUALSCRIPT_EDITOR_H