Repository: godot
Issue: SoftBody Transform breaks after removing/readding to scene during runtime
Labels: bug,topic:physics,topic:3d

### Godot version

v3.4.2.stable.official [45eaa2daf]

### System information

Windows 11, GLES3, AMD Radeon RX 5700

### Issue description

### What doesn't work
My 3D player character (KinematicBody, right now just a Cube) should have a cloak/cape which is basically represented by an attached SoftBody node and some attachment points configured. This works as expected without any issues.

But if I change the parent of my player node (remove_child/add_child) during runtime, the SoftBody transform seems to get out-of-sync somehow.

Before changing parent:
![image](https://user-images.githubusercontent.com/25534479/153612267-cf858397-bb62-4ca2-a292-9c38e7864feb.png)

After changing parent:
![image](https://user-images.githubusercontent.com/25534479/153612308-e5179a2f-242d-43ea-b6ca-4b5c7c36618f.png)

During my tests I found out that this issue also happens if I just remove and re-add the SoftBody node to scene.

Additionally there is some error in console:
![image](https://user-images.githubusercontent.com/25534479/153623114-85b739ce-d5e2-44c6-adb5-7046822df10b.png)

```
E 0:00:01.976   connect: Signal 'frame_pre_draw' is already connected to given method '_draw_soft_mesh' in that object.
  <C++ Error>   Method failed. Returning: ERR_INVALID_PARAMETER
  <C++ Source>  core/object.cpp:1474 @ connect()
  <Stack Trace> Player.gd:13 @ _physics_process()
```
### Expected behavior
The SoftBody transform shouldn't change at all if I remove and re-add the node to scene.

### Steps to reproduce

* create new/empty Godot project
* add empty 3D scene node called **Main**
* configure following input actions in project settings: ![image](https://user-images.githubusercontent.com/25534479/153609699-b5a2abbd-c9fa-4b0a-be8d-82c68b2c834f.png)

* add following node structure to scene:
![image](https://user-images.githubusercontent.com/25534479/153609738-e62578a1-a5c0-4d6a-9e36-a6034dfe9041.png)
* Camera transform:
![image](https://user-images.githubusercontent.com/25534479/153610119-1903b403-8be0-493e-8072-1ac72ec8e135.png)
* Set Player/MeshInstance to **CubeMesh**
* SoftBody settings:
![image](https://user-images.githubusercontent.com/25534479/153610711-04522783-d988-4737-a6ba-b67e9e5b9b11.png)
* Set SoftBody/Mesh to **PlaneMesh** and add **SpatialMaterial** (set Albedo color to red)

* Add new GDScript to player node with following code:
```
extends KinematicBody

onready var bone : BoneAttachment = $BoneAttachment
onready var cape_body : SoftBody = $BoneAttachment/SoftBody

func _physics_process(delta):
	if Input.is_action_pressed("rotate_left"):
		rotation_degrees.y -= 150 * delta
	elif Input.is_action_pressed("rotate_right"):
		rotation_degrees.y += 150 * delta
	elif Input.is_action_just_pressed("reparent"):
		bone.remove_child(cape_body)
		bone.add_child(cape_body)
```
* Run scene
* Use A or D to rotate the parent node (Player).
* Use SPACE to remove/add the Softbody node from BoneAttachment

Attached you find also a small project to reproduce it more quickly.

### Minimal reproduction project

[SoftbodyIssue.zip](https://github.com/godotengine/godot/files/8049492/SoftbodyIssue.zip)