Skip to content

SoftBody3D broken in 4.5-beta1 #107829

Closed
@simpkins

Description

@simpkins

Tested versions

From a bisection, this appears to have been broken by #105901.
The code works properly in 2270224, and is broken in 0e9a59b.

System information

Windows 11, Godot 4.5-beta1

Issue description

SoftBody3D objects no longer appear to move properly. e.g., placing a SoftBody3D in space no longer falls to the ground normally due to gravity, but falls extremely slowly instead. With Jolt physics it appears to gradually slow down and very quickly stop moving entirely, while with Godot physics it continues moving, but much more slowly than it should.

I suspect the issue is due to recursive delivery of NOTIFICATION_TRANSFORM_CHANGED events.
SoftBody3D is sort of a weird class, and it tries to always keep its transform set to (0, 0, 0). It processes transform notifications for itself, and whenever its transform is changed it moves its soft body vertices, then resets its transform back to (0, 0, 0). It calls set_notify_transform(false) so that it won't be redelivered a new notification about setting its transform back to 0. However, after #105901, calling set_notify_transform(false) is no longer sufficient to disable transform notification, so it keeps receiving new notifications about the change it made.

Steps to reproduce

Open the attached project, and start the scene. The rigid body falls normally, while the 2 soft bodies only fall very slowly.

Minimal reproduction project (MRP)

soft_body_bug.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Release Blocker

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions