2
0
Эх сурвалжийг харах

Joint2D and Joint: update joint on NOTIFICATION_POST_ENTER_TREE

This allows reparenting, etc.
Ricardo Buring 3 жил өмнө
parent
commit
f197e5eebb

+ 5 - 2
scene/2d/joints_2d.cpp

@@ -168,14 +168,17 @@ NodePath Joint2D::get_node_b() const {
 
 void Joint2D::_notification(int p_what) {
 	switch (p_what) {
-		case NOTIFICATION_READY: {
+		case NOTIFICATION_POST_ENTER_TREE: {
+			if (joint.is_valid()) {
+				_disconnect_signals();
+			}
 			_update_joint();
 		} break;
 		case NOTIFICATION_EXIT_TREE: {
 			if (joint.is_valid()) {
 				_disconnect_signals();
-				_update_joint(true);
 			}
+			_update_joint(true);
 		} break;
 	}
 }

+ 5 - 2
scene/3d/physics_joint.cpp

@@ -178,14 +178,17 @@ int Joint::get_solver_priority() const {
 
 void Joint::_notification(int p_what) {
 	switch (p_what) {
-		case NOTIFICATION_READY: {
+		case NOTIFICATION_POST_ENTER_TREE: {
+			if (joint.is_valid()) {
+				_disconnect_signals();
+			}
 			_update_joint();
 		} break;
 		case NOTIFICATION_EXIT_TREE: {
 			if (joint.is_valid()) {
 				_disconnect_signals();
-				_update_joint(true);
 			}
+			_update_joint(true);
 		} break;
 	}
 }