[Bf-blender-cvs] [a300f80043] surface-deform-modifier: Review: Inline loop indices

Luca Rood noreply at git.blender.org
Wed Jan 25 07:08:03 CET 2017


Commit: a300f8004387f8748d403be0e30eacd59dcf8e9d
Author: Luca Rood
Date:   Mon Jan 23 18:43:11 2017 -0200
Branches: surface-deform-modifier
https://developer.blender.org/rBa300f8004387f8748d403be0e30eacd59dcf8e9d

Review: Inline loop indices

Also fixed endian switch sign, and UI Python thingy...

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/modifiers/intern/MOD_surfacedeform.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 74227cedf4..68e1b3b210 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -957,7 +957,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         layout.separator()
 
         col = layout.column()
-        col.enabled = bool(md.target)
+        col.active = md.target is not None
 
         if md.is_bound:
             col.operator("object.surfacedeform_bind", text="Unbind")
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 5be3dcaa32..3bebb3f38a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5304,22 +5304,21 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
 		}
 		else if (md->type == eModifierType_SurfaceDeform) {
 			SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
-			int i, j;
 
 			smd->verts = newdataadr(fd, smd->verts);
 
 			if (smd->verts) {
-				for (i = 0; i < smd->numverts; i++) {
+				for (int i = 0; i < smd->numverts; i++) {
 					smd->verts[i].binds = newdataadr(fd, smd->verts[i].binds);
 
 					if (smd->verts[i].binds) {
-						for (j = 0; j < smd->verts[i].numbinds; j++) {
+						for (int j = 0; j < smd->verts[i].numbinds; j++) {
 							smd->verts[i].binds[j].vert_inds = newdataadr(fd, smd->verts[i].binds[j].vert_inds);
 							smd->verts[i].binds[j].vert_weights = newdataadr(fd, smd->verts[i].binds[j].vert_weights);
 
 							if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
 								if (smd->verts[i].binds[j].vert_inds)
-									BLI_endian_switch_int32_array(smd->verts[i].binds[j].vert_inds, smd->verts[i].binds[j].numverts);
+									BLI_endian_switch_uint32_array(smd->verts[i].binds[j].vert_inds, smd->verts[i].binds[j].numverts);
 
 								if (smd->verts[i].binds[j].vert_weights) {
 									if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 86a7a5a3f3..6066529951 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1832,16 +1832,15 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
 		}
 		else if (md->type == eModifierType_SurfaceDeform) {
 			SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
-			int i, j;
 
 			writestruct(wd, DATA, SDefVert, smd->numverts, smd->verts);
 
 			if (smd->verts) {
-				for (i = 0; i < smd->numverts; i++) {
+				for (int i = 0; i < smd->numverts; i++) {
 					writestruct(wd, DATA, SDefBind, smd->verts[i].numbinds, smd->verts[i].binds);
 
 					if (smd->verts[i].binds) {
-						for (j = 0; j < smd->verts[i].numbinds; j++) {
+						for (int j = 0; j < smd->verts[i].numbinds; j++) {
 							writedata(wd, DATA, sizeof(int) * smd->verts[i].binds[j].numverts, smd->verts[i].binds[j].vert_inds);
 
 							if (smd->verts[i].binds[j].mode == MOD_SDEF_MODE_CENTROID ||
diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 067a84de77..487af7d944 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -86,9 +86,9 @@ static void freeData(ModifierData *md)
 	SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *) md;
 
 	if (smd->verts) {
-		for (unsigned int i = 0; i < smd->numverts; i++) {
+		for (int i = 0; i < smd->numverts; i++) {
 			if (smd->verts[i].binds) {
-				for (unsigned int j = 0; j < smd->verts[i].numbinds; j++) {
+				for (int j = 0; j < smd->verts[i].numbinds; j++) {
 					if (smd->verts[i].binds[j].vert_inds) {
 						MEM_freeN(smd->verts[i].binds[j].vert_inds);
 					}
@@ -117,11 +117,11 @@ static void copyData(ModifierData *md, ModifierData *target)
 	if (smd->verts) {
 		tsmd->verts = MEM_dupallocN(smd->verts);
 
-		for (unsigned int i = 0; i < smd->numverts; i++) {
+		for (int i = 0; i < smd->numverts; i++) {
 			if (smd->verts[i].binds) {
 				tsmd->verts[i].binds = MEM_dupallocN(smd->verts[i].binds);
 
-				for (unsigned int j = 0; j < smd->verts[i].numbinds; j++) {
+				for (int j = 0; j < smd->verts[i].numbinds; j++) {
 					if (smd->verts[i].binds[j].vert_inds) {
 						tsmd->verts[i].binds[j].vert_inds = MEM_dupallocN(smd->verts[i].binds[j].vert_inds);
 					}
@@ -177,7 +177,7 @@ static void freeAdjacencyMap(SDefAdjacency ** const vert_edges, SDefEdgePolys *
 
 	MEM_freeN(edge_polys);
 
-	for (unsigned int i = 0; i < numverts; i++) {
+	for (int i = 0; i < numverts; i++) {
 		for (adj = vert_edges[i]; adj; adj = vert_edges[i]) {
 			vert_edges[i] = adj->next;
 
@@ -193,13 +193,12 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge *edge, const MLoop *
 {
 	const MLoop *loop;
 	SDefAdjacency *adj;
-	unsigned int i;
 
 	/* Fing polygons adjacent to edges */
-	for (i = 0; i < numpoly; i++, poly++) {
+	for (int i = 0; i < numpoly; i++, poly++) {
 		loop = &mloop[poly->loopstart];
 
-		for (unsigned int j = 0; j < poly->totloop; j++, loop++) {
+		for (int j = 0; j < poly->totloop; j++, loop++) {
 			if (edge_polys[loop->e].num == 0) {
 				edge_polys[loop->e].polys[0] = i;
 				edge_polys[loop->e].polys[1] = -1;
@@ -217,7 +216,7 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge *edge, const MLoop *
 	}
 
 	/* Find edges adjacent to vertices */
-	for (i = 0; i < numedges; i++, edge++) {
+	for (int i = 0; i < numedges; i++, edge++) {
 		adj = MEM_mallocN(sizeof(*adj), "SDefVertEdge");
 		if (adj == NULL) {
 			return 0;
@@ -243,9 +242,8 @@ static int buildAdjacencyMap(const MPoly *poly, const MEdge *edge, const MLoop *
 BLI_INLINE void sortPolyVertsEdge(unsigned int *indices, const MLoop * const mloop, const unsigned int edge, const unsigned int num)
 {
 	bool found = false;
-	unsigned int i;
 
-	for (i = 0; i < num; i++) {
+	for (int i = 0; i < num; i++) {
 		if (mloop[i].e == edge) {
 			found = true;
 		}
@@ -256,7 +254,7 @@ BLI_INLINE void sortPolyVertsEdge(unsigned int *indices, const MLoop * const mlo
 	}
 
 	/* Fill in remaining vertex indices that occur before the edge */
-	for (i = 0; mloop[i].e != edge; i++) {
+	for (int i = 0; mloop[i].e != edge; i++) {
 		*indices = mloop[i].v;
 		indices++;
 	}
@@ -264,14 +262,12 @@ BLI_INLINE void sortPolyVertsEdge(unsigned int *indices, const MLoop * const mlo
 
 BLI_INLINE void sortPolyVertsTri(unsigned int *indices, const MLoop * const mloop, const unsigned int loopstart, const unsigned int num)
 {
-	unsigned int i;
-
-	for (i = loopstart; i < num; i++) {
+	for (int i = loopstart; i < num; i++) {
 		*indices = mloop[i].v;
 		indices++;
 	}
 
-	for (i = 0; i < loopstart; i++) {
+	for (int i = 0; i < loopstart; i++) {
 		*indices = mloop[i].v;
 		indices++;
 	}
@@ -286,14 +282,14 @@ BLI_INLINE unsigned int nearestVert(SDefBindCalcData * const data, const float p
 	const MLoop *loop;
 	float max_dist = FLT_MAX;
 	float dist;
-	unsigned int index;
+	unsigned int index = 0;
 
 	BLI_bvhtree_find_nearest(data->treeData->tree, point_co, &nearest, data->treeData->nearest_callback, data->treeData);
 
 	poly = &data->mpoly[data->looptri[nearest.index].poly];
 	loop = &data->mloop[poly->loopstart];
 
-	for (unsigned int i = 0; i < poly->totloop; i++, loop++) {
+	for (int i = 0; i < poly->totloop; i++, loop++) {
 		edge = &data->medge[loop->e];
 		dist = dist_squared_to_line_segment_v3(point_co, mvert[edge->v1].co, mvert[edge->v2].co);
 
@@ -325,7 +321,7 @@ BLI_INLINE bool isPolyValid(const float coords[][2], const unsigned int nr)
 	copy_v2_v2(prev_co, coords[nr - 1]);
 	sub_v2_v2v2(prev_vec, prev_co, coords[nr - 2]);
 
-	for (unsigned int i = 0; i < nr; i++) {
+	for (int i = 0; i < nr; i++) {
 		sub_v2_v2v2(curr_vec, coords[i], prev_co);
 
 		if (len_v2(curr_vec) < FLT_EPSILON) {
@@ -384,7 +380,6 @@ BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const data,
 	float tot_weight = 0.0f;
 	int inf_weight_flags = 0;
 	unsigned int numpoly = 0;
-	unsigned int i, j;
 
 	bwdata = MEM_callocN(sizeof(*bwdata), "SDefBindWeightData");
 	if (bwdata == NULL) {
@@ -396,7 +391,7 @@ BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const data,
 	for (vedge = vert_edges; vedge; vedge = vedge->next) {
 		unsigned int edge_ind = vedge->index;
 
-		for (i = 0; i < edge_polys[edge_ind].num; i++) {
+		for (int i = 0; i < edge_polys[edge_ind].num; i++) {
 			for (bpoly = bwdata->bind_polys; bpoly; bpoly = bpoly->next) {
 				if (bpoly->index == edge_polys[edge_ind].polys[i]) {
 					break;
@@ -446,7 +441,7 @@ BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const data,
 					return NULL;
 				}
 
-				for (j = 0; j < poly->totloop; j++, loop++) {
+				for (int j = 0; j < poly->totloop; j++, loop++) {
 					copy_v3_v3(bpoly->coords[j], data->mvert[loop->v].co);
 
 					/* Find corner and edge indices within poly loop array */
@@ -474,7 +469,7 @@ BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const data,
 				map_to_plane_axis_angle_v2_v3v3fl(bpoly->point_v2, point_co, axis, angle);
 
 				zero_v2(bpoly->centroid_v2);
-				for (j = 0; j < poly->totloop; j++) {
+				for (int j = 0; j < poly->totloop; j++) {
 					map_to_plane_axis_angle_v2_v3v3fl(bpoly->coords_v2[j], bpoly->coords[j], axis, angle);
 					madd_v2_v2fl(bpoly->centroid_v2, bpoly->coords_v2[j], 1.0f / poly->totloop);
 				}
@@ -551,6 +546,7 @@ BLI_INLINE SDefBindWeightData *computeBindWeights(SDefBindCalcData * const data,
 			float tmp1, tmp2;
 			unsigned int edge_ind = vedge->index;
 			unsigned int edge_on_poly[2];
+			int i;
 
 			epolys = &edge_polys[edge_ind];
 
@@ -802,7 +798,7 @@ static void bindVert(void *userdata, void *UNUSED(userdata_chunk), const int ind
 
 				/* Reproject vert based on weights and original poly verts, to reintroduce poly non-planarity */
 				zero_v3(point_co_proj);
-				for (unsigned int i = 0; i < bpoly->numverts; i++, loop++) {
+				for (int i = 0; i < bpoly->numverts; i++, loop++) {
 					madd_v3_v3fl(point_co_proj, bpoly->coords[i], sdbind->

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list