summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2017-08-07 22:18:12 -0300
committerJuan Linietsky <reduzio@gmail.com>2017-08-07 22:18:12 -0300
commit2a6cdfaf912c9b0903903e3fc035f7c708cb9ae0 (patch)
tree8cb1e9feb0421ede1c7e4746c4e9cbefa16b1f70
parentbb47bca1f6184abe9ee7bb8b683922ab8388123f (diff)
-Fixed BoneAttachment delay, closes #3966
-Fixed skeleton crash, probably fixes other issues
-rw-r--r--scene/main/scene_tree.cpp4
-rw-r--r--servers/visual/visual_server_scene.cpp4
2 files changed, 6 insertions, 2 deletions
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 6aa2c83941..d800c24e10 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 56a596de55..11a9c8c9c1 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);