[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