Added simple check to viewport, if matrix32 is invesile (https://github.com/godotengine/godot/issues/6296).

(cherry picked from commit 8671836b76)
This commit is contained in:
Mateusz Adamczyk 2016-10-08 12:33:10 +02:00 committed by Rémi Verschelde
parent a139c7afe6
commit ce1138cb02
2 changed files with 4 additions and 1 deletions

View file

@ -424,7 +424,7 @@ Matrix32 Matrix32::inverse() const {
void Matrix32::affine_invert() {
float det = elements[0][0]*elements[1][1] - elements[1][0]*elements[0][1];
float det = basis_determinant();
ERR_FAIL_COND(det==0);
float idet = 1.0 / det;

View file

@ -1705,6 +1705,9 @@ Control* Viewport::_gui_find_control_at_pos(CanvasItem* p_node,const Point2& p_g
}
Matrix32 matrix = p_xform * p_node->get_transform();
// matrix.basis_determinant() == 0.0f implies that node does not exist on scene
if(matrix.basis_determinant() == 0.0f)
return NULL;
if (!c || !c->clips_input() || c->has_point(matrix.affine_inverse().xform(p_global))) {