Merge pull request #53482 from timothyqiu/soft-body-ready

Re-prepare RenderingServer if SoftDynamicBody mesh changed
This commit is contained in:
Camille Mohr-Daurat 2021-10-06 14:57:53 -07:00 committed by GitHub
commit 69f80b6631
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View File

@ -411,8 +411,9 @@ void SoftDynamicBody3D::_draw_soft_mesh() {
return;
}
if (!rendering_server_handler.is_ready()) {
rendering_server_handler.prepare(get_mesh()->get_rid(), 0);
const RID mesh_rid = get_mesh()->get_rid();
if (!rendering_server_handler.is_ready(mesh_rid)) {
rendering_server_handler.prepare(mesh_rid, 0);
/// Necessary in order to render the mesh correctly (Soft body nodes are in global space)
simulation_started = true;

View File

@ -50,7 +50,7 @@ class SoftDynamicBodyRenderingServerHandler : public RenderingServerHandler {
private:
SoftDynamicBodyRenderingServerHandler();
bool is_ready() { return mesh.is_valid(); }
bool is_ready(RID p_mesh_rid) const { return mesh.is_valid() && mesh == p_mesh_rid; }
void prepare(RID p_mesh_rid, int p_surface);
void clear();
void open();