Merge pull request #89170 from jsjtxietian/expose-request-update

Expose PrimitiveMesh's `request_update` method
This commit is contained in:
Rémi Verschelde 2024-03-06 13:17:05 +01:00
commit 362a088088
No known key found for this signature in database
GPG Key ID: C3336907360768E1
3 changed files with 84 additions and 77 deletions

View File

@ -33,6 +33,12 @@
[/codeblocks] [/codeblocks]
</description> </description>
</method> </method>
<method name="request_update">
<return type="void" />
<description>
Request an update of this primitive mesh based on its properties.
</description>
</method>
</methods> </methods>
<members> <members>
<member name="add_uv2" type="bool" setter="set_add_uv2" getter="get_add_uv2" default="false"> <member name="add_uv2" type="bool" setter="set_add_uv2" getter="get_add_uv2" default="false">

View File

@ -129,7 +129,7 @@ void PrimitiveMesh::_update() const {
const_cast<PrimitiveMesh *>(this)->emit_changed(); const_cast<PrimitiveMesh *>(this)->emit_changed();
} }
void PrimitiveMesh::_request_update() { void PrimitiveMesh::request_update() {
if (pending_request) { if (pending_request) {
return; return;
} }
@ -249,6 +249,8 @@ void PrimitiveMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_uv2_padding", "uv2_padding"), &PrimitiveMesh::set_uv2_padding); ClassDB::bind_method(D_METHOD("set_uv2_padding", "uv2_padding"), &PrimitiveMesh::set_uv2_padding);
ClassDB::bind_method(D_METHOD("get_uv2_padding"), &PrimitiveMesh::get_uv2_padding); ClassDB::bind_method(D_METHOD("get_uv2_padding"), &PrimitiveMesh::get_uv2_padding);
ClassDB::bind_method(D_METHOD("request_update"), &PrimitiveMesh::request_update);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "BaseMaterial3D,ShaderMaterial"), "set_material", "get_material"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "material", PROPERTY_HINT_RESOURCE_TYPE, "BaseMaterial3D,ShaderMaterial"), "set_material", "get_material");
ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_custom_aabb", "get_custom_aabb"); ADD_PROPERTY(PropertyInfo(Variant::AABB, "custom_aabb", PROPERTY_HINT_NONE, "suffix:m"), "set_custom_aabb", "get_custom_aabb");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_faces"), "set_flip_faces", "get_flip_faces"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "flip_faces"), "set_flip_faces", "get_flip_faces");
@ -288,7 +290,7 @@ AABB PrimitiveMesh::get_custom_aabb() const {
void PrimitiveMesh::set_flip_faces(bool p_enable) { void PrimitiveMesh::set_flip_faces(bool p_enable) {
flip_faces = p_enable; flip_faces = p_enable;
_request_update(); request_update();
} }
bool PrimitiveMesh::get_flip_faces() const { bool PrimitiveMesh::get_flip_faces() const {
@ -298,13 +300,13 @@ bool PrimitiveMesh::get_flip_faces() const {
void PrimitiveMesh::set_add_uv2(bool p_enable) { void PrimitiveMesh::set_add_uv2(bool p_enable) {
add_uv2 = p_enable; add_uv2 = p_enable;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
void PrimitiveMesh::set_uv2_padding(float p_padding) { void PrimitiveMesh::set_uv2_padding(float p_padding) {
uv2_padding = p_padding; uv2_padding = p_padding;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
Vector2 PrimitiveMesh::get_uv2_scale(Vector2 p_margin_scale) const { Vector2 PrimitiveMesh::get_uv2_scale(Vector2 p_margin_scale) const {
@ -562,7 +564,7 @@ void CapsuleMesh::set_radius(const float p_radius) {
height = radius * 2.0; height = radius * 2.0;
} }
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float CapsuleMesh::get_radius() const { float CapsuleMesh::get_radius() const {
@ -575,7 +577,7 @@ void CapsuleMesh::set_height(const float p_height) {
radius = height * 0.5; radius = height * 0.5;
} }
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float CapsuleMesh::get_height() const { float CapsuleMesh::get_height() const {
@ -584,7 +586,7 @@ float CapsuleMesh::get_height() const {
void CapsuleMesh::set_radial_segments(const int p_segments) { void CapsuleMesh::set_radial_segments(const int p_segments) {
radial_segments = p_segments > 4 ? p_segments : 4; radial_segments = p_segments > 4 ? p_segments : 4;
_request_update(); request_update();
} }
int CapsuleMesh::get_radial_segments() const { int CapsuleMesh::get_radial_segments() const {
@ -594,7 +596,7 @@ int CapsuleMesh::get_radial_segments() const {
void CapsuleMesh::set_rings(const int p_rings) { void CapsuleMesh::set_rings(const int p_rings) {
ERR_FAIL_COND(p_rings < 0); ERR_FAIL_COND(p_rings < 0);
rings = p_rings; rings = p_rings;
_request_update(); request_update();
} }
int CapsuleMesh::get_rings() const { int CapsuleMesh::get_rings() const {
@ -891,7 +893,7 @@ void BoxMesh::_bind_methods() {
void BoxMesh::set_size(const Vector3 &p_size) { void BoxMesh::set_size(const Vector3 &p_size) {
size = p_size; size = p_size;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
Vector3 BoxMesh::get_size() const { Vector3 BoxMesh::get_size() const {
@ -900,7 +902,7 @@ Vector3 BoxMesh::get_size() const {
void BoxMesh::set_subdivide_width(const int p_divisions) { void BoxMesh::set_subdivide_width(const int p_divisions) {
subdivide_w = p_divisions > 0 ? p_divisions : 0; subdivide_w = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int BoxMesh::get_subdivide_width() const { int BoxMesh::get_subdivide_width() const {
@ -909,7 +911,7 @@ int BoxMesh::get_subdivide_width() const {
void BoxMesh::set_subdivide_height(const int p_divisions) { void BoxMesh::set_subdivide_height(const int p_divisions) {
subdivide_h = p_divisions > 0 ? p_divisions : 0; subdivide_h = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int BoxMesh::get_subdivide_height() const { int BoxMesh::get_subdivide_height() const {
@ -918,7 +920,7 @@ int BoxMesh::get_subdivide_height() const {
void BoxMesh::set_subdivide_depth(const int p_divisions) { void BoxMesh::set_subdivide_depth(const int p_divisions) {
subdivide_d = p_divisions > 0 ? p_divisions : 0; subdivide_d = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int BoxMesh::get_subdivide_depth() const { int BoxMesh::get_subdivide_depth() const {
@ -1168,7 +1170,7 @@ void CylinderMesh::_bind_methods() {
void CylinderMesh::set_top_radius(const float p_radius) { void CylinderMesh::set_top_radius(const float p_radius) {
top_radius = p_radius; top_radius = p_radius;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float CylinderMesh::get_top_radius() const { float CylinderMesh::get_top_radius() const {
@ -1178,7 +1180,7 @@ float CylinderMesh::get_top_radius() const {
void CylinderMesh::set_bottom_radius(const float p_radius) { void CylinderMesh::set_bottom_radius(const float p_radius) {
bottom_radius = p_radius; bottom_radius = p_radius;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float CylinderMesh::get_bottom_radius() const { float CylinderMesh::get_bottom_radius() const {
@ -1188,7 +1190,7 @@ float CylinderMesh::get_bottom_radius() const {
void CylinderMesh::set_height(const float p_height) { void CylinderMesh::set_height(const float p_height) {
height = p_height; height = p_height;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float CylinderMesh::get_height() const { float CylinderMesh::get_height() const {
@ -1197,7 +1199,7 @@ float CylinderMesh::get_height() const {
void CylinderMesh::set_radial_segments(const int p_segments) { void CylinderMesh::set_radial_segments(const int p_segments) {
radial_segments = p_segments > 4 ? p_segments : 4; radial_segments = p_segments > 4 ? p_segments : 4;
_request_update(); request_update();
} }
int CylinderMesh::get_radial_segments() const { int CylinderMesh::get_radial_segments() const {
@ -1207,7 +1209,7 @@ int CylinderMesh::get_radial_segments() const {
void CylinderMesh::set_rings(const int p_rings) { void CylinderMesh::set_rings(const int p_rings) {
ERR_FAIL_COND(p_rings < 0); ERR_FAIL_COND(p_rings < 0);
rings = p_rings; rings = p_rings;
_request_update(); request_update();
} }
int CylinderMesh::get_rings() const { int CylinderMesh::get_rings() const {
@ -1216,7 +1218,7 @@ int CylinderMesh::get_rings() const {
void CylinderMesh::set_cap_top(bool p_cap_top) { void CylinderMesh::set_cap_top(bool p_cap_top) {
cap_top = p_cap_top; cap_top = p_cap_top;
_request_update(); request_update();
} }
bool CylinderMesh::is_cap_top() const { bool CylinderMesh::is_cap_top() const {
@ -1225,7 +1227,7 @@ bool CylinderMesh::is_cap_top() const {
void CylinderMesh::set_cap_bottom(bool p_cap_bottom) { void CylinderMesh::set_cap_bottom(bool p_cap_bottom) {
cap_bottom = p_cap_bottom; cap_bottom = p_cap_bottom;
_request_update(); request_update();
} }
bool CylinderMesh::is_cap_bottom() const { bool CylinderMesh::is_cap_bottom() const {
@ -1361,7 +1363,7 @@ void PlaneMesh::_bind_methods() {
void PlaneMesh::set_size(const Size2 &p_size) { void PlaneMesh::set_size(const Size2 &p_size) {
size = p_size; size = p_size;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
Size2 PlaneMesh::get_size() const { Size2 PlaneMesh::get_size() const {
@ -1370,7 +1372,7 @@ Size2 PlaneMesh::get_size() const {
void PlaneMesh::set_subdivide_width(const int p_divisions) { void PlaneMesh::set_subdivide_width(const int p_divisions) {
subdivide_w = p_divisions > 0 ? p_divisions : 0; subdivide_w = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int PlaneMesh::get_subdivide_width() const { int PlaneMesh::get_subdivide_width() const {
@ -1379,7 +1381,7 @@ int PlaneMesh::get_subdivide_width() const {
void PlaneMesh::set_subdivide_depth(const int p_divisions) { void PlaneMesh::set_subdivide_depth(const int p_divisions) {
subdivide_d = p_divisions > 0 ? p_divisions : 0; subdivide_d = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int PlaneMesh::get_subdivide_depth() const { int PlaneMesh::get_subdivide_depth() const {
@ -1388,7 +1390,7 @@ int PlaneMesh::get_subdivide_depth() const {
void PlaneMesh::set_center_offset(const Vector3 p_offset) { void PlaneMesh::set_center_offset(const Vector3 p_offset) {
center_offset = p_offset; center_offset = p_offset;
_request_update(); request_update();
} }
Vector3 PlaneMesh::get_center_offset() const { Vector3 PlaneMesh::get_center_offset() const {
@ -1397,7 +1399,7 @@ Vector3 PlaneMesh::get_center_offset() const {
void PlaneMesh::set_orientation(const Orientation p_orientation) { void PlaneMesh::set_orientation(const Orientation p_orientation) {
orientation = p_orientation; orientation = p_orientation;
_request_update(); request_update();
} }
PlaneMesh::Orientation PlaneMesh::get_orientation() const { PlaneMesh::Orientation PlaneMesh::get_orientation() const {
@ -1706,7 +1708,7 @@ void PrismMesh::_bind_methods() {
void PrismMesh::set_left_to_right(const float p_left_to_right) { void PrismMesh::set_left_to_right(const float p_left_to_right) {
left_to_right = p_left_to_right; left_to_right = p_left_to_right;
_request_update(); request_update();
} }
float PrismMesh::get_left_to_right() const { float PrismMesh::get_left_to_right() const {
@ -1716,7 +1718,7 @@ float PrismMesh::get_left_to_right() const {
void PrismMesh::set_size(const Vector3 &p_size) { void PrismMesh::set_size(const Vector3 &p_size) {
size = p_size; size = p_size;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
Vector3 PrismMesh::get_size() const { Vector3 PrismMesh::get_size() const {
@ -1725,7 +1727,7 @@ Vector3 PrismMesh::get_size() const {
void PrismMesh::set_subdivide_width(const int p_divisions) { void PrismMesh::set_subdivide_width(const int p_divisions) {
subdivide_w = p_divisions > 0 ? p_divisions : 0; subdivide_w = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int PrismMesh::get_subdivide_width() const { int PrismMesh::get_subdivide_width() const {
@ -1734,7 +1736,7 @@ int PrismMesh::get_subdivide_width() const {
void PrismMesh::set_subdivide_height(const int p_divisions) { void PrismMesh::set_subdivide_height(const int p_divisions) {
subdivide_h = p_divisions > 0 ? p_divisions : 0; subdivide_h = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int PrismMesh::get_subdivide_height() const { int PrismMesh::get_subdivide_height() const {
@ -1743,7 +1745,7 @@ int PrismMesh::get_subdivide_height() const {
void PrismMesh::set_subdivide_depth(const int p_divisions) { void PrismMesh::set_subdivide_depth(const int p_divisions) {
subdivide_d = p_divisions > 0 ? p_divisions : 0; subdivide_d = p_divisions > 0 ? p_divisions : 0;
_request_update(); request_update();
} }
int PrismMesh::get_subdivide_depth() const { int PrismMesh::get_subdivide_depth() const {
@ -1892,7 +1894,7 @@ void SphereMesh::_bind_methods() {
void SphereMesh::set_radius(const float p_radius) { void SphereMesh::set_radius(const float p_radius) {
radius = p_radius; radius = p_radius;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float SphereMesh::get_radius() const { float SphereMesh::get_radius() const {
@ -1902,7 +1904,7 @@ float SphereMesh::get_radius() const {
void SphereMesh::set_height(const float p_height) { void SphereMesh::set_height(const float p_height) {
height = p_height; height = p_height;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
float SphereMesh::get_height() const { float SphereMesh::get_height() const {
@ -1911,7 +1913,7 @@ float SphereMesh::get_height() const {
void SphereMesh::set_radial_segments(const int p_radial_segments) { void SphereMesh::set_radial_segments(const int p_radial_segments) {
radial_segments = p_radial_segments > 4 ? p_radial_segments : 4; radial_segments = p_radial_segments > 4 ? p_radial_segments : 4;
_request_update(); request_update();
} }
int SphereMesh::get_radial_segments() const { int SphereMesh::get_radial_segments() const {
@ -1921,7 +1923,7 @@ int SphereMesh::get_radial_segments() const {
void SphereMesh::set_rings(const int p_rings) { void SphereMesh::set_rings(const int p_rings) {
ERR_FAIL_COND(p_rings < 1); ERR_FAIL_COND(p_rings < 1);
rings = p_rings; rings = p_rings;
_request_update(); request_update();
} }
int SphereMesh::get_rings() const { int SphereMesh::get_rings() const {
@ -1931,7 +1933,7 @@ int SphereMesh::get_rings() const {
void SphereMesh::set_is_hemisphere(const bool p_is_hemisphere) { void SphereMesh::set_is_hemisphere(const bool p_is_hemisphere) {
is_hemisphere = p_is_hemisphere; is_hemisphere = p_is_hemisphere;
_update_lightmap_size(); _update_lightmap_size();
_request_update(); request_update();
} }
bool SphereMesh::get_is_hemisphere() const { bool SphereMesh::get_is_hemisphere() const {
@ -2077,7 +2079,7 @@ void TorusMesh::_bind_methods() {
void TorusMesh::set_inner_radius(const float p_inner_radius) { void TorusMesh::set_inner_radius(const float p_inner_radius) {
inner_radius = p_inner_radius; inner_radius = p_inner_radius;
_request_update(); request_update();
} }
float TorusMesh::get_inner_radius() const { float TorusMesh::get_inner_radius() const {
@ -2086,7 +2088,7 @@ float TorusMesh::get_inner_radius() const {
void TorusMesh::set_outer_radius(const float p_outer_radius) { void TorusMesh::set_outer_radius(const float p_outer_radius) {
outer_radius = p_outer_radius; outer_radius = p_outer_radius;
_request_update(); request_update();
} }
float TorusMesh::get_outer_radius() const { float TorusMesh::get_outer_radius() const {
@ -2096,7 +2098,7 @@ float TorusMesh::get_outer_radius() const {
void TorusMesh::set_rings(const int p_rings) { void TorusMesh::set_rings(const int p_rings) {
ERR_FAIL_COND(p_rings < 3); ERR_FAIL_COND(p_rings < 3);
rings = p_rings; rings = p_rings;
_request_update(); request_update();
} }
int TorusMesh::get_rings() const { int TorusMesh::get_rings() const {
@ -2106,7 +2108,7 @@ int TorusMesh::get_rings() const {
void TorusMesh::set_ring_segments(const int p_ring_segments) { void TorusMesh::set_ring_segments(const int p_ring_segments) {
ERR_FAIL_COND(p_ring_segments < 3); ERR_FAIL_COND(p_ring_segments < 3);
ring_segments = p_ring_segments; ring_segments = p_ring_segments;
_request_update(); request_update();
} }
int TorusMesh::get_ring_segments() const { int TorusMesh::get_ring_segments() const {
@ -2134,7 +2136,7 @@ PointMesh::PointMesh() {
void TubeTrailMesh::set_radius(const float p_radius) { void TubeTrailMesh::set_radius(const float p_radius) {
radius = p_radius; radius = p_radius;
_request_update(); request_update();
} }
float TubeTrailMesh::get_radius() const { float TubeTrailMesh::get_radius() const {
return radius; return radius;
@ -2143,7 +2145,7 @@ float TubeTrailMesh::get_radius() const {
void TubeTrailMesh::set_radial_steps(const int p_radial_steps) { void TubeTrailMesh::set_radial_steps(const int p_radial_steps) {
ERR_FAIL_COND(p_radial_steps < 3 || p_radial_steps > 128); ERR_FAIL_COND(p_radial_steps < 3 || p_radial_steps > 128);
radial_steps = p_radial_steps; radial_steps = p_radial_steps;
_request_update(); request_update();
} }
int TubeTrailMesh::get_radial_steps() const { int TubeTrailMesh::get_radial_steps() const {
return radial_steps; return radial_steps;
@ -2152,7 +2154,7 @@ int TubeTrailMesh::get_radial_steps() const {
void TubeTrailMesh::set_sections(const int p_sections) { void TubeTrailMesh::set_sections(const int p_sections) {
ERR_FAIL_COND(p_sections < 2 || p_sections > 128); ERR_FAIL_COND(p_sections < 2 || p_sections > 128);
sections = p_sections; sections = p_sections;
_request_update(); request_update();
} }
int TubeTrailMesh::get_sections() const { int TubeTrailMesh::get_sections() const {
return sections; return sections;
@ -2160,7 +2162,7 @@ int TubeTrailMesh::get_sections() const {
void TubeTrailMesh::set_section_length(float p_section_length) { void TubeTrailMesh::set_section_length(float p_section_length) {
section_length = p_section_length; section_length = p_section_length;
_request_update(); request_update();
} }
float TubeTrailMesh::get_section_length() const { float TubeTrailMesh::get_section_length() const {
return section_length; return section_length;
@ -2169,7 +2171,7 @@ float TubeTrailMesh::get_section_length() const {
void TubeTrailMesh::set_section_rings(const int p_section_rings) { void TubeTrailMesh::set_section_rings(const int p_section_rings) {
ERR_FAIL_COND(p_section_rings < 1 || p_section_rings > 1024); ERR_FAIL_COND(p_section_rings < 1 || p_section_rings > 1024);
section_rings = p_section_rings; section_rings = p_section_rings;
_request_update(); request_update();
} }
int TubeTrailMesh::get_section_rings() const { int TubeTrailMesh::get_section_rings() const {
return section_rings; return section_rings;
@ -2177,7 +2179,7 @@ int TubeTrailMesh::get_section_rings() const {
void TubeTrailMesh::set_cap_top(bool p_cap_top) { void TubeTrailMesh::set_cap_top(bool p_cap_top) {
cap_top = p_cap_top; cap_top = p_cap_top;
_request_update(); request_update();
} }
bool TubeTrailMesh::is_cap_top() const { bool TubeTrailMesh::is_cap_top() const {
@ -2186,7 +2188,7 @@ bool TubeTrailMesh::is_cap_top() const {
void TubeTrailMesh::set_cap_bottom(bool p_cap_bottom) { void TubeTrailMesh::set_cap_bottom(bool p_cap_bottom) {
cap_bottom = p_cap_bottom; cap_bottom = p_cap_bottom;
_request_update(); request_update();
} }
bool TubeTrailMesh::is_cap_bottom() const { bool TubeTrailMesh::is_cap_bottom() const {
@ -2204,14 +2206,14 @@ void TubeTrailMesh::set_curve(const Ref<Curve> &p_curve) {
if (curve.is_valid()) { if (curve.is_valid()) {
curve->connect_changed(callable_mp(this, &TubeTrailMesh::_curve_changed)); curve->connect_changed(callable_mp(this, &TubeTrailMesh::_curve_changed));
} }
_request_update(); request_update();
} }
Ref<Curve> TubeTrailMesh::get_curve() const { Ref<Curve> TubeTrailMesh::get_curve() const {
return curve; return curve;
} }
void TubeTrailMesh::_curve_changed() { void TubeTrailMesh::_curve_changed() {
_request_update(); request_update();
} }
int TubeTrailMesh::get_builtin_bind_pose_count() const { int TubeTrailMesh::get_builtin_bind_pose_count() const {
return sections + 1; return sections + 1;
@ -2492,7 +2494,7 @@ TubeTrailMesh::TubeTrailMesh() {
void RibbonTrailMesh::set_shape(Shape p_shape) { void RibbonTrailMesh::set_shape(Shape p_shape) {
shape = p_shape; shape = p_shape;
_request_update(); request_update();
} }
RibbonTrailMesh::Shape RibbonTrailMesh::get_shape() const { RibbonTrailMesh::Shape RibbonTrailMesh::get_shape() const {
return shape; return shape;
@ -2500,7 +2502,7 @@ RibbonTrailMesh::Shape RibbonTrailMesh::get_shape() const {
void RibbonTrailMesh::set_size(const float p_size) { void RibbonTrailMesh::set_size(const float p_size) {
size = p_size; size = p_size;
_request_update(); request_update();
} }
float RibbonTrailMesh::get_size() const { float RibbonTrailMesh::get_size() const {
return size; return size;
@ -2509,7 +2511,7 @@ float RibbonTrailMesh::get_size() const {
void RibbonTrailMesh::set_sections(const int p_sections) { void RibbonTrailMesh::set_sections(const int p_sections) {
ERR_FAIL_COND(p_sections < 2 || p_sections > 128); ERR_FAIL_COND(p_sections < 2 || p_sections > 128);
sections = p_sections; sections = p_sections;
_request_update(); request_update();
} }
int RibbonTrailMesh::get_sections() const { int RibbonTrailMesh::get_sections() const {
return sections; return sections;
@ -2517,7 +2519,7 @@ int RibbonTrailMesh::get_sections() const {
void RibbonTrailMesh::set_section_length(float p_section_length) { void RibbonTrailMesh::set_section_length(float p_section_length) {
section_length = p_section_length; section_length = p_section_length;
_request_update(); request_update();
} }
float RibbonTrailMesh::get_section_length() const { float RibbonTrailMesh::get_section_length() const {
return section_length; return section_length;
@ -2526,7 +2528,7 @@ float RibbonTrailMesh::get_section_length() const {
void RibbonTrailMesh::set_section_segments(const int p_section_segments) { void RibbonTrailMesh::set_section_segments(const int p_section_segments) {
ERR_FAIL_COND(p_section_segments < 1 || p_section_segments > 1024); ERR_FAIL_COND(p_section_segments < 1 || p_section_segments > 1024);
section_segments = p_section_segments; section_segments = p_section_segments;
_request_update(); request_update();
} }
int RibbonTrailMesh::get_section_segments() const { int RibbonTrailMesh::get_section_segments() const {
return section_segments; return section_segments;
@ -2543,14 +2545,14 @@ void RibbonTrailMesh::set_curve(const Ref<Curve> &p_curve) {
if (curve.is_valid()) { if (curve.is_valid()) {
curve->connect_changed(callable_mp(this, &RibbonTrailMesh::_curve_changed)); curve->connect_changed(callable_mp(this, &RibbonTrailMesh::_curve_changed));
} }
_request_update(); request_update();
} }
Ref<Curve> RibbonTrailMesh::get_curve() const { Ref<Curve> RibbonTrailMesh::get_curve() const {
return curve; return curve;
} }
void RibbonTrailMesh::_curve_changed() { void RibbonTrailMesh::_curve_changed() {
_request_update(); request_update();
} }
int RibbonTrailMesh::get_builtin_bind_pose_count() const { int RibbonTrailMesh::get_builtin_bind_pose_count() const {
return sections + 1; return sections + 1;
@ -3340,8 +3342,6 @@ void TextMesh::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_uppercase", "enable"), &TextMesh::set_uppercase); ClassDB::bind_method(D_METHOD("set_uppercase", "enable"), &TextMesh::set_uppercase);
ClassDB::bind_method(D_METHOD("is_uppercase"), &TextMesh::is_uppercase); ClassDB::bind_method(D_METHOD("is_uppercase"), &TextMesh::is_uppercase);
ClassDB::bind_method(D_METHOD("_request_update"), &TextMesh::_request_update);
ADD_GROUP("Text", ""); ADD_GROUP("Text", "");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT, ""), "set_text", "get_text"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "text", PROPERTY_HINT_MULTILINE_TEXT, ""), "set_text", "get_text");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_font", "get_font"); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_font", "get_font");
@ -3376,7 +3376,7 @@ void TextMesh::_notification(int p_what) {
} }
xl_text = new_text; xl_text = new_text;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} break; } break;
} }
} }
@ -3402,7 +3402,7 @@ void TextMesh::set_horizontal_alignment(HorizontalAlignment p_alignment) {
dirty_lines = true; dirty_lines = true;
} }
horizontal_alignment = p_alignment; horizontal_alignment = p_alignment;
_request_update(); request_update();
} }
} }
@ -3414,7 +3414,7 @@ void TextMesh::set_vertical_alignment(VerticalAlignment p_alignment) {
ERR_FAIL_INDEX((int)p_alignment, 4); ERR_FAIL_INDEX((int)p_alignment, 4);
if (vertical_alignment != p_alignment) { if (vertical_alignment != p_alignment) {
vertical_alignment = p_alignment; vertical_alignment = p_alignment;
_request_update(); request_update();
} }
} }
@ -3427,7 +3427,7 @@ void TextMesh::set_text(const String &p_string) {
text = p_string; text = p_string;
xl_text = tr(text); xl_text = tr(text);
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }
@ -3438,7 +3438,7 @@ String TextMesh::get_text() const {
void TextMesh::_font_changed() { void TextMesh::_font_changed() {
dirty_font = true; dirty_font = true;
dirty_cache = true; dirty_cache = true;
call_deferred(SNAME("_request_update")); callable_mp(static_cast<PrimitiveMesh *>(this), &PrimitiveMesh::request_update).call_deferred();
} }
void TextMesh::set_font(const Ref<Font> &p_font) { void TextMesh::set_font(const Ref<Font> &p_font) {
@ -3454,7 +3454,7 @@ void TextMesh::set_font(const Ref<Font> &p_font) {
if (font_override.is_valid()) { if (font_override.is_valid()) {
font_override->connect_changed(font_changed); font_override->connect_changed(font_changed);
} }
_request_update(); request_update();
} }
} }
@ -3492,7 +3492,7 @@ void TextMesh::set_font_size(int p_size) {
font_size = CLAMP(p_size, 1, 127); font_size = CLAMP(p_size, 1, 127);
dirty_font = true; dirty_font = true;
dirty_cache = true; dirty_cache = true;
_request_update(); request_update();
} }
} }
@ -3503,7 +3503,7 @@ int TextMesh::get_font_size() const {
void TextMesh::set_line_spacing(float p_line_spacing) { void TextMesh::set_line_spacing(float p_line_spacing) {
if (line_spacing != p_line_spacing) { if (line_spacing != p_line_spacing) {
line_spacing = p_line_spacing; line_spacing = p_line_spacing;
_request_update(); request_update();
} }
} }
@ -3515,7 +3515,7 @@ void TextMesh::set_autowrap_mode(TextServer::AutowrapMode p_mode) {
if (autowrap_mode != p_mode) { if (autowrap_mode != p_mode) {
autowrap_mode = p_mode; autowrap_mode = p_mode;
dirty_lines = true; dirty_lines = true;
_request_update(); request_update();
} }
} }
@ -3527,7 +3527,7 @@ void TextMesh::set_justification_flags(BitField<TextServer::JustificationFlag> p
if (jst_flags != p_flags) { if (jst_flags != p_flags) {
jst_flags = p_flags; jst_flags = p_flags;
dirty_lines = true; dirty_lines = true;
_request_update(); request_update();
} }
} }
@ -3538,7 +3538,7 @@ BitField<TextServer::JustificationFlag> TextMesh::get_justification_flags() cons
void TextMesh::set_depth(real_t p_depth) { void TextMesh::set_depth(real_t p_depth) {
if (depth != p_depth) { if (depth != p_depth) {
depth = MAX(p_depth, 0.0); depth = MAX(p_depth, 0.0);
_request_update(); request_update();
} }
} }
@ -3550,7 +3550,7 @@ void TextMesh::set_width(real_t p_width) {
if (width != p_width) { if (width != p_width) {
width = p_width; width = p_width;
dirty_lines = true; dirty_lines = true;
_request_update(); request_update();
} }
} }
@ -3562,7 +3562,7 @@ void TextMesh::set_pixel_size(real_t p_amount) {
if (pixel_size != p_amount) { if (pixel_size != p_amount) {
pixel_size = CLAMP(p_amount, 0.0001, 128.0); pixel_size = CLAMP(p_amount, 0.0001, 128.0);
dirty_cache = true; dirty_cache = true;
_request_update(); request_update();
} }
} }
@ -3573,7 +3573,7 @@ real_t TextMesh::get_pixel_size() const {
void TextMesh::set_offset(const Point2 &p_offset) { void TextMesh::set_offset(const Point2 &p_offset) {
if (lbl_offset != p_offset) { if (lbl_offset != p_offset) {
lbl_offset = p_offset; lbl_offset = p_offset;
_request_update(); request_update();
} }
} }
@ -3585,7 +3585,7 @@ void TextMesh::set_curve_step(real_t p_step) {
if (curve_step != p_step) { if (curve_step != p_step) {
curve_step = CLAMP(p_step, 0.1, 10.0); curve_step = CLAMP(p_step, 0.1, 10.0);
dirty_cache = true; dirty_cache = true;
_request_update(); request_update();
} }
} }
@ -3598,7 +3598,7 @@ void TextMesh::set_text_direction(TextServer::Direction p_text_direction) {
if (text_direction != p_text_direction) { if (text_direction != p_text_direction) {
text_direction = p_text_direction; text_direction = p_text_direction;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }
@ -3610,7 +3610,7 @@ void TextMesh::set_language(const String &p_language) {
if (language != p_language) { if (language != p_language) {
language = p_language; language = p_language;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }
@ -3622,7 +3622,7 @@ void TextMesh::set_structured_text_bidi_override(TextServer::StructuredTextParse
if (st_parser != p_parser) { if (st_parser != p_parser) {
st_parser = p_parser; st_parser = p_parser;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }
@ -3634,7 +3634,7 @@ void TextMesh::set_structured_text_bidi_override_options(Array p_args) {
if (st_args != p_args) { if (st_args != p_args) {
st_args = p_args; st_args = p_args;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }
@ -3646,7 +3646,7 @@ void TextMesh::set_uppercase(bool p_uppercase) {
if (uppercase != p_uppercase) { if (uppercase != p_uppercase) {
uppercase = p_uppercase; uppercase = p_uppercase;
dirty_text = true; dirty_text = true;
_request_update(); request_update();
} }
} }

View File

@ -70,7 +70,6 @@ protected:
static void _bind_methods(); static void _bind_methods();
virtual void _create_mesh_array(Array &p_arr) const {} virtual void _create_mesh_array(Array &p_arr) const {}
void _request_update();
GDVIRTUAL0RC(Array, _create_mesh_array) GDVIRTUAL0RC(Array, _create_mesh_array)
Vector2 get_uv2_scale(Vector2 p_margin_scale = Vector2(1.0, 1.0)) const; Vector2 get_uv2_scale(Vector2 p_margin_scale = Vector2(1.0, 1.0)) const;
@ -111,6 +110,8 @@ public:
void set_uv2_padding(float p_padding); void set_uv2_padding(float p_padding);
float get_uv2_padding() const { return uv2_padding; } float get_uv2_padding() const { return uv2_padding; }
void request_update();
PrimitiveMesh(); PrimitiveMesh();
~PrimitiveMesh(); ~PrimitiveMesh();
}; };