summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-11-23 13:00:06 -0300
committerRobert Mader <robert.mader@posteo.de>2020-11-23 16:06:43 +0000
commit40a8f45aa9f50e884550d1f289776658f100fc13 (patch)
tree13180ced664526002d7699954908ae680c566402
parenta92def79e46d32548fd5e8575514069d29d7fca9 (diff)
downloadmutter-gbsneto/untransformed-graphene-box-picking.tar.gz
clutter/pick-stack: Move triangle check to else blockgbsneto/untransformed-graphene-box-picking
Just to improve the legibility of this part of the code. We go either through box, or triangle, but never both.
-rw-r--r--clutter/clutter/clutter-pick-stack.c63
1 files changed, 31 insertions, 32 deletions
diff --git a/clutter/clutter/clutter-pick-stack.c b/clutter/clutter/clutter-pick-stack.c
index 3c5ae786e..d11f6f6dc 100644
--- a/clutter/clutter/clutter-pick-stack.c
+++ b/clutter/clutter/clutter-pick-stack.c
@@ -120,8 +120,6 @@ ray_intersects_input_region (Record *rec,
const graphene_ray_t *ray,
const graphene_point3d_t *point)
{
- graphene_triangle_t t0, t1;
-
maybe_project_record (rec);
if (G_LIKELY (is_2d_rectangle (rec->vertices)))
@@ -132,36 +130,37 @@ ray_intersects_input_region (Record *rec,
return graphene_box_contains_point (&box, point) ||
graphene_ray_intersects_box (ray, &box);
}
-
- /*
- * Degrade the projected quad into the following triangles:
- *
- * 0 -------------- 1
- * | • |
- * | • t0 |
- * | • |
- * | t1 • |
- * | • |
- * 3 -------------- 2
- */
-
- graphene_triangle_init_from_point3d (&t0,
- &rec->vertices[0],
- &rec->vertices[1],
- &rec->vertices[2]);
-
- graphene_triangle_init_from_point3d (&t1,
- &rec->vertices[0],
- &rec->vertices[2],
- &rec->vertices[3]);
-
- if (graphene_triangle_contains_point (&t0, point) ||
- graphene_triangle_contains_point (&t1, point) ||
- graphene_ray_intersects_triangle (ray, &t0) ||
- graphene_ray_intersects_triangle (ray, &t1))
- return TRUE;
-
- return FALSE;
+ else
+ {
+ graphene_triangle_t t0, t1;
+
+ /*
+ * Degrade the projected quad into the following triangles:
+ *
+ * 0 -------------- 1
+ * | • |
+ * | • t0 |
+ * | • |
+ * | t1 • |
+ * | • |
+ * 3 -------------- 2
+ */
+
+ graphene_triangle_init_from_point3d (&t0,
+ &rec->vertices[0],
+ &rec->vertices[1],
+ &rec->vertices[2]);
+
+ graphene_triangle_init_from_point3d (&t1,
+ &rec->vertices[0],
+ &rec->vertices[2],
+ &rec->vertices[3]);
+
+ return graphene_triangle_contains_point (&t0, point) ||
+ graphene_triangle_contains_point (&t1, point) ||
+ graphene_ray_intersects_triangle (ray, &t0) ||
+ graphene_ray_intersects_triangle (ray, &t1);
+ }
}
static gboolean