From 8289760227acd0aa9f4f33d5e2dc9a1bd4732e5f Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sat, 11 Jun 2016 17:22:07 -0300 Subject: [PATCH] Show descriptive errors when look_at is improperly used, closes #5131 (cherry picked from commit 375fbe5c7ce5ebeb45a04e7f6b8aa72b9fb06507 and db1e9bac79ce4934e62b1c97586ff0ec19346ffb) --- scene/3d/spatial.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp index 6a9c6551418..920e56130ce 100644 --- a/scene/3d/spatial.cpp +++ b/scene/3d/spatial.cpp @@ -712,6 +712,15 @@ void Spatial::look_at(const Vector3& p_target, const Vector3& p_up_normal) { Transform lookat; lookat.origin=get_global_transform().origin; + if (lookat.origin==p_target) { + ERR_EXPLAIN("Node origin and target are in the same position, look_at() failed"); + ERR_FAIL(); + } + + if (p_up_normal.cross(p_target-lookat.origin)==Vector3()) { + ERR_EXPLAIN("Up vector and direction between node origin and target are aligned, look_at() failed"); + ERR_FAIL(); + } lookat=lookat.looking_at(p_target,p_up_normal); set_global_transform(lookat); }