浏览代码

Merge pull request #63378 from nathanfranke/t3d-errors

Add equal checks to Transform3D::looking_at and Transform3D::set_look_at, fixes misleading error.
Rémi Verschelde 3 年之前
父节点
当前提交
13a9d5e3c0
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      core/math/transform_3d.cpp

+ 6 - 0
core/math/transform_3d.cpp

@@ -70,12 +70,18 @@ void Transform3D::rotate_basis(const Vector3 &p_axis, real_t p_angle) {
 }
 
 Transform3D Transform3D::looking_at(const Vector3 &p_target, const Vector3 &p_up) const {
+#ifdef MATH_CHECKS
+	ERR_FAIL_COND_V_MSG(origin.is_equal_approx(p_target), Transform3D(), "The transform's origin and target can't be equal.");
+#endif
 	Transform3D t = *this;
 	t.basis = Basis::looking_at(p_target - origin, p_up);
 	return t;
 }
 
 void Transform3D::set_look_at(const Vector3 &p_eye, const Vector3 &p_target, const Vector3 &p_up) {
+#ifdef MATH_CHECKS
+	ERR_FAIL_COND_MSG(p_eye.is_equal_approx(p_target), "The eye and target vectors can't be equal.");
+#endif
 	basis = Basis::looking_at(p_target - p_eye, p_up);
 	origin = p_eye;
 }