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"); } } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs