Fix overwriting of Spatial's local transform

Modifies when 'DIRTY_LOCAL' flag is set to prevent a transform applied
using `set_transform` to be overwritten by previous calls to change the
node's rotation, translation or scale.

Fixes #43130.
This commit is contained in:
Maganty Rushyendra 2020-12-30 11:19:12 +08:00 committed by Rémi Verschelde
parent df39eacec2
commit 7958ceaab8
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 1 additions and 0 deletions

View File

@ -274,6 +274,7 @@ void Spatial::set_global_rotation(const Vector3 &p_euler_rad) {
void Spatial::set_transform(const Transform &p_transform) { void Spatial::set_transform(const Transform &p_transform) {
data.local_transform = p_transform; data.local_transform = p_transform;
data.dirty |= DIRTY_VECTORS; data.dirty |= DIRTY_VECTORS;
data.dirty &= ~DIRTY_LOCAL;
_change_notify("translation"); _change_notify("translation");
_change_notify("rotation"); _change_notify("rotation");
_change_notify("rotation_degrees"); _change_notify("rotation_degrees");