From 2a6cdfaf912c9b0903903e3fc035f7c708cb9ae0 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 7 Aug 2017 22:18:12 -0300 Subject: [PATCH] -Fixed BoneAttachment delay, closes #3966 -Fixed skeleton crash, probably fixes other issues --- scene/main/scene_tree.cpp | 4 ++++ servers/visual/visual_server_scene.cpp | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index 6aa2c839417..d800c24e108 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -540,6 +540,7 @@ bool SceneTree::iteration(float p_time) { _notify_group_pause("fixed_process_internal", Node::NOTIFICATION_INTERNAL_FIXED_PROCESS); _notify_group_pause("fixed_process", Node::NOTIFICATION_FIXED_PROCESS); _flush_ugc(); + MessageQueue::get_singleton()->flush(); //small little hack _flush_transform_notifications(); call_group_flags(GROUP_CALL_REALTIME, "_viewports", "update_worlds"); root_lock--; @@ -566,6 +567,8 @@ bool SceneTree::idle(float p_time) { emit_signal("idle_frame"); + MessageQueue::get_singleton()->flush(); //small little hack + _flush_transform_notifications(); _notify_group_pause("idle_process_internal", Node::NOTIFICATION_INTERNAL_PROCESS); @@ -581,6 +584,7 @@ bool SceneTree::idle(float p_time) { } _flush_ugc(); + MessageQueue::get_singleton()->flush(); //small little hack _flush_transform_notifications(); //transforms after world update, to avoid unnecessary enter/exit notifications call_group_flags(GROUP_CALL_REALTIME, "_viewports", "update_worlds"); diff --git a/servers/visual/visual_server_scene.cpp b/servers/visual/visual_server_scene.cpp index 56a596de556..11a9c8c9c19 100644 --- a/servers/visual/visual_server_scene.cpp +++ b/servers/visual/visual_server_scene.cpp @@ -880,13 +880,13 @@ void VisualServerScene::instance_attach_skeleton(RID p_instance, RID p_skeleton) return; if (instance->skeleton.is_valid()) { - VSG::storage->instance_remove_skeleton(p_skeleton, instance); + VSG::storage->instance_remove_skeleton(instance->skeleton, instance); } instance->skeleton = p_skeleton; if (instance->skeleton.is_valid()) { - VSG::storage->instance_add_skeleton(p_skeleton, instance); + VSG::storage->instance_add_skeleton(instance->skeleton, instance); } _instance_queue_update(instance, true);