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

Merge pull request #53481 from timothyqiu/soft-body-ready-3.x

[3.x] Re-prepare VisualServer if SoftBody mesh changed
Camille Mohr-Daurat 3 жил өмнө
parent
commit
e1de198e95

+ 3 - 2
scene/3d/soft_body.cpp

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

+ 1 - 1
scene/3d/soft_body.h

@@ -49,7 +49,7 @@ class SoftBodyVisualServerHandler {
 
 private:
 	SoftBodyVisualServerHandler();
-	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();