summaryrefslogtreecommitdiffstats
path: root/modules/visual_script/visual_script_nodes.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-09-03 14:58:23 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-09-03 14:58:23 -0300
commit5028d7510d1036cfb027d3dd2158d3d22afb530b (patch)
tree787348324806cbc035f4d7374d66cbf9282db11c /modules/visual_script/visual_script_nodes.cpp
parentee37c2f4330e9bd247576b5834cd2660cb520e13 (diff)
downloadredot-engine-5028d7510d1036cfb027d3dd2158d3d22afb530b.tar.gz
Connection hints when connecting to empty space.
Diffstat (limited to 'modules/visual_script/visual_script_nodes.cpp')
-rw-r--r--modules/visual_script/visual_script_nodes.cpp90
1 files changed, 89 insertions, 1 deletions
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index e5436cc26c..03fd70b0a3 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -1071,7 +1071,13 @@ PropertyInfo VisualScriptPreload::get_input_value_port_info(int p_idx) const{
PropertyInfo VisualScriptPreload::get_output_value_port_info(int p_idx) const{
- return PropertyInfo(Variant::OBJECT,"res");
+ PropertyInfo pinfo=PropertyInfo(Variant::OBJECT,"res");
+ if (preload.is_valid()) {
+ pinfo.hint=PROPERTY_HINT_RESOURCE_TYPE;
+ pinfo.hint_string=preload->get_type();
+ }
+
+ return pinfo;
}
@@ -1927,6 +1933,19 @@ VisualScriptNodeInstance* VisualScriptEngineSingleton::instance(VisualScriptInst
return instance;
}
+VisualScriptEngineSingleton::TypeGuess VisualScriptEngineSingleton::guess_output_type(TypeGuess* p_inputs, int p_output) const {
+
+ Object *obj=Globals::get_singleton()->get_singleton_object(singleton);
+ TypeGuess tg;
+ tg.type=Variant::OBJECT;
+ if (obj) {
+ tg.obj_type=obj->get_type();
+ tg.script=obj->get_script();
+ }
+
+ return tg;
+}
+
void VisualScriptEngineSingleton::_bind_methods() {
@@ -2064,6 +2083,8 @@ VisualScriptNodeInstance* VisualScriptSceneNode::instance(VisualScriptInstance*
}
+
+
#ifdef TOOLS_ENABLED
static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const Ref<Script> &script) {
@@ -2087,6 +2108,49 @@ static Node* _find_script_node(Node* p_edited_scene,Node* p_current_node,const R
#endif
+VisualScriptSceneNode::TypeGuess VisualScriptSceneNode::guess_output_type(TypeGuess* p_inputs, int p_output) const {
+
+
+ VisualScriptSceneNode::TypeGuess tg;
+ tg.type=Variant::OBJECT;
+ tg.obj_type="Node";
+
+#ifdef TOOLS_ENABLED
+ Ref<Script> script = get_visual_script();
+ if (!script.is_valid())
+ return tg;
+
+ MainLoop * main_loop = OS::get_singleton()->get_main_loop();
+ if (!main_loop)
+ return tg;
+
+ SceneTree *scene_tree = main_loop->cast_to<SceneTree>();
+
+ if (!scene_tree)
+ return tg;
+
+ Node *edited_scene = scene_tree->get_edited_scene_root();
+
+ if (!edited_scene)
+ return tg;
+
+ Node* script_node = _find_script_node(edited_scene,edited_scene,script);
+
+ if (!script_node)
+ return tg;
+
+ Node* another = script_node->get_node(path);
+
+ if (another) {
+ tg.obj_type=another->get_type();
+ tg.script=another->get_script();
+ }
+#endif
+ return tg;
+
+}
+
+
void VisualScriptSceneNode::_validate_property(PropertyInfo& property) const {
#ifdef TOOLS_ENABLED
@@ -2224,6 +2288,13 @@ VisualScriptNodeInstance* VisualScriptSceneTree::instance(VisualScriptInstance*
return instance;
}
+VisualScriptSceneTree::TypeGuess VisualScriptSceneTree::guess_output_type(TypeGuess* p_inputs, int p_output) const {
+
+ TypeGuess tg;
+ tg.type=Variant::OBJECT;
+ tg.obj_type="SceneTree";
+ return tg;
+}
void VisualScriptSceneTree::_validate_property(PropertyInfo& property) const {
@@ -2415,6 +2486,23 @@ VisualScriptNodeInstance* VisualScriptSelf::instance(VisualScriptInstance* p_ins
return instance;
}
+VisualScriptSelf::TypeGuess VisualScriptSelf::guess_output_type(TypeGuess* p_inputs, int p_output) const {
+
+ VisualScriptSceneNode::TypeGuess tg;
+ tg.type=Variant::OBJECT;
+ tg.obj_type="Object";
+
+ Ref<Script> script = get_visual_script();
+ if (!script.is_valid())
+ return tg;
+
+ tg.obj_type=script->get_instance_base_type();
+ tg.script=script;
+
+ return tg;
+
+
+}
void VisualScriptSelf::_bind_methods() {