diff options
author | mano-wii <germano.costa@ig.com.br> | 2017-09-19 19:57:59 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2017-09-19 19:57:59 +0300 |
commit | 98ea79cfdee12c9034c9a936ada477985f07c7f0 (patch) | |
tree | a7b5b1c192c8f3d44b29d5810910baf8508328c8 | |
parent | b31faac17eaf66e034107f136bb00dd16361a0bf (diff) |
transform_snap_object: simplify IGNORE_BEHIND_RAY
`depth_get` is called in most of the time. So not worth going through so many conditions
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 34 |
1 files changed, 9 insertions, 25 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 867f04563c6..1fdf7c67cff 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -1065,36 +1065,20 @@ static float dist_squared_to_projected_aabb( main_axis += 3; } - /* if rtmin < rtmax, ray intersect `AABB` */ - if (rtmin <= rtmax) { #define IGNORE_BEHIND_RAY #ifdef IGNORE_BEHIND_RAY - /* `if rtmax < depth_min`, the hit is behind us */ - if (rtmax < data->ray_min_dist) { - /* Test if the entire AABB is behind us */ - float depth = depth_get( - local_bvmax, data->ray_origin_local, data->ray_direction_local); - if (depth < (data->ray_min_dist)) { - return FLT_MAX; - } - } -#endif - const float proj = rtmin * data->ray_direction_local[main_axis]; - r_axis_closest[main_axis] = (proj - va[main_axis]) < (vb[main_axis] - proj); - return 0.0f; - } -#ifdef IGNORE_BEHIND_RAY - /* `if rtmin < depth_min`, the hit is behing us */ - else if (rtmin < data->ray_min_dist) { - /* Test if the entire AABB is behind us */ - float depth = depth_get( - local_bvmax, data->ray_origin_local, data->ray_direction_local); - if (depth < (data->ray_min_dist)) { - return FLT_MAX; - } + float depth_max = depth_get(local_bvmax, data->ray_origin_local, data->ray_direction_local); + if (depth_max < data->ray_min_dist) { + return FLT_MAX; } #endif #undef IGNORE_BEHIND_RAY + + /* if rtmin <= rtmax, ray intersect `AABB` */ + if (rtmin <= rtmax) { + return 0; + } + if (data->sign[main_axis]) { va[main_axis] = local_bvmax[main_axis]; vb[main_axis] = local_bvmin[main_axis]; |