summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2017-12-07 12:13:20 -0300
committerJuan Linietsky <reduzio@gmail.com>2017-12-07 12:13:20 -0300
commitdd892a327d39c6df71e5e447b30488d7694501b5 (patch)
tree98c91f2486acc3f8c65fd91e9541104e62ef66fb
parent561490261166a61718e80fe73bc112b8e3cf4b33 (diff)
Added some clean up in camera/viewport management. Fixes #12279, Fixes #12774
-rw-r--r--scene/3d/camera.cpp9
-rw-r--r--scene/main/viewport.cpp3
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;
}
}