[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31191] branches/soc-2010-nicks/source/ blender: fixed bugs (wrong number of triangle in buildMeshAdjacence, wrong face indexes in applyModifier)

Nick Samarin nicks1987 at bigmir.net
Mon Aug 9 12:20:53 CEST 2010


Revision: 31191
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31191
Author:   nicks
Date:     2010-08-09 12:20:53 +0200 (Mon, 09 Aug 2010)

Log Message:
-----------
fixed bugs (wrong number of triangle in buildMeshAdjacence, wrong face indexes in applyModifier)

Modified Paths:
--------------
    branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp
    branches/soc-2010-nicks/source/blender/modifiers/intern/MOD_navmesh.cpp

Modified: branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp
===================================================================
--- branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp	2010-08-09 08:18:49 UTC (rev 31190)
+++ branches/soc-2010-nicks/source/blender/editors/util/navmesh_conversion.cpp	2010-08-09 10:20:53 UTC (rev 31191)
@@ -357,7 +357,7 @@
 
 
 	//build adjacency info for detailed mesh triangles
-	buildMeshAdjacency(dtris, ntris, nverts, 3);
+	buildMeshAdjacency(dtris, ndtris, nverts, 3);
 
 	//create detailed mesh description for each navigation polygon
 	npolys = dtrisToPolysMap[ndtris-1];

Modified: branches/soc-2010-nicks/source/blender/modifiers/intern/MOD_navmesh.cpp
===================================================================
--- branches/soc-2010-nicks/source/blender/modifiers/intern/MOD_navmesh.cpp	2010-08-09 08:18:49 UTC (rev 31190)
+++ branches/soc-2010-nicks/source/blender/modifiers/intern/MOD_navmesh.cpp	2010-08-09 10:20:53 UTC (rev 31191)
@@ -129,10 +129,13 @@
 	int maxFaces = dm->getNumFaces(dm);
 
 	result = CDDM_copy(dm);
-	int *recastData = (int*)CustomData_get_layer(&dm->faceData, CD_RECAST);
-	CustomData_add_layer_named(&result->faceData, CD_RECAST, CD_DUPLICATE, 
-			recastData, maxFaces, "recastData");
-	recastData = (int*)CustomData_get_layer(&result->faceData, CD_RECAST);
+	if (!CustomData_has_layer(&result->faceData, CD_RECAST)) 
+	{
+		int *sourceRecastData = (int*)CustomData_get_layer(&dm->faceData, CD_RECAST);
+		CustomData_add_layer_named(&result->faceData, CD_RECAST, CD_DUPLICATE, 
+			sourceRecastData, maxFaces, "recastData");
+	}
+	int *recastData = (int*)CustomData_get_layer(&result->faceData, CD_RECAST);
 	result->drawFacesTex =  navDM_drawFacesTex;
 	result->drawFacesSolid = navDM_drawFacesSolid;
 	
@@ -162,8 +165,8 @@
 				{
 					unsigned short triidx = dtrisToTrisMap[tbase+ti];
 					unsigned short faceidx = trisToFacesMap[triidx];
-					if (recastData[triidx]>0)
-						recastData[triidx] = -recastData[triidx];
+					if (recastData[faceidx]>0)
+						recastData[faceidx] = -recastData[faceidx];
 				}				
 			}
 		}
@@ -218,23 +221,17 @@
 		//2)add and init recast data layer
 		if (!hasRecastData)
 		{
-			int numFaces = derivedData->getNumFaces(derivedData);
-			CustomData_add_layer_named(&derivedData->faceData, CD_RECAST, CD_CALLOC, NULL, numFaces, "recastData");
-			int* recastData = (int*)CustomData_get_layer(&derivedData->faceData, CD_RECAST);
-			for (int i=0; i<numFaces; i++)
-			{
-				recastData[i] = i+1;
-			}
-
 			Mesh* obmesh = (Mesh *)ob->data;
 			if (obmesh)
 			{
+				int numFaces = obmesh->totface;
 				CustomData_add_layer_named(&obmesh->fdata, CD_RECAST, CD_CALLOC, NULL, numFaces, "recastData");
 				int* recastData = (int*)CustomData_get_layer(&obmesh->fdata, CD_RECAST);
 				for (int i=0; i<numFaces; i++)
 				{
 					recastData[i] = i+1;
 				}
+				CustomData_add_layer_named(&derivedData->faceData, CD_RECAST, CD_REFERENCE, recastData, numFaces, "recastData");
 			}
 		}
 	}





More information about the Bf-blender-cvs mailing list