diff --git a/ss_player/SpriteStudio-SDK b/ss_player/SpriteStudio-SDK index eab6336..c5ba33b 160000 --- a/ss_player/SpriteStudio-SDK +++ b/ss_player/SpriteStudio-SDK @@ -1 +1 @@ -Subproject commit eab6336ceec88fad43265d9b352b358bf302f330 +Subproject commit c5ba33b9b30be542c7f22ba16f15e3223d0a038b diff --git a/ss_player/ss_internal_player.cpp b/ss_player/ss_internal_player.cpp index 6c79ab1..2ec044c 100644 --- a/ss_player/ss_internal_player.cpp +++ b/ss_player/ss_internal_player.cpp @@ -1684,6 +1684,10 @@ void SsInternalPlayer::_drawAnimation(float frame_no, float delta_seconds, bool } } + for (uint32_t i = 0; i < _instance_children.size(); i++) { + if (_instance_children[i].player) _instance_children[i].player->setRootVisible(false); + } + // Per-frame draw-order counter: batch CIs and per-part CIs draw in the // order they are emitted (rank order), not in CI-pool allocation order. _draw_seq = 0; @@ -2034,11 +2038,12 @@ void SsInternalPlayer::_drive_instance_slot(InstanceChildState& state, child->play(); } - child->setRootVisible(false); if (!r.visible) { return; } + child->_update_instance_children(r.child_frame_no, delta_seconds, r.child_looped); + _redraw_child_if_frame_changed(child, r.child_frame_no, delta_seconds, r.child_looped); }