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

Reply via email to