diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2020-11-23 13:00:06 -0300 |
---|---|---|
committer | Robert Mader <robert.mader@posteo.de> | 2020-11-23 16:06:43 +0000 |
commit | 40a8f45aa9f50e884550d1f289776658f100fc13 (patch) | |
tree | 13180ced664526002d7699954908ae680c566402 | |
parent | a92def79e46d32548fd5e8575514069d29d7fca9 (diff) | |
download | mutter-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.c | 63 |
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 |