summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaoyu Qiu <timothyqiu32@gmail.com>2019-12-29 11:36:57 +0800
committerHaoyu Qiu <timothyqiu32@gmail.com>2019-12-29 11:39:04 +0800
commitcbb8930813e891c67a4c917b20bd98317e182f54 (patch)
tree0c74aba27ab93dc3d582eb18edf2a9e6dfbaea1d
parent318c69351624f7794c51b5385d252af397c0404a (diff)
Clamps fov/size for Camera gizmo
-rw-r--r--editor/spatial_editor_gizmos.cpp5
-rw-r--r--scene/3d/camera.cpp2
2 files changed, 4 insertions, 3 deletions
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index fd9e44cd5f..f4f18bfdb6 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -1275,7 +1275,7 @@ void CameraSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_idx
if (camera->get_projection() == Camera::PROJECTION_PERSPECTIVE) {
Transform gt2 = camera->get_global_transform();
float a = _find_closest_angle_to_half_pi_arc(s[0], s[1], 1.0, gt2);
- camera->set("fov", a * 2.0);
+ camera->set("fov", CLAMP(a * 2.0, 1, 179));
} else {
Vector3 ra, rb;
@@ -1285,8 +1285,7 @@ void CameraSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_idx
d = Math::stepify(d, SpatialEditor::get_singleton()->get_translate_snap());
}
- if (d < 0)
- d = 0;
+ d = CLAMP(d, 0.1, 16384);
camera->set("size", d);
}
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index 4d9bb69778..8f8d54eb9c 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -583,12 +583,14 @@ Camera::Projection Camera::get_projection() const {
}
void Camera::set_fov(float p_fov) {
+ ERR_FAIL_COND(p_fov < 1 || p_fov > 179);
fov = p_fov;
_update_camera_mode();
_change_notify("fov");
}
void Camera::set_size(float p_size) {
+ ERR_FAIL_COND(p_size < 0.1 || p_size > 16384);
size = p_size;
_update_camera_mode();
_change_notify("size");