summaryrefslogtreecommitdiff
path: root/editor/plugins/node_3d_editor_plugin.cpp
diff options
context:
space:
mode:
authorKiri Jolly <expiredpopsicle@gmail.com>2020-04-04 16:16:11 -0700
committerRĂ©mi Verschelde <rverschelde@gmail.com>2020-04-10 17:19:49 +0200
commitcc27b4560fd6b361934eb863777ba9bada2e5bb8 (patch)
tree85abadf3154853152fc9ffb49c18a0aaa4a65f01 /editor/plugins/node_3d_editor_plugin.cpp
parent35c8ec065c00666c68d68964c2753a99ffa20b38 (diff)
Othographic camera in-editor now uses Z near/far settings instead of a hardcoded value
Fixes #18809. The in-editor ortho camera used a far clipping plane of 8192 units, and was placed 4096 units away from the camera cursor. This was far enough to cause culling issues from floating point precision loss on objects smaller than one unit. This change modifies the near/far clipping planes of the ortho camera to use those specified in the editor (and currently used by the perspective camera). The frustum is still centered around the camera cursor location, as it was before. (cherry picked from commit 26912c15e625f234a0528f239bf5e5ab2f858d9a)
Diffstat (limited to 'editor/plugins/node_3d_editor_plugin.cpp')
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 1c16ed6b58..2871e15bab 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -347,7 +347,7 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
if (orthogonal) {
float half_fov = Math::deg2rad(get_fov()) / 2.0;
float height = 2.0 * cursor.distance * Math::tan(half_fov);
- camera->set_orthogonal(height, 0.1, 8192);
+ camera->set_orthogonal(height, get_znear(), get_zfar());
} else {
camera->set_perspective(get_fov(), get_znear(), get_zfar());
}
@@ -364,7 +364,7 @@ Transform Node3DEditorViewport::to_camera_transform(const Cursor &p_cursor) cons
camera_transform.basis.rotate(Vector3(0, 1, 0), -p_cursor.y_rot);
if (orthogonal)
- camera_transform.translate(0, 0, 4096);
+ camera_transform.translate(0, 0, (get_zfar() - get_znear()) / 2.0);
else
camera_transform.translate(0, 0, p_cursor.distance);