diff options
author | Juan Linietsky <reduzio@gmail.com> | 2017-12-07 12:13:20 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2017-12-07 12:13:20 -0300 |
commit | dd892a327d39c6df71e5e447b30488d7694501b5 (patch) | |
tree | 98c91f2486acc3f8c65fd91e9541104e62ef66fb | |
parent | 561490261166a61718e80fe73bc112b8e3cf4b33 (diff) |
Added some clean up in camera/viewport management. Fixes #12279, Fixes #12774
-rw-r--r-- | scene/3d/camera.cpp | 9 | ||||
-rw-r--r-- | scene/main/viewport.cpp | 3 |
2 files changed, 8 insertions, 4 deletions
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index abc4a03498..af210fff1c 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -191,11 +191,12 @@ void Camera::_update_camera() { get_viewport()->_camera_transform_changed_notify(); */ - if (is_inside_tree() && is_current()) { - get_viewport()->_camera_transform_changed_notify(); - } + if (!is_inside_tree() || get_tree()->is_node_being_edited(this) || !is_current()) + return; + + get_viewport()->_camera_transform_changed_notify(); - if (is_current() && get_world().is_valid()) { + if (get_world().is_valid()) { get_world()->_update_camera(this); } } diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index d864b0f763..a785abbc65 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -936,6 +936,9 @@ void Viewport::_camera_remove(Camera *p_camera) { cameras.erase(p_camera); if (camera == p_camera) { + if (camera && find_world().is_valid()) { + camera->notification(Camera::NOTIFICATION_LOST_CURRENT); + } camera = NULL; } } |