Browse Source

Merge pull request #80289 from lawnjelly/fti_2d_reset_on_enter

[3.x] Physics Interpolation 2D - reset on NOTIFICATION_ENTER_TREE
Rémi Verschelde 2 years ago
parent
commit
95877b8e1f
1 changed files with 13 additions and 0 deletions
  1. 13 0
      scene/2d/canvas_item.cpp

+ 13 - 0
scene/2d/canvas_item.cpp

@@ -583,6 +583,19 @@ void CanvasItem::_notification(int p_what) {
 			if (!block_transform_notify && !xform_change.in_list()) {
 				get_tree()->xform_change_list.add(&xform_change);
 			}
+
+			// If using physics interpolation, reset for this node only,
+			// as a helper, as in most cases, users will want items reset when
+			// adding to the tree.
+			// In cases where they move immediately after adding,
+			// there will be little cost in having two resets as these are cheap,
+			// and it is worth it for convenience.
+			// Do not propagate to children, as each child of an added branch
+			// receives its own NOTIFICATION_ENTER_TREE, and this would
+			// cause unnecessary duplicate resets.
+			if (is_physics_interpolated_and_enabled()) {
+				notification(NOTIFICATION_RESET_PHYSICS_INTERPOLATION);
+			}
 		} break;
 		case NOTIFICATION_MOVED_IN_PARENT: {
 			if (!is_inside_tree()) {