Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion compat/texture_loader_compat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,14 @@ TextureLoaderCompat::TextureVersionType TextureLoaderCompat::recognize(const Str
const String res_path = p_path;
Ref<FileAccess> f = FileAccess::open(res_path, FileAccess::READ, r_err);

ERR_FAIL_COND_V_MSG(*r_err != OK || f.is_null(), FORMAT_NOT_TEXTURE, "Can't open texture file " + p_path);
if (*r_err != OK || f.is_null()) {
// fail silently if the file doesn't exist
if (!FileAccess::exists(res_path)) {
*r_err = ERR_FILE_NOT_FOUND;
return FORMAT_NOT_TEXTURE;
}
ERR_FAIL_COND_V_MSG(*r_err != OK || f.is_null(), FORMAT_NOT_TEXTURE, "Can't open texture file " + p_path);
}

uint8_t header[4];
uint64_t got = f->get_buffer(header, 4);
Expand Down
102 changes: 52 additions & 50 deletions compat/variant_decoder_compat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4356,6 +4356,8 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *

uint32_t header = p_variant.get_type();

const int real_t_size = p_real_t_is_double ? sizeof(double) : sizeof(float);

switch (p_variant.get_type()) {
case Variant::INT: {
int64_t val = p_variant;
Expand Down Expand Up @@ -4530,10 +4532,10 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
if (buf) {
Vector2 v2 = p_variant;
_encode_real(v2.x, &buf[0], p_real_t_is_double);
_encode_real(v2.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(v2.y, &buf[real_t_size], p_real_t_is_double);
}

r_len += 2 * sizeof(real_t);
r_len += 2 * real_t_size;

} break;
case Variant::VECTOR2I: {
Expand All @@ -4550,11 +4552,11 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
if (buf) {
Rect2 r2 = p_variant;
_encode_real(r2.position.x, &buf[0], p_real_t_is_double);
_encode_real(r2.position.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(r2.size.x, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(r2.size.y, &buf[sizeof(real_t) * 3], p_real_t_is_double);
_encode_real(r2.position.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(r2.size.x, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(r2.size.y, &buf[real_t_size * 3], p_real_t_is_double);
}
r_len += 4 * sizeof(real_t);
r_len += 4 * real_t_size;

} break;
case Variant::RECT2I: {
Expand All @@ -4572,11 +4574,11 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
if (buf) {
Vector3 v3 = p_variant;
_encode_real(v3.x, &buf[0], p_real_t_is_double);
_encode_real(v3.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(v3.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(v3.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(v3.z, &buf[real_t_size * 2], p_real_t_is_double);
}

r_len += 3 * sizeof(real_t);
r_len += 3 * real_t_size;

} break;
case Variant::VECTOR3I: {
Expand All @@ -4595,24 +4597,24 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
Transform2D val = p_variant;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) {
memcpy(&buf[(i * 2 + j) * sizeof(real_t)], &val.columns[i][j], sizeof(real_t));
memcpy(&buf[(i * 2 + j) * real_t_size], &val.columns[i][j], real_t_size);
}
}
}

r_len += 6 * sizeof(real_t);
r_len += 6 * real_t_size;

} break;
case Variant::VECTOR4: {
if (buf) {
Vector4 v4 = p_variant;
_encode_real(v4.x, &buf[0], p_real_t_is_double);
_encode_real(v4.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(v4.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(v4.w, &buf[sizeof(real_t) * 3], p_real_t_is_double);
_encode_real(v4.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(v4.z, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(v4.w, &buf[real_t_size * 3], p_real_t_is_double);
}

r_len += 4 * sizeof(real_t);
r_len += 4 * real_t_size;

} break;
case Variant::VECTOR4I: {
Expand All @@ -4631,81 +4633,81 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
if (buf) {
Plane p = p_variant;
_encode_real(p.normal.x, &buf[0], p_real_t_is_double);
_encode_real(p.normal.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(p.normal.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(p.d, &buf[sizeof(real_t) * 3], p_real_t_is_double);
_encode_real(p.normal.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(p.normal.z, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(p.d, &buf[real_t_size * 3], p_real_t_is_double);
}

r_len += 4 * sizeof(real_t);
r_len += 4 * real_t_size;

} break;
case Variant::QUATERNION: {
if (buf) {
Quaternion q = p_variant;
_encode_real(q.x, &buf[0], p_real_t_is_double);
_encode_real(q.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(q.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(q.w, &buf[sizeof(real_t) * 3], p_real_t_is_double);
_encode_real(q.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(q.z, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(q.w, &buf[real_t_size * 3], p_real_t_is_double);
}

r_len += 4 * sizeof(real_t);
r_len += 4 * real_t_size;

} break;
case Variant::AABB: {
if (buf) {
AABB aabb = p_variant;
_encode_real(aabb.position.x, &buf[0], p_real_t_is_double);
_encode_real(aabb.position.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(aabb.position.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(aabb.size.x, &buf[sizeof(real_t) * 3], p_real_t_is_double);
_encode_real(aabb.size.y, &buf[sizeof(real_t) * 4], p_real_t_is_double);
_encode_real(aabb.size.z, &buf[sizeof(real_t) * 5], p_real_t_is_double);
_encode_real(aabb.position.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(aabb.position.z, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(aabb.size.x, &buf[real_t_size * 3], p_real_t_is_double);
_encode_real(aabb.size.y, &buf[real_t_size * 4], p_real_t_is_double);
_encode_real(aabb.size.z, &buf[real_t_size * 5], p_real_t_is_double);
}

r_len += 6 * sizeof(real_t);
r_len += 6 * real_t_size;

} break;
case Variant::BASIS: {
if (buf) {
Basis val = p_variant;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
memcpy(&buf[(i * 3 + j) * sizeof(real_t)], &val.rows[i][j], sizeof(real_t));
_encode_real(val.rows[i][j], &buf[(i * 3 + j) * real_t_size], p_real_t_is_double);
}
}
}

r_len += 9 * sizeof(real_t);
r_len += 9 * real_t_size;

} break;
case Variant::TRANSFORM3D: {
if (buf) {
Transform3D val = p_variant;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
memcpy(&buf[(i * 3 + j) * sizeof(real_t)], &val.basis.rows[i][j], sizeof(real_t));
_encode_real(val.basis.rows[i][j], &buf[(i * 3 + j) * real_t_size], p_real_t_is_double);
}
}

_encode_real(val.origin.x, &buf[sizeof(real_t) * 9], p_real_t_is_double);
_encode_real(val.origin.y, &buf[sizeof(real_t) * 10], p_real_t_is_double);
_encode_real(val.origin.z, &buf[sizeof(real_t) * 11], p_real_t_is_double);
_encode_real(val.origin.x, &buf[real_t_size * 9], p_real_t_is_double);
_encode_real(val.origin.y, &buf[real_t_size * 10], p_real_t_is_double);
_encode_real(val.origin.z, &buf[real_t_size * 11], p_real_t_is_double);
}

r_len += 12 * sizeof(real_t);
r_len += 12 * real_t_size;

} break;
case Variant::PROJECTION: {
if (buf) {
Projection val = p_variant;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
memcpy(&buf[(i * 4 + j) * sizeof(real_t)], &val.columns[i][j], sizeof(real_t));
_encode_real(val.columns[i][j], &buf[(i * 4 + j) * real_t_size], p_real_t_is_double);
}
}
}

r_len += 16 * sizeof(real_t);
r_len += 16 * real_t_size;

} break;

Expand Down Expand Up @@ -5030,12 +5032,12 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
Vector2 v = data.get(i);

_encode_real(v.x, &buf[0], p_real_t_is_double);
_encode_real(v.y, &buf[sizeof(real_t)], p_real_t_is_double);
buf += sizeof(real_t) * 2;
_encode_real(v.y, &buf[real_t_size], p_real_t_is_double);
buf += real_t_size * 2;
}
}

r_len += sizeof(real_t) * 2 * len;
r_len += real_t_size * 2 * len;

} break;
case Variant::PACKED_VECTOR3_ARRAY: {
Expand All @@ -5054,13 +5056,13 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
Vector3 v = data.get(i);

_encode_real(v.x, &buf[0], p_real_t_is_double);
_encode_real(v.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(v.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
buf += sizeof(real_t) * 3;
_encode_real(v.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(v.z, &buf[real_t_size * 2], p_real_t_is_double);
buf += real_t_size * 3;
}
}

r_len += sizeof(real_t) * 3 * len;
r_len += real_t_size * 3 * len;

} break;
case Variant::PACKED_COLOR_ARRAY: {
Expand Down Expand Up @@ -5105,14 +5107,14 @@ Error VariantDecoderCompat::encode_variant_4(const Variant &p_variant, uint8_t *
Vector4 v = data.get(i);

_encode_real(v.x, &buf[0], p_real_t_is_double);
_encode_real(v.y, &buf[sizeof(real_t)], p_real_t_is_double);
_encode_real(v.z, &buf[sizeof(real_t) * 2], p_real_t_is_double);
_encode_real(v.w, &buf[sizeof(real_t) * 3], p_real_t_is_double);
buf += sizeof(real_t) * 4;
_encode_real(v.y, &buf[real_t_size], p_real_t_is_double);
_encode_real(v.z, &buf[real_t_size * 2], p_real_t_is_double);
_encode_real(v.w, &buf[real_t_size * 3], p_real_t_is_double);
buf += real_t_size * 4;
}
}

r_len += sizeof(real_t) * 4 * len;
r_len += real_t_size * 4 * len;

} break;
default: {
Expand Down
Loading
Loading