Browse Source

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.
Maganty Rushyendra 4 years ago
parent
commit
7958ceaab8
1 changed files with 1 additions and 0 deletions
  1. 1 0
      scene/3d/spatial.cpp

+ 1 - 0
scene/3d/spatial.cpp

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