summaryrefslogtreecommitdiffstats
path: root/modules/visual_script/visual_script_flow_control.cpp
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-08-31 17:58:51 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-08-31 17:58:51 -0300
commitfc70824f7c6ab1944d54194f54b816e55671e177 (patch)
treebfb5645fa22c724d9f2f8724c809f6319ca51579 /modules/visual_script/visual_script_flow_control.cpp
parent5567350e1bf28ca9468b8321378f19e67ee03909 (diff)
downloadredot-engine-fc70824f7c6ab1944d54194f54b816e55671e177.tar.gz
More improvements to visual script..
fixed a bug of not saving when sub-nodes changed.
Diffstat (limited to 'modules/visual_script/visual_script_flow_control.cpp')
-rw-r--r--modules/visual_script/visual_script_flow_control.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp
index 42cf4aab49..5066a4214d 100644
--- a/modules/visual_script/visual_script_flow_control.cpp
+++ b/modules/visual_script/visual_script_flow_control.cpp
@@ -605,7 +605,7 @@ VisualScriptSequence::VisualScriptSequence() {
int VisualScriptSwitch::get_output_sequence_port_count() const {
- return case_values.size();
+ return case_values.size()+1;
}
bool VisualScriptSwitch::has_input_sequence_port() const{
@@ -625,6 +625,9 @@ int VisualScriptSwitch::get_output_value_port_count() const{
String VisualScriptSwitch::get_output_sequence_port_text(int p_port) const {
+ if (p_port==case_values.size())
+ return "done";
+
if (case_values[p_port].value.get_type()==Variant::NIL)
return "null";
return case_values[p_port].value;
@@ -664,20 +667,18 @@ public:
virtual int step(const Variant** p_inputs,Variant** p_outputs,StartMode p_start_mode,Variant* p_working_mem,Variant::CallError& r_error,String& r_error_str) {
- if (p_inputs[0]->get_type()!=Variant::INPUT_EVENT) {
- r_error_str="Input value not of type event";
- r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD;
- return 0;
+ if (p_start_mode==START_MODE_CONTINUE_SEQUENCE) {
+ return case_values.size(); //exit
}
for(int i=0;i<case_values.size();i++) {
if (*p_inputs[0]==case_values[i]) {
- return i;
+ return i|STEP_FLAG_PUSH_STACK_BIT;
}
}
- return STEP_NO_ADVANCE_BIT;
+ return case_values.size();
}