[Bf-blender-cvs] [168b2bfb50] snap_system_clip_planes: transform_snap_object: More cleanup: Name and position of variables and functions

Germano Cavalcante noreply at git.blender.org
Sun Feb 26 14:00:43 CET 2017


Commit: 168b2bfb5018ca7e5f4ee909a428cce3ee586036
Author: Germano Cavalcante
Date:   Sun Feb 26 10:00:23 2017 -0300
Branches: snap_system_clip_planes
https://developer.blender.org/rB168b2bfb5018ca7e5f4ee909a428cce3ee586036

transform_snap_object: More cleanup: Name and position of variables and functions

===================================================================

M	source/blender/editors/transform/transform_snap_object.c

===================================================================

diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index b56804edcc..26a3d31174 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -298,6 +298,18 @@ MINLINE void aabb_get_near_far_from_plane(
 	}
 }
 
+static float dist_aabb_to_plane(
+        const float bbmin[3], const float bbmax[3],
+        const float plane_co[3], const float plane_no[3])
+{
+	const float bb_near[3] = {
+		(plane_no[0] < 0) ? bbmax[0] : bbmin[0],
+		(plane_no[1] < 0) ? bbmax[1] : bbmin[1],
+		(plane_no[2] < 0) ? bbmax[2] : bbmin[2],
+	};
+	return depth_get(bb_near, plane_co, plane_no);
+}
+
 /**
  * Check if a point is in front all planes.
  * (Similar to `isect_point_planes_v3` but checks the opposite side)
@@ -371,7 +383,6 @@ typedef struct SnapRayCastLocalData {
 typedef struct SnapNearestLocalData {
 	float ray_orig[3];
 	float ray_dir[3];
-	float ray_inv_dir[3];
 	float pmat[4][4]; /* perspective matrix */
 
 	float imat[4][4];
