Merge pull request #10385 from RandomShaper/improve-prop-eval

Fix/improve property evaluator
This commit is contained in:
Rémi Verschelde 2017-08-17 07:31:13 +02:00 committed by GitHub
commit a5604130c5
1 changed files with 7 additions and 7 deletions

View File

@ -4774,19 +4774,20 @@ double PropertyValueEvaluator::eval(const String &p_text) {
return _default_eval(p_text);
}
ScriptInstance *script_instance = script->instance_create(obj);
Object dummy;
ScriptInstance *script_instance = script->instance_create(&dummy);
if (!script_instance)
return _default_eval(p_text);
Variant::CallError call_err;
double result = script_instance->call("e", NULL, 0, call_err);
Variant arg = obj;
const Variant *args[] = { &arg };
double result = script_instance->call("eval", args, 1, call_err);
if (call_err.error == Variant::CallError::CALL_OK) {
return result;
}
print_line("[PropertyValueEvaluator]: Error eval! Error code: " + itos(call_err.error));
memdelete(script_instance);
return _default_eval(p_text);
}
@ -4795,9 +4796,8 @@ void PropertyValueEvaluator::edit(Object *p_obj) {
}
String PropertyValueEvaluator::_build_script(const String &p_text) {
String script_text = "tool\nextends Object\nfunc e():\n\treturn ";
script_text += p_text.strip_edges();
script_text += "\n";
String script_text =
"tool\nextends Object\nfunc eval(s):\n\tself = s\n\treturn " + p_text.strip_edges() + "\n";
return script_text;
}