Propagate_call doesn't work

Godot Version

4.6

Question

My scene is a bunch of “Rooms”, connected together (subclassing Area3D), containing 1 child static StaticBody3D with a bunch of collision shapes, defining static geometry, as well as some RigidBody3Ds defining various interactive objects.

These rooms are turned on and off as player walks through the connecting doorways. When player enters or leaves the room and the door animation finishes, the room (Area3D) is made visible/invisible, and its process_mode is set to PROCESS_MODE_PAUSABLE if the room is visible and PROCESS_MODE_DISABLED otherwise.

I found out that despite child objects process_mode being PROCESS_MODE_INHERIT, the physics simulation is not affected, and they continue moving and colliding (unintuitive but ok).

So, I’m trying to disable or freeze these child RigidBodies when the room changes its state - but when I call propagate_call(“room_enabled”, [ e ], false) literally nothing happens.

room_enabled method is defined and takes a boolean, and nothing is called. I tried other method names, and 0 parameters - same.

Anyone knows what the heck?

That’s not true. Which means they’re just not being disabled when you think they are, which means there’s likely a break in your inheritance chain.

As for your other issues, if you want us to help you with code, you have to post the code.

1 Like

Thank you,

you were right. As soon as I posted (after pulling my hair out for a while), I found that my script wasn’t added to the rigidbody objects.

Both propagate_call and PROCESS_MODE_DISABLED works as expected.

1 Like

We call that the rubber duck effect in coding. Often, just the process of explaining a problem is enough to solve it for yourself. Glad you figured it out.

1 Like