|
@@ -886,7 +886,7 @@ void Viewport::_camera_set(Camera *p_camera) {
|
|
|
if (camera == p_camera)
|
|
|
return;
|
|
|
|
|
|
- if (camera && find_world().is_valid()) {
|
|
|
+ if (camera) {
|
|
|
camera->notification(Camera::NOTIFICATION_LOST_CURRENT);
|
|
|
}
|
|
|
camera = p_camera;
|
|
@@ -895,7 +895,7 @@ void Viewport::_camera_set(Camera *p_camera) {
|
|
|
else
|
|
|
VisualServer::get_singleton()->viewport_attach_camera(viewport, RID());
|
|
|
|
|
|
- if (camera && find_world().is_valid()) {
|
|
|
+ if (camera) {
|
|
|
camera->notification(Camera::NOTIFICATION_BECAME_CURRENT);
|
|
|
}
|
|
|
|
|
@@ -914,9 +914,7 @@ 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->notification(Camera::NOTIFICATION_LOST_CURRENT);
|
|
|
camera = NULL;
|
|
|
}
|
|
|
}
|
|
@@ -1013,7 +1011,7 @@ void Viewport::_propagate_enter_world(Node *p_node) {
|
|
|
Viewport *v = Object::cast_to<Viewport>(p_node);
|
|
|
if (v) {
|
|
|
|
|
|
- if (v->world.is_valid())
|
|
|
+ if (v->world.is_valid() || v->own_world.is_valid())
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -1050,7 +1048,7 @@ void Viewport::_propagate_exit_world(Node *p_node) {
|
|
|
Viewport *v = Object::cast_to<Viewport>(p_node);
|
|
|
if (v) {
|
|
|
|
|
|
- if (v->world.is_valid())
|
|
|
+ if (v->world.is_valid() || v->own_world.is_valid())
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -1070,23 +1068,11 @@ void Viewport::set_world(const Ref<World> &p_world) {
|
|
|
if (is_inside_tree())
|
|
|
_propagate_exit_world(this);
|
|
|
|
|
|
-#ifndef _3D_DISABLED
|
|
|
- if (find_world().is_valid() && camera)
|
|
|
- camera->notification(Camera::NOTIFICATION_LOST_CURRENT);
|
|
|
-#endif
|
|
|
-
|
|
|
world = p_world;
|
|
|
|
|
|
if (is_inside_tree())
|
|
|
_propagate_enter_world(this);
|
|
|
|
|
|
-#ifndef _3D_DISABLED
|
|
|
- if (find_world().is_valid() && camera)
|
|
|
- camera->notification(Camera::NOTIFICATION_BECAME_CURRENT);
|
|
|
-#endif
|
|
|
-
|
|
|
- //propagate exit
|
|
|
-
|
|
|
if (is_inside_tree()) {
|
|
|
VisualServer::get_singleton()->viewport_set_scenario(viewport, find_world()->get_scenario());
|
|
|
}
|
|
@@ -2722,11 +2708,6 @@ void Viewport::set_use_own_world(bool p_world) {
|
|
|
if (is_inside_tree())
|
|
|
_propagate_exit_world(this);
|
|
|
|
|
|
-#ifndef _3D_DISABLED
|
|
|
- if (find_world().is_valid() && camera)
|
|
|
- camera->notification(Camera::NOTIFICATION_LOST_CURRENT);
|
|
|
-#endif
|
|
|
-
|
|
|
if (!p_world)
|
|
|
own_world = Ref<World>();
|
|
|
else
|
|
@@ -2735,13 +2716,6 @@ void Viewport::set_use_own_world(bool p_world) {
|
|
|
if (is_inside_tree())
|
|
|
_propagate_enter_world(this);
|
|
|
|
|
|
-#ifndef _3D_DISABLED
|
|
|
- if (find_world().is_valid() && camera)
|
|
|
- camera->notification(Camera::NOTIFICATION_BECAME_CURRENT);
|
|
|
-#endif
|
|
|
-
|
|
|
- //propagate exit
|
|
|
-
|
|
|
if (is_inside_tree()) {
|
|
|
VisualServer::get_singleton()->viewport_set_scenario(viewport, find_world()->get_scenario());
|
|
|
}
|