summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-05 09:56:09 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-05 09:56:09 +0100
commit257f1f65960a79e283a80873a0cf14d11bd743fa (patch)
tree85e57332bb59df12e5a3517bdf07e11fec40ff1e
parenta52e575652c16a4c856a0065f0d9c7b5f9a84cde (diff)
parente866ab4a72937eb05bc4246f06551089abd5a3ab (diff)
downloadredot-engine-257f1f65960a79e283a80873a0cf14d11bd743fa.tar.gz
Merge pull request #89145 from bruvzg/lbl3d_aabb
[Label3D] Calculate AABB from the full text rect instead of individual glyphs.
-rw-r--r--scene/3d/label_3d.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/scene/3d/label_3d.cpp b/scene/3d/label_3d.cpp
index 718ddd4982..02f40713bf 100644
--- a/scene/3d/label_3d.cpp
+++ b/scene/3d/label_3d.cpp
@@ -422,12 +422,6 @@ void Label3D::_generate_glyph_surfaces(const Glyph &p_glyph, Vector2 &r_offset,
s.mesh_tangents.write[(s.offset * 16) + (i * 4) + 3] = 1.0;
s.mesh_colors.write[(s.offset * 4) + i] = p_modulate;
s.mesh_uvs.write[(s.offset * 4) + i] = Vector2();
-
- if (aabb == AABB()) {
- aabb.position = s.mesh_vertices[(s.offset * 4) + i];
- } else {
- aabb.expand_to(s.mesh_vertices[(s.offset * 4) + i]);
- }
}
if (tex.is_valid()) {
@@ -598,6 +592,13 @@ void Label3D::_shape() {
} break;
}
offset.x += lbl_offset.x * pixel_size;
+ if (aabb == AABB()) {
+ aabb.position = Vector3(offset.x, offset.y, 0);
+ aabb.expand_to(Vector3(offset.x + line_width, offset.y - (TS->shaped_text_get_size(lines_rid[i]).y + line_spacing) * pixel_size, 0));
+ } else {
+ aabb.expand_to(Vector3(offset.x, offset.y, 0));
+ aabb.expand_to(Vector3(offset.x + line_width, offset.y - (TS->shaped_text_get_size(lines_rid[i]).y + line_spacing) * pixel_size, 0));
+ }
offset.y -= TS->shaped_text_get_ascent(lines_rid[i]) * pixel_size;
if (outline_modulate.a != 0.0 && outline_size > 0) {