diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/io/resource_format_binary.cpp | 11 | ||||
| -rw-r--r-- | core/io/resource_format_binary.h | 1 | ||||
| -rw-r--r-- | core/node_path.cpp | 17 | ||||
| -rw-r--r-- | core/translation.cpp | 2 | ||||
| -rw-r--r-- | core/variant_call.cpp | 2 |
5 files changed, 23 insertions, 10 deletions
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index aa51b00028..df0d41ea9d 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -84,8 +84,10 @@ enum { OBJECT_INTERNAL_RESOURCE = 2, OBJECT_EXTERNAL_RESOURCE_INDEX = 3, //version 2: added 64 bits support for float and int - FORMAT_VERSION = 2, - FORMAT_VERSION_CAN_RENAME_DEPS = 1 + //version 3: changed nodepath encoding + FORMAT_VERSION = 3, + FORMAT_VERSION_CAN_RENAME_DEPS = 1, + FORMAT_VERSION_NO_NODEPATH_PROPERTY = 3, }; @@ -273,6 +275,9 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant &r_v) { uint32_t subname_count = f->get_16(); absolute = subname_count & 0x8000; subname_count &= 0x7FFF; + if (ver_format < FORMAT_VERSION_NO_NODEPATH_PROPERTY) { + subname_count += 1; // has a property field, so we should count it as well + } for (int i = 0; i < name_count; i++) names.push_back(_get_string()); @@ -854,7 +859,7 @@ void ResourceInteractiveLoaderBinary::open(FileAccess *p_f) { uint32_t ver_major = f->get_32(); uint32_t ver_minor = f->get_32(); - uint32_t ver_format = f->get_32(); + ver_format = f->get_32(); print_bl("big endian: " + itos(big_endian)); #ifdef BIG_ENDIAN_ENABLED diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h index 2316f05b3c..687da0a9b4 100644 --- a/core/io/resource_format_binary.h +++ b/core/io/resource_format_binary.h @@ -41,6 +41,7 @@ class ResourceInteractiveLoaderBinary : public ResourceInteractiveLoader { String res_path; String type; Ref<Resource> resource; + uint32_t ver_format; FileAccess *f; diff --git a/core/node_path.cpp b/core/node_path.cpp index a01bb420a5..a12152aca6 100644 --- a/core/node_path.cpp +++ b/core/node_path.cpp @@ -207,7 +207,7 @@ StringName NodePath::get_concatenated_subnames() const { String concatenated; const StringName *ssn = data->subpath.ptr(); for (int i = 0; i < spc; i++) { - concatenated += i == 0 ? ssn[i].operator String() : "." + ssn[i]; + concatenated += i == 0 ? ssn[i].operator String() : ":" + ssn[i]; } data->concatenated_subpath = concatenated; } @@ -257,13 +257,17 @@ NodePath NodePath::rel_path_to(const NodePath &p_np) const { NodePath NodePath::get_as_property_path() const { - if (data->has_slashes || !data->path.size()) { - return NodePath(Vector<StringName>(), data->subpath, false); + if (!data->path.size()) { + return *this; } else { - ERR_FAIL_COND_V(data->path.size() != 1, NodePath()); - Vector<StringName> new_path = data->subpath; - new_path.insert(0, data->path[0]); + + String initial_subname = data->path[0]; + for (size_t i = 1; i < data->path.size(); i++) { + initial_subname += i == 0 ? data->path[i].operator String() : "/" + data->path[i]; + } + new_path.insert(0, initial_subname); + return NodePath(Vector<StringName>(), new_path, false); } } @@ -335,7 +339,6 @@ NodePath::NodePath(const String &p_path) { return; String path = p_path; - StringName property; Vector<StringName> subpath; int absolute = (path[0] == '/') ? 1 : 0; diff --git a/core/translation.cpp b/core/translation.cpp index 7e4d4feb89..dcca58692a 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -333,6 +333,7 @@ static const char *locale_list[] = { "sq_KV", // Albanian (Kosovo) "sq_MK", // Albanian (Macedonia) "sr", // Serbian + "sr_Cyrl", // Serbian (Cyrillic) "sr_ME", // Serbian (Montenegro) "sr_RS", // Serbian (Serbia) "ss_ZA", // Swati (South Africa) @@ -693,6 +694,7 @@ static const char *locale_names[] = { "Albanian (Kosovo)", "Albanian (Macedonia)", "Serbian", + "Serbian (Cyrillic)", "Serbian (Montenegro)", "Serbian (Serbia)", "Swati (South Africa)", diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 5e216c75b6..4a140bdb99 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -449,6 +449,7 @@ struct _VariantCall { VCALL_LOCALMEM0R(NodePath, get_subname_count); VCALL_LOCALMEM1R(NodePath, get_subname); VCALL_LOCALMEM0R(NodePath, get_concatenated_subnames); + VCALL_LOCALMEM0R(NodePath, get_as_property_path); VCALL_LOCALMEM0R(NodePath, is_empty); VCALL_LOCALMEM0R(Dictionary, size); @@ -1592,6 +1593,7 @@ void register_variant_methods() { ADDFUNC0R(NODE_PATH, INT, NodePath, get_subname_count, varray()); ADDFUNC1R(NODE_PATH, STRING, NodePath, get_subname, INT, "idx", varray()); ADDFUNC0R(NODE_PATH, STRING, NodePath, get_concatenated_subnames, varray()); + ADDFUNC0R(NODE_PATH, NODE_PATH, NodePath, get_as_property_path, varray()); ADDFUNC0R(NODE_PATH, BOOL, NodePath, is_empty, varray()); ADDFUNC0R(DICTIONARY, INT, Dictionary, size, varray()); |