From ab238bd153a885eac77e0cce065c5a2b5a7ad9c9 Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 10 Jul 2019 09:30:16 +0200 Subject: [PATCH] gobj: support non-affine transformations in calc_tight_bounds This makes it possible to get the 2D bounding volume of an object as it appears on screen. --- panda/src/gobj/geomPrimitive.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/panda/src/gobj/geomPrimitive.cxx b/panda/src/gobj/geomPrimitive.cxx index afa406e921..73aaf77c40 100644 --- a/panda/src/gobj/geomPrimitive.cxx +++ b/panda/src/gobj/geomPrimitive.cxx @@ -1612,7 +1612,7 @@ calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, // Find the first non-NaN vertex. while (!found_any && i < cdata->_num_vertices) { reader.set_row(cdata->_first_vertex + i); - LPoint3 first_vertex = mat.xform_point(reader.get_data3()); + LPoint3 first_vertex = mat.xform_point_general(reader.get_data3()); if (!first_vertex.is_nan()) { min_point = first_vertex; max_point = first_vertex; @@ -1624,7 +1624,7 @@ calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, for (; i < cdata->_num_vertices; ++i) { reader.set_row_unsafe(cdata->_first_vertex + i); - LPoint3 vertex = mat.xform_point(reader.get_data3()); + LPoint3 vertex = mat.xform_point_general(reader.get_data3()); min_point.set(min(min_point[0], vertex[0]), min(min_point[1], vertex[1]), @@ -1677,7 +1677,7 @@ calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, int ii = index.get_data1i(); if (ii != strip_cut_index) { reader.set_row(ii); - LPoint3 first_vertex = mat.xform_point(reader.get_data3()); + LPoint3 first_vertex = mat.xform_point_general(reader.get_data3()); if (!first_vertex.is_nan()) { min_point = first_vertex; max_point = first_vertex; @@ -1693,7 +1693,7 @@ calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, continue; } reader.set_row_unsafe(ii); - LPoint3 vertex = mat.xform_point(reader.get_data3()); + LPoint3 vertex = mat.xform_point_general(reader.get_data3()); min_point.set(min(min_point[0], vertex[0]), min(min_point[1], vertex[1]),