Fix ImageTextureLayered serialisation issues.
This commit is contained in:
parent
6588a4a29a
commit
f37c2b5be2
@ -1970,14 +1970,17 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
|
|||||||
if (E.usage & PROPERTY_USAGE_STORAGE) {
|
if (E.usage & PROPERTY_USAGE_STORAGE) {
|
||||||
Variant value = res->get(E.name);
|
Variant value = res->get(E.name);
|
||||||
if (E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
|
if (E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
|
||||||
|
NonPersistentKey npk;
|
||||||
|
npk.base = res;
|
||||||
|
npk.property = E.name;
|
||||||
|
non_persistent_map[npk] = value;
|
||||||
|
|
||||||
Ref<Resource> sres = value;
|
Ref<Resource> sres = value;
|
||||||
if (sres.is_valid()) {
|
if (sres.is_valid()) {
|
||||||
NonPersistentKey npk;
|
|
||||||
npk.base = res;
|
|
||||||
npk.property = E.name;
|
|
||||||
non_persistent_map[npk] = sres;
|
|
||||||
resource_set.insert(sres);
|
resource_set.insert(sres);
|
||||||
saved_resources.push_back(sres);
|
saved_resources.push_back(sres);
|
||||||
|
} else {
|
||||||
|
_find_resources(value);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_find_resources(value);
|
_find_resources(value);
|
||||||
|
@ -139,7 +139,7 @@ class ResourceFormatSaverBinaryInstance {
|
|||||||
bool operator<(const NonPersistentKey &p_key) const { return base == p_key.base ? property < p_key.property : base < p_key.base; }
|
bool operator<(const NonPersistentKey &p_key) const { return base == p_key.base ? property < p_key.property : base < p_key.base; }
|
||||||
};
|
};
|
||||||
|
|
||||||
RBMap<NonPersistentKey, Ref<Resource>> non_persistent_map;
|
RBMap<NonPersistentKey, Variant> non_persistent_map;
|
||||||
HashMap<StringName, int> string_map;
|
HashMap<StringName, int> string_map;
|
||||||
Vector<StringName> strings;
|
Vector<StringName> strings;
|
||||||
|
|
||||||
|
@ -371,7 +371,7 @@ void ImageTextureLayered::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("_get_images"), &ImageTextureLayered::_get_images);
|
ClassDB::bind_method(D_METHOD("_get_images"), &ImageTextureLayered::_get_images);
|
||||||
ClassDB::bind_method(D_METHOD("_set_images", "images"), &ImageTextureLayered::_set_images);
|
ClassDB::bind_method(D_METHOD("_set_images", "images"), &ImageTextureLayered::_set_images);
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_images", PROPERTY_HINT_ARRAY_TYPE, "Image", PROPERTY_USAGE_INTERNAL), "_set_images", "_get_images");
|
ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "_images", PROPERTY_HINT_ARRAY_TYPE, "Image", PROPERTY_USAGE_INTERNAL | PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT), "_set_images", "_get_images");
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageTextureLayered::ImageTextureLayered(LayeredType p_layered_type) {
|
ImageTextureLayered::ImageTextureLayered(LayeredType p_layered_type) {
|
||||||
|
@ -1893,14 +1893,17 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant,
|
|||||||
Variant v = res->get(I->get().name);
|
Variant v = res->get(I->get().name);
|
||||||
|
|
||||||
if (pi.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
|
if (pi.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
|
||||||
|
NonPersistentKey npk;
|
||||||
|
npk.base = res;
|
||||||
|
npk.property = pi.name;
|
||||||
|
non_persistent_map[npk] = v;
|
||||||
|
|
||||||
Ref<Resource> sres = v;
|
Ref<Resource> sres = v;
|
||||||
if (sres.is_valid()) {
|
if (sres.is_valid()) {
|
||||||
NonPersistentKey npk;
|
|
||||||
npk.base = res;
|
|
||||||
npk.property = pi.name;
|
|
||||||
non_persistent_map[npk] = sres;
|
|
||||||
resource_set.insert(sres);
|
resource_set.insert(sres);
|
||||||
saved_resources.push_back(sres);
|
saved_resources.push_back(sres);
|
||||||
|
} else {
|
||||||
|
_find_resources(v);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_find_resources(v);
|
_find_resources(v);
|
||||||
|
@ -171,7 +171,7 @@ class ResourceFormatSaverTextInstance {
|
|||||||
bool operator<(const NonPersistentKey &p_key) const { return base == p_key.base ? property < p_key.property : base < p_key.base; }
|
bool operator<(const NonPersistentKey &p_key) const { return base == p_key.base ? property < p_key.property : base < p_key.base; }
|
||||||
};
|
};
|
||||||
|
|
||||||
RBMap<NonPersistentKey, Ref<Resource>> non_persistent_map;
|
RBMap<NonPersistentKey, Variant> non_persistent_map;
|
||||||
|
|
||||||
HashSet<Ref<Resource>> resource_set;
|
HashSet<Ref<Resource>> resource_set;
|
||||||
List<Ref<Resource>> saved_resources;
|
List<Ref<Resource>> saved_resources;
|
||||||
|
Loading…
Reference in New Issue
Block a user