From 72c547bd0125f4f8723a20eb06cf568d07059058 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 26 Jul 2022 10:06:05 +0200 Subject: [PATCH] [godot] Closes #2117, setting meshes of inactive slots invisible breaks draw order. Since we clear the mesh instances, we can refrain from setting them invisible. --- spine-godot/spine_godot/SpineSprite.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spine-godot/spine_godot/SpineSprite.cpp b/spine-godot/spine_godot/SpineSprite.cpp index 0826b7800..7a75649af 100644 --- a/spine-godot/spine_godot/SpineSprite.cpp +++ b/spine-godot/spine_godot/SpineSprite.cpp @@ -532,13 +532,11 @@ void SpineSprite::update_meshes(Ref skeleton_ref) { spine::Slot *slot = skeleton->getDrawOrder()[i]; spine::Attachment *attachment = slot->getAttachment(); MeshInstance2D *mesh_instance = mesh_instances[i]; + clear_mesh_instance(mesh_instance); if (!attachment) { - mesh_instances[i]->set_visible(false); skeleton_clipper->clipEnd(*slot); continue; } - mesh_instance->set_visible(true); - clear_mesh_instance(mesh_instance); spine::Color skeleton_color = skeleton->getColor(); spine::Color slot_color = slot->getColor(); @@ -598,6 +596,7 @@ void SpineSprite::update_meshes(Ref skeleton_ref) { } if (indices->size() > 0) { + // Set the mesh size_t num_vertices = vertices->size() / 2; scratch_points.resize((int) num_vertices); memcpy(scratch_points.ptrw(), vertices->buffer(), num_vertices * 2 * sizeof(float));