[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40596] trunk/blender/source/blender/ editors/mesh/mesh_navmesh.c: navmesh: code clean-up, should be no functional changes.

Sergey Sharybin g.ulairi at gmail.com
Tue Sep 27 11:09:55 CEST 2011


Revision: 40596
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40596
Author:   nazgul
Date:     2011-09-27 09:09:55 +0000 (Tue, 27 Sep 2011)
Log Message:
-----------
navmesh: code clean-up, should be no functional changes.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/mesh_navmesh.c

Modified: trunk/blender/source/blender/editors/mesh/mesh_navmesh.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_navmesh.c	2011-09-27 09:09:52 UTC (rev 40595)
+++ trunk/blender/source/blender/editors/mesh/mesh_navmesh.c	2011-09-27 09:09:55 UTC (rev 40596)
@@ -17,12 +17,13 @@
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
-* The Original Code is Copyright (C) 2004 by Blender Foundation
+* The Original Code is Copyright (C) 2011 by Blender Foundation
 * All rights reserved.
 *
 * The Original Code is: all of this file.
 *
-* Contributor(s): none yet.
+* Contributor(s): Benoit Bolsee,
+*                 Nick Samarin
 *
 * ***** END GPL LICENSE BLOCK *****
 */
@@ -67,89 +68,95 @@
 static void createVertsTrisData(bContext *C, LinkNode* obs, int *nverts_r, float **verts_r, int *ntris_r, int **tris_r)
 {
 	MVert *mvert;
-	int nfaces = 0, *tri, i, curnverts, basenverts, curnfaces;
+	int nfaces= 0, *tri, i, curnverts, basenverts, curnfaces;
 	MFace *mface;
 	float co[3], wco[3];
 	Object *ob;
 	LinkNode *oblink, *dmlink;
 	DerivedMesh *dm;
-	Scene* scene = CTX_data_scene(C);
-	LinkNode* dms = NULL;
+	Scene* scene= CTX_data_scene(C);
+	LinkNode* dms= NULL;
 
 	int nverts, ntris, *tris;
 	float *verts;
 
-	nverts = 0;
-	ntris = 0;
-	//calculate number of verts and tris
-	for (oblink = obs; oblink; oblink = oblink->next) 
-	{
-		ob = (Object*) oblink->link;	
-		dm = mesh_create_derived_no_virtual(scene, ob, NULL, CD_MASK_MESH);
+	nverts= 0;
+	ntris= 0;
+
+	/* calculate number of verts and tris */
+	for(oblink= obs; oblink; oblink= oblink->next) {
+		ob= (Object*) oblink->link;
+		dm= mesh_create_derived_no_virtual(scene, ob, NULL, CD_MASK_MESH);
 		BLI_linklist_append(&dms, (void*)dm);
 
-		nverts += dm->getNumVerts(dm);
-		nfaces = dm->getNumFaces(dm);
-		ntris += nfaces;
+		nverts+= dm->getNumVerts(dm);
+		nfaces= dm->getNumFaces(dm);
+		ntris+= nfaces;
 
-		//resolve quad faces
-		mface = dm->getFaceArray(dm);
-		for (i=0; i<nfaces; i++)
-		{
-			MFace* mf = &mface[i];
-			if (mf->v4)
+		/* resolve quad faces */
+		mface= dm->getFaceArray(dm);
+		for(i= 0; i<nfaces; i++) {
+			MFace* mf= &mface[i];
+			if(mf->v4)
 				ntris+=1;
 		}
 	}
 
-	//create data
-	verts = MEM_mallocN(sizeof(float)*3*nverts, "createVertsTrisData verts");
-	tris = MEM_mallocN(sizeof(int)*3*ntris, "createVertsTrisData faces");
+	/* create data */
+	verts= MEM_mallocN(sizeof(float)*3*nverts, "createVertsTrisData verts");
+	tris= MEM_mallocN(sizeof(int)*3*ntris, "createVertsTrisData faces");
 
-	basenverts = 0;
-	tri = tris;
-	for (oblink = obs, dmlink = dms; oblink && dmlink; 
-			oblink = oblink->next, dmlink = dmlink->next)
-	{
-		ob = (Object*) oblink->link;
-		dm = (DerivedMesh*) dmlink->link;
+	basenverts= 0;
+	tri= tris;
+	for(oblink= obs, dmlink= dms; oblink && dmlink;
+			oblink= oblink->next, dmlink= dmlink->next) {
+		ob= (Object*) oblink->link;
+		dm= (DerivedMesh*) dmlink->link;
 
-		curnverts = dm->getNumVerts(dm);
-		mvert = dm->getVertArray(dm);
-		//copy verts	
-		for (i=0; i<curnverts; i++)
-		{
-			MVert *v = &mvert[i];
+		curnverts= dm->getNumVerts(dm);
+		mvert= dm->getVertArray(dm);
+
+		/* copy verts */
+		for(i= 0; i<curnverts; i++) {
+			MVert *v= &mvert[i];
+
 			copy_v3_v3(co, v->co);
 			mul_v3_m4v3(wco, ob->obmat, co);
-			verts[3*(basenverts+i)+0] = wco[0];
-			verts[3*(basenverts+i)+1] = wco[2];
-			verts[3*(basenverts+i)+2] = wco[1];
+
+			verts[3*(basenverts+i)+0]= wco[0];
+			verts[3*(basenverts+i)+1]= wco[2];
+			verts[3*(basenverts+i)+2]= wco[1];
 		}
 
-		//create tris
-		curnfaces = dm->getNumFaces(dm);
-		mface = dm->getFaceArray(dm);
-		for (i=0; i<curnfaces; i++)
-		{
-			MFace* mf = &mface[i]; 
-			tri[0]= basenverts + mf->v1; tri[1]= basenverts + mf->v3;	tri[2]= basenverts + mf->v2; 
+		/* create tris */
+		curnfaces= dm->getNumFaces(dm);
+		mface= dm->getFaceArray(dm);
+
+		for(i= 0; i<curnfaces; i++) {
+			MFace* mf= &mface[i];
+
+			tri[0]= basenverts + mf->v1;
+			tri[1]= basenverts + mf->v3;
+			tri[2]= basenverts + mf->v2;
 			tri += 3;
-			if (mf->v4)
-			{
-				tri[0]= basenverts + mf->v1; tri[1]= basenverts + mf->v4; tri[2]= basenverts + mf->v3; 
+
+			if(mf->v4) {
+				tri[0]= basenverts + mf->v1;
+				tri[1]= basenverts + mf->v4;
+				tri[2]= basenverts + mf->v3;
 				tri += 3;
 			}
 		}
-		basenverts += curnverts;
+
+		basenverts+= curnverts;
 	}
 
-	//release derived mesh
-	for (dmlink = dms; dmlink; dmlink = dmlink->next)
-	{
-		dm = (DerivedMesh*) dmlink->link;
+	/* release derived mesh */
+	for(dmlink= dms; dmlink; dmlink= dmlink->next) {
+		dm= (DerivedMesh*) dmlink->link;
 		dm->release(dm);
 	}
+
 	BLI_linklist_free(dms, NULL);
 
 	*nverts_r= nverts;
@@ -172,101 +179,46 @@
 
 	recast_calcBounds(verts, nverts, bmin, bmax);
 
-	//
-	// Step 1. Initialize build config.
-	//
-	{
-/*
-		float cellsize = 0.3f;
-		float cellheight = 0.2f;
-		float agentmaxslope = M_PI/4;
-		float agentmaxclimb = 0.9f;
-		float agentheight = 2.0f;
-		float agentradius = 0.6f;
-		float edgemaxlen = 12.0f;
-		float edgemaxerror = 1.3f;
-		float regionminsize = 50.f;
-		float regionmergesize = 20.f;
-		int vertsperpoly = 6;
-		float detailsampledist = 6.0f;
-		float detailsamplemaxerror = 1.0f;
-		cfg.cs = cellsize;
-		cfg.ch = cellheight;
-		cfg.walkableSlopeAngle = agentmaxslope/M_PI*180.f;
-		cfg.walkableHeight = (int)ceilf(agentheight/ cfg.ch);
-		cfg.walkableClimb = (int)floorf(agentmaxclimb / cfg.ch);
-		cfg.walkableRadius = (int)ceilf(agentradius / cfg.cs);
-		cfg.maxEdgeLen = (int)(edgemaxlen/cellsize);
-		cfg.maxSimplificationError = edgemaxerror;
-		cfg.minRegionSize = (int)rcSqr(regionminsize);
-		cfg.mergeRegionSize = (int)rcSqr(regionmergesize);
-		cfg.maxVertsPerPoly = vertsperpoly;
-		cfg.detailSampleDist = detailsampledist< 0.9f ? 0 : cellsize * detailsampledist;
-		cfg.detailSampleMaxError = cellheight * detailsamplemaxerror;
-*/
-#if 0
-		cfg.cs = recastParams.cellsize;
-		cfg.ch = recastParams.cellheight;
-		cfg.walkableSlopeAngle = recastParams.agentmaxslope/((float)M_PI)*180.f;
-		cfg.walkableHeight = (int)ceilf(recastParams.agentheight/ cfg.ch);
-		cfg.walkableClimb = (int)floorf(recastParams.agentmaxclimb / cfg.ch);
-		cfg.walkableRadius = (int)ceilf(recastParams.agentradius / cfg.cs);
-		cfg.maxEdgeLen = (int)(recastParams.edgemaxlen/recastParams.cellsize);
-		cfg.maxSimplificationError = recastParams.edgemaxerror;
-		cfg.minRegionSize = (int)rcSqr(recastParams.regionminsize);
-		cfg.mergeRegionSize = (int)rcSqr(recastParams.regionmergesize);
-		cfg.maxVertsPerPoly = recastParams.vertsperpoly;
-		cfg.detailSampleDist = recastParams.detailsampledist< 0.9f ? 0 : 
-								recastParams.cellsize * recastParams.detailsampledist;
-		cfg.detailSampleMaxError = recastParams.cellheight * recastParams.detailsamplemaxerror;
-#endif
-	}
-
-	walkableHeight = (int)ceilf(recastParams->agentheight/ recastParams->cellheight);
-	walkableClimb = (int)floorf(recastParams->agentmaxclimb / recastParams->cellheight);
-	walkableRadius = (int)ceilf(recastParams->agentradius / recastParams->cellsize);
-	minRegionSize = (int)(recastParams->regionminsize * recastParams->regionminsize);
-	mergeRegionSize = (int)(recastParams->regionmergesize * recastParams->regionmergesize);
-	maxEdgeLen = (int)(recastParams->edgemaxlen/recastParams->cellsize);
-	detailSampleDist = recastParams->detailsampledist< 0.9f ? 0 : 
+	/* ** Step 1. Initialize build config ** */
+	walkableHeight= (int)ceilf(recastParams->agentheight/ recastParams->cellheight);
+	walkableClimb= (int)floorf(recastParams->agentmaxclimb / recastParams->cellheight);
+	walkableRadius= (int)ceilf(recastParams->agentradius / recastParams->cellsize);
+	minRegionSize= (int)(recastParams->regionminsize * recastParams->regionminsize);
+	mergeRegionSize= (int)(recastParams->regionmergesize * recastParams->regionmergesize);
+	maxEdgeLen= (int)(recastParams->edgemaxlen/recastParams->cellsize);
+	detailSampleDist= recastParams->detailsampledist< 0.9f ? 0 :
 			recastParams->cellsize * recastParams->detailsampledist;
-	detailSampleMaxError = recastParams->cellheight * recastParams->detailsamplemaxerror;
+	detailSampleMaxError= recastParams->cellheight * recastParams->detailsamplemaxerror;
 
-	// Set the area where the navigation will be build.
+	/* Set the area where the navigation will be build. */
 	recast_calcGridSize(bmin, bmax, recastParams->cellsize, &width, &height);
 
-	//
-	// Step 2. Rasterize input polygon soup.
-	//
-	// Allocate voxel heightfield where we rasterize our input data to.
-	solid = recast_newHeightfield();
+	/* ** Step 2: Rasterize input polygon soup ** */
+	/* Allocate voxel heightfield where we rasterize our input data to */
+	solid= recast_newHeightfield();
 
-	if (!recast_createHeightfield(solid, width, height, bmin, bmax, recastParams->cellsize, recastParams->cellheight)) {
+	if(!recast_createHeightfield(solid, width, height, bmin, bmax, recastParams->cellsize, recastParams->cellheight)) {
 		recast_destroyHeightfield(solid);
 
 		return 0;
 	}
 
-	// Allocate array that can hold triangle flags.
-	triflags = MEM_callocN(sizeof(unsigned char)*ntris, "buildNavMesh triflags");
+	/* Allocate array that can hold triangle flags */
+	triflags= MEM_callocN(sizeof(unsigned char)*ntris, "buildNavMesh triflags");
 
-	// Find triangles which are walkable based on their slope and rasterize them.
+	/* Find triangles which are walkable based on their slope and rasterize them */
 	recast_markWalkableTriangles(RAD2DEG(recastParams->agentmaxslope), verts, nverts, tris, ntris, triflags);
 	recast_rasterizeTriangles(verts, nverts, tris, triflags, ntris, solid);
 	MEM_freeN(triflags);
 
-	//
-	// Step 3. Filter walkables surfaces.
-	//
+	/* ** Step 3: Filter walkables surfaces ** */
 	recast_filterLedgeSpans(walkableHeight, walkableClimb, solid);
 	recast_filterWalkableLowHeightSpans(walkableHeight, solid);
 
-	//
-	// Step 4. Partition walkable surface to simple regions.
-	//
+	/* ** Step 4: Partition walkable surface to simple regions ** */
 
-	chf = recast_newCompactHeightfield();
-	if (!recast_buildCompactHeightfield(walkableHeight, walkableClimb, RECAST_WALKABLE, solid, chf)) {
+	chf= recast_newCompactHeightfield();
+	if(!recast_buildCompactHeightfield(walkableHeight, walkableClimb, RECAST_WALKABLE, solid, chf)) {
 		recast_destroyHeightfield(solid);
 		recast_destroyCompactHeightfield(chf);
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list