@@ -417,12 +428,6 @@ static void snp_nearest_local_data_get(
 	mul_m4_v3(localdata->imat, localdata->ray_orig);
 	mul_mat3_m4_v3(localdata->imat, localdata->ray_dir);
 
-	for (int i = 0; i < 3; i++) {
-		localdata->ray_inv_dir[i] =
-		        (localdata->ray_dir[i] != 0.0f) ?
-		        (1.0f / localdata->ray_dir[i]) : FLT_MAX;
-	}
-
 	if (snpdt->clip.plane) {
 		localdata->clip.plane = snp_clipplanes_calc_local(
 		        snpdt->clip.plane, snpdt->clip.plane_num, obmat);
@@ -634,6 +639,7 @@ static bool snap_segment_v3v3(
 typedef struct SnapNearest2dPrecalc {
 	SnapNearestLocalData *local;
 
+	float ray_inv_dir[3];
 	bool is_persp;
 	float win_half[2];
 
@@ -650,6 +656,12 @@ static void snp_dist_squared_to_projected_aabb_precalc(
 	nearest_precalc->local = localdata;
 //	memcpy(&nearest_precalc->local, localdata, sizeof(nearest_precalc->local));
 
+	for (int i = 0; i < 3; i++) {
+		nearest_precalc->ray_inv_dir[i] =
+			(localdata->ray_dir[i] != 0.0f) ?
+			(1.0f / localdata->ray_dir[i]) : FLT_MAX;
+	}
+
 	nearest_precalc->is_persp = snpdt->view_proj == VIEW_PROJ_PERSP;
 	copy_v2_v2(nearest_precalc->win_half, snpdt->win_half);
 	copy_v2_v2(nearest_precalc->depth_range, snpdt->depth_range);
@@ -665,7 +677,7 @@ static float snp_dist_squared_to_projected_aabb(
 {
 	float bb_near[3], bb_afar[3];
 	aabb_get_near_far_from_plane(
-	        data->local->ray_inv_dir, bbmin, bbmax, bb_near, bb_afar);
+	        data->ray_inv_dir, bbmin, bbmax, bb_near, bb_afar);
 
 	/* ISECT_CLIP_PLANE can replace this ? */
 	if (*flag & TEST_RANGE_DEPTH) {
@@ -706,14 +718,14 @@ static float snp_dist_squared_to_projected_aabb(
 	}
 
 	const float tmin[3] = {
-		(bb_near[0] - data->local->ray_orig[0]) * data->local->ray_inv_dir[0],
-		(bb_near[1] - data->local->ray_orig[1]) * data->local->ray_inv_dir[1],
-		(bb_near[2] - data->local->ray_orig[2]) * data->local->ray_inv_dir[2],
+		(bb_near[0] - data->local->ray_orig[0]) * data->ray_inv_dir[0],
+		(bb_near[1] - data->local->ray_orig[1]) * data->ray_inv_dir[1],
+		(bb_near[2] - data->local->ray_orig[2]) * data->ray_inv_dir[2],
 	};
 	const float tmax[3] = {
-		(bb_afar[0] - data->local->ray_orig[0]) * data->local->ray_inv_dir[0],
-		(bb_afar[1] - data->local->ray_orig[1]) * data->local->ray_inv_dir[1],
-		(bb_afar[2] - data->local->ray_orig[2]) * data->local->ray_inv_dir[2],
+		(bb_afar[0] - data->local->ray_orig[0]) * data->ray_inv_dir[0],
+		(bb_afar[1] - data->local->ray_orig[1]) * data->ray_inv_dir[1],
+		(bb_afar[2] - data->local->ray_orig[2]) * data->ray_inv_dir[2],
 	};
 	/* `va` and `vb` are the coordinates of the AABB edge closest to the ray */
 	float va[3], vb[3];
@@ -755,7 +767,7 @@ static float snp_dist_squared_to_projected_aabb(
 
 	if (tmin_axis == tmax_axis) {
 		float proj;
-		r_axis_closest[tmin_axis] = data->local->ray_inv_dir[tmin_axis] >= 0;
+		r_axis_closest[tmin_axis] = data->ray_inv_dir[tmin_axis] >= 0;
 		tmin_axis = abs(tmax_axis - 1);
 		proj = data->local->ray_orig[tmin_axis] + rtmin * data->local->ray_dir[tmin_axis];
 		r_axis_closest[tmin_axis] = (proj - bbmin[tmin_axis]) < (bbmax[tmin_axis] - proj);
@@ -765,8 +777,8 @@ static float snp_dist_squared_to_projected_aabb(
 		return 0.0f;
 	}
 	else {
-		r_axis_closest[tmin_axis] = data->local->ray_inv_dir[tmin_axis] >= 0;
-		r_axis_closest[tmax_axis] = data->local->ray_inv_dir[tmax_axis] < 0;
+		r_axis_closest[tmin_axis] = data->ray_inv_dir[tmin_axis] >= 0;
+		r_axis_closest[tmax_axis] = data->ray_inv_dir[tmax_axis] < 0;
 
 		main_axis = 3 - (tmin_axis + tmax_axis);
 
@@ -873,18 +885,6 @@ static bool snp_snap_boundbox_raycast_test(
 	        localdata->ray_start, localdata->ray_dir, bb->vec[0], bb->vec[6], NULL, NULL);
 }
 
-static float dist_aabb_to_plane(
-        const float bbmin[3], const float bbmax[3],
-        const float plane_co[3], const float plane_no[3])
-{
-	const float bb_near[3] = {
-		(plane_no[0] < 0) ? bbmax[0] : bbmin[0],
-		(plane_no[1] < 0) ? bbmax[1] : bbmin[1],
-		(plane_no[2] < 0) ? bbmax[2] : bbmin[2],
-	};
-	return depth_get(bb_near, plane_co, plane_no);
-}
-
 /** \} */
 
 
@@ -1500,16 +1500,13 @@ static bool snapEmpty(
 		return retval;
 	}
 
-	short flag = snpdt->clip.plane ? (TEST_RANGE_DEPTH | ISECT_CLIP_PLANE) : TEST_RANGE_DEPTH;
-
 	/* for now only vertex supported */
 	if (snpdt->snap_to_flag & SCE_SELECT_VERTEX) {
 		bool is_persp = snpdt->view_proj == VIEW_PROJ_PERSP;
+		short flag = snpdt->clip.plane ? (TEST_RANGE_DEPTH | ISECT_CLIP_PLANE) : TEST_RANGE_DEPTH;
 		float dist_px_sq = SQUARE(*dist_px);
-		float tmp_co[3];
-		copy_v3_v3(tmp_co, obmat[3]);
 		if (snap_point_v3(
-			        snpdt->depth_range, snpdt->mval, tmp_co,
+			        snpdt->depth_range, snpdt->mval, obmat[3],
 			        snpdt->pmat, snpdt->win_half, is_persp,
 			        flag, snpdt->clip.plane, snpdt->clip.plane_num,
 			        &dist_px_sq, r_loc))




More information about the Bf-blender-cvs mailing list