diff options
| author | Carl Olsson | 2015-03-23 08:19:20 +1000 |
|---|---|---|
| committer | Carl Olsson | 2015-03-23 08:19:20 +1000 |
| commit | fb2cdfe7edcc2ccafea7604afd104f582e5b9c17 (patch) | |
| tree | d9555d9519648f95d7ed3663fbca50978bb12a1f /core/variant_op.cpp | |
| parent | 41686d5fdd0d72f167894f976d19b177789f1f63 (diff) | |
| parent | e9f94ce8d2cc6805e74fffdf733e6dc5b5c530f5 (diff) | |
| download | godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.tar.gz godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.tar.zst godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.zip | |
Merge branch 'master' of https://github.com/not-surt/godot into snapping2
Conflicts:
tools/editor/plugins/canvas_item_editor_plugin.cpp
tools/editor/plugins/canvas_item_editor_plugin.h
Diffstat (limited to 'core/variant_op.cpp')
| -rw-r--r-- | core/variant_op.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/core/variant_op.cpp b/core/variant_op.cpp index 21bbc8c7e..87d9738b0 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -552,6 +552,9 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant& if (p_b.type==MATRIX32) { _RETURN( *p_a._data._matrix32 * *p_b._data._matrix32 ); }; + if (p_b.type==VECTOR2) { + _RETURN( p_a._data._matrix32->xform( *(const Vector2*)p_b._data._mem) ); + }; r_valid=false; return; } break; @@ -738,18 +741,22 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant& _RETURN( p_a._data._int % p_b._data._int ); } else if (p_a.type==STRING) { - const String *str=reinterpret_cast<const String*>(p_a._data._mem); + const String* format=reinterpret_cast<const String*>(p_a._data._mem); + String result; + bool error; if (p_b.type==ARRAY) { // e.g. "frog %s %d" % ["fish", 12] - const Array *arr=reinterpret_cast<const Array*>(p_b._data._mem); - _RETURN(str->sprintf(*arr)); + const Array* args=reinterpret_cast<const Array*>(p_b._data._mem); + result=format->sprintf(*args, &error); } else { // e.g. "frog %d" % 12 - Array arr; - arr.push_back(p_b); - _RETURN(str->sprintf(arr)); + Array args; + args.push_back(p_b); + result=format->sprintf(args, &error); } + r_valid = !error; + _RETURN(result); } r_valid=false; |
