@@ -60,51 +60,45 @@ void RemoteTransform2D::_update_remote() {
60
60
return ;
61
61
}
62
62
63
- if (!(update_remote_position || update_remote_rotation || update_remote_scale)) {
63
+ int count = update_remote_position + update_remote_rotation + update_remote_scale;
64
+
65
+ if (count == 0 ) {
64
66
return ; // The transform data of the RemoteTransform2D is not used at all.
65
67
}
66
68
67
69
// todo make faster
68
- if (use_global_coordinates) {
69
- if (update_remote_position && update_remote_rotation && update_remote_scale) {
70
- n->set_global_transform (get_global_transform ());
71
- return ;
72
- }
73
70
74
- Transform2D n_trans = n->get_global_transform ();
75
- Transform2D our_trans = get_global_transform ();
71
+ Transform2D n_trans = use_global_coordinates ? n->get_global_transform () : n-> get_transform ();
72
+ Transform2D our_trans = use_global_coordinates ? get_global_transform () : get_transform ();
76
73
77
- // There are more steps in the operation of set_rotation, so avoid calling it.
78
- Transform2D trans = update_remote_rotation ? our_trans : n_trans;
79
-
80
- if (update_remote_rotation ^ update_remote_position) {
81
- trans.set_origin (update_remote_position ? our_trans.get_origin () : n_trans.get_origin ());
74
+ if (count == 1 ) {
75
+ if (update_remote_position) {
76
+ n_trans.set_origin (our_trans.get_origin ());
77
+ } else if (update_remote_rotation) {
78
+ n_trans.set_rotation (our_trans.get_rotation ());
79
+ } else if (update_remote_scale) {
80
+ n_trans.set_scale (our_trans.get_scale ());
82
81
}
83
- if (update_remote_rotation ^ update_remote_scale) {
84
- trans.set_scale (update_remote_scale ? our_trans.get_scale () : n_trans.get_scale ());
82
+ } else if (count == 2 ) {
83
+ if (update_remote_position) {
84
+ n_trans.set_origin (our_trans.get_origin ());
85
+ if (update_remote_rotation) {
86
+ n_trans.set_rotation (our_trans.get_rotation ());
87
+ } else if (update_remote_scale) {
88
+ n_trans.set_scale (our_trans.get_scale ());
89
+ }
90
+ } else {
91
+ n_trans.set_rotation_and_scale (our_trans.get_rotation (), our_trans.get_scale ());
85
92
}
93
+ } else if (count == 3 ) {
94
+ n_trans.set_origin (our_trans.get_origin ());
95
+ n_trans.set_rotation_and_scale (our_trans.get_rotation (), our_trans.get_scale ());
96
+ }
86
97
87
- n->set_global_transform (trans);
98
+ if (use_global_coordinates) {
99
+ n->set_global_transform (n_trans);
88
100
} else {
89
- if (update_remote_position && update_remote_rotation && update_remote_scale) {
90
- n->set_transform (get_transform ());
91
- return ;
92
- }
93
-
94
- Transform2D n_trans = n->get_transform ();
95
- Transform2D our_trans = get_transform ();
96
-
97
- // There are more steps in the operation of set_rotation, so avoid calling it.
98
- Transform2D trans = update_remote_rotation ? our_trans : n_trans;
99
-
100
- if (update_remote_rotation ^ update_remote_position) {
101
- trans.set_origin (update_remote_position ? our_trans.get_origin () : n_trans.get_origin ());
102
- }
103
- if (update_remote_rotation ^ update_remote_scale) {
104
- trans.set_scale (update_remote_scale ? our_trans.get_scale () : n_trans.get_scale ());
105
- }
106
-
107
- n->set_transform (trans);
101
+ n->set_transform (n_trans);
108
102
}
109
103
}
110
104
0 commit comments