Merge pull request #83323 from Rindbee/fix-not-update-remote-local-transform-in-2d

Fix cannot update remote after disabling `use_global_coordinates` in `RemoteTransform2D`
This commit is contained in:
Rémi Verschelde 2023-10-16 13:00:12 +02:00
commit 75b4fd84e3
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 46 additions and 2 deletions

View File

@ -114,6 +114,7 @@ void RemoteTransform2D::_notification(int p_what) {
_update_cache(); _update_cache();
} break; } break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED:
case NOTIFICATION_TRANSFORM_CHANGED: { case NOTIFICATION_TRANSFORM_CHANGED: {
if (!is_inside_tree()) { if (!is_inside_tree()) {
break; break;
@ -127,6 +128,10 @@ void RemoteTransform2D::_notification(int p_what) {
} }
void RemoteTransform2D::set_remote_node(const NodePath &p_remote_node) { void RemoteTransform2D::set_remote_node(const NodePath &p_remote_node) {
if (remote_node == p_remote_node) {
return;
}
remote_node = p_remote_node; remote_node = p_remote_node;
if (is_inside_tree()) { if (is_inside_tree()) {
_update_cache(); _update_cache();
@ -141,7 +146,13 @@ NodePath RemoteTransform2D::get_remote_node() const {
} }
void RemoteTransform2D::set_use_global_coordinates(const bool p_enable) { void RemoteTransform2D::set_use_global_coordinates(const bool p_enable) {
if (use_global_coordinates == p_enable) {
return;
}
use_global_coordinates = p_enable; use_global_coordinates = p_enable;
set_notify_transform(use_global_coordinates);
set_notify_local_transform(!use_global_coordinates);
_update_remote(); _update_remote();
} }
@ -150,6 +161,9 @@ bool RemoteTransform2D::get_use_global_coordinates() const {
} }
void RemoteTransform2D::set_update_position(const bool p_update) { void RemoteTransform2D::set_update_position(const bool p_update) {
if (update_remote_position == p_update) {
return;
}
update_remote_position = p_update; update_remote_position = p_update;
_update_remote(); _update_remote();
} }
@ -159,6 +173,9 @@ bool RemoteTransform2D::get_update_position() const {
} }
void RemoteTransform2D::set_update_rotation(const bool p_update) { void RemoteTransform2D::set_update_rotation(const bool p_update) {
if (update_remote_rotation == p_update) {
return;
}
update_remote_rotation = p_update; update_remote_rotation = p_update;
_update_remote(); _update_remote();
} }
@ -168,6 +185,9 @@ bool RemoteTransform2D::get_update_rotation() const {
} }
void RemoteTransform2D::set_update_scale(const bool p_update) { void RemoteTransform2D::set_update_scale(const bool p_update) {
if (update_remote_scale == p_update) {
return;
}
update_remote_scale = p_update; update_remote_scale = p_update;
_update_remote(); _update_remote();
} }
@ -215,6 +235,7 @@ void RemoteTransform2D::_bind_methods() {
} }
RemoteTransform2D::RemoteTransform2D() { RemoteTransform2D::RemoteTransform2D() {
set_notify_transform(true); set_notify_transform(use_global_coordinates);
set_notify_local_transform(!use_global_coordinates);
set_hide_clip_children(true); set_hide_clip_children(true);
} }

View File

@ -113,6 +113,7 @@ void RemoteTransform3D::_notification(int p_what) {
_update_cache(); _update_cache();
} break; } break;
case NOTIFICATION_LOCAL_TRANSFORM_CHANGED:
case NOTIFICATION_TRANSFORM_CHANGED: { case NOTIFICATION_TRANSFORM_CHANGED: {
if (!is_inside_tree()) { if (!is_inside_tree()) {
break; break;
@ -126,6 +127,10 @@ void RemoteTransform3D::_notification(int p_what) {
} }
void RemoteTransform3D::set_remote_node(const NodePath &p_remote_node) { void RemoteTransform3D::set_remote_node(const NodePath &p_remote_node) {
if (remote_node == p_remote_node) {
return;
}
remote_node = p_remote_node; remote_node = p_remote_node;
if (is_inside_tree()) { if (is_inside_tree()) {
_update_cache(); _update_cache();
@ -140,7 +145,15 @@ NodePath RemoteTransform3D::get_remote_node() const {
} }
void RemoteTransform3D::set_use_global_coordinates(const bool p_enable) { void RemoteTransform3D::set_use_global_coordinates(const bool p_enable) {
if (use_global_coordinates == p_enable) {
return;
}
use_global_coordinates = p_enable; use_global_coordinates = p_enable;
set_notify_transform(use_global_coordinates);
set_notify_local_transform(!use_global_coordinates);
_update_remote();
} }
bool RemoteTransform3D::get_use_global_coordinates() const { bool RemoteTransform3D::get_use_global_coordinates() const {
@ -148,6 +161,9 @@ bool RemoteTransform3D::get_use_global_coordinates() const {
} }
void RemoteTransform3D::set_update_position(const bool p_update) { void RemoteTransform3D::set_update_position(const bool p_update) {
if (update_remote_position == p_update) {
return;
}
update_remote_position = p_update; update_remote_position = p_update;
_update_remote(); _update_remote();
} }
@ -157,6 +173,9 @@ bool RemoteTransform3D::get_update_position() const {
} }
void RemoteTransform3D::set_update_rotation(const bool p_update) { void RemoteTransform3D::set_update_rotation(const bool p_update) {
if (update_remote_rotation == p_update) {
return;
}
update_remote_rotation = p_update; update_remote_rotation = p_update;
_update_remote(); _update_remote();
} }
@ -166,6 +185,9 @@ bool RemoteTransform3D::get_update_rotation() const {
} }
void RemoteTransform3D::set_update_scale(const bool p_update) { void RemoteTransform3D::set_update_scale(const bool p_update) {
if (update_remote_scale == p_update) {
return;
}
update_remote_scale = p_update; update_remote_scale = p_update;
_update_remote(); _update_remote();
} }
@ -213,5 +235,6 @@ void RemoteTransform3D::_bind_methods() {
} }
RemoteTransform3D::RemoteTransform3D() { RemoteTransform3D::RemoteTransform3D() {
set_notify_transform(true); set_notify_transform(use_global_coordinates);
set_notify_local_transform(!use_global_coordinates);
} }