Fix for recent commit:
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 20 Sep 2011 17:06:17 +0000 (17:06 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 20 Sep 2011 17:06:17 +0000 (17:06 +0000)
- Some declarations after statement left.
- Do not use static inline functions in MOD_navmesh. It produces errors
  with msvc and not sure it's actually helps -- optimizer should
  make it inlined itself.

extern/recastnavigation/SConscript
source/blender/blenkernel/intern/navmesh_conversion.c
source/blender/modifiers/intern/MOD_navmesh.c

index be10c33c3277ec483488364abcb3628938e2f838..2c15e518eb15149c56c345f558546b9fa054ca86 100644 (file)
@@ -3,6 +3,7 @@
 Import('env')
 
 sources = env.Glob('Recast/Source/*.cpp') + env.Glob('Detour/Source/*.cpp')
+sources += ['recast-capi.cpp']
 
 incs = 'Recast/Include Detour/Include'
 
index eefc24ee8c6e13486037ec74c66eaace9c17881a..7df8e902ccd8f4218af5aa4a3dd787b139ef82f1 100644 (file)
@@ -83,10 +83,14 @@ int polyIsConvex(const unsigned short* p, const int vertsPerPoly, const float* v
 float distPointToSegmentSq(const float* point, const float* a, const float* b)
 {
        float abx[3], dx[3];
+       float d, t;
+
        sub_v3_v3v3(abx, b,a);
        sub_v3_v3v3(dx, point,a);
-       float d = abx[0]*abx[0]+abx[2]*abx[2];
-       float t = abx[0]*dx[0]+abx[2]*dx[2];
+
+       d = abx[0]*abx[0]+abx[2]*abx[2];
+       t = abx[0]*dx[0]+abx[2]*dx[2];
+
        if (d > 0)
                t /= d;
        if (t < 0)
@@ -95,6 +99,7 @@ float distPointToSegmentSq(const float* point, const float* a, const float* b)
                t = 1;
        dx[0] = a[0] + t*abx[0] - point[0];
        dx[2] = a[2] + t*abx[2] - point[2];
+
        return dx[0]*dx[0] + dx[2]*dx[2];
 }
 
@@ -107,6 +112,8 @@ int buildRawVertIndicesData(DerivedMesh* dm, int *nverts_r, float **verts_r,
        int *trisToFacesMap;
        float *verts;
        unsigned short *tris, *tri;
+       int nfaces;
+       MFace *faces;
 
        nverts = dm->getNumVerts(dm);
        if (nverts>=0xffff)
@@ -124,8 +131,8 @@ int buildRawVertIndicesData(DerivedMesh* dm, int *nverts_r, float **verts_r,
        }
 
        //calculate number of tris
-       int nfaces = dm->getNumFaces(dm);
-       MFace *faces = dm->getFaceArray(dm);
+       nfaces = dm->getNumFaces(dm);
+       faces = dm->getFaceArray(dm);
        ntris = nfaces;
        for (fi=0; fi<nfaces; fi++)
        {
@@ -226,8 +233,9 @@ int buildPolygonsByDetailedMeshes(const int vertsPerPoly, const int npolys,
                        {
                                if (nv==capacity)
                                {
+                                       unsigned short* newPolyBig;
                                        capacity += vertsPerPoly;
-                                       unsigned short* newPolyBig = MEM_callocN(sizeof(unsigned short)*capacity, "buildPolygonsByDetailedMeshes newPolyBig");
+                                       newPolyBig = MEM_callocN(sizeof(unsigned short)*capacity, "buildPolygonsByDetailedMeshes newPolyBig");
                                        memset(newPolyBig, 0xff, sizeof(unsigned short)*capacity);
                                        memcpy(newPolyBig, newPoly, sizeof(unsigned short)*nv);
                                        MEM_freeN(newPoly);
index e05f91058f3fc4719312e859be562488247c6bd2..5a8c79ba4dde4e62a13c8eb3c1ef52f593c1b271 100644 (file)
 #include "BKE_customdata.h"
 #include "MEM_guardedalloc.h"
 
-static inline int bit(int a, int b)
+static int bit(int a, int b)
 {
        return (a & (1 << b)) >> b;
 }
 
-static inline void intToCol(int i, float* col)
+static void intToCol(int i, float* col)
 {
        int     r = bit(i, 0) + bit(i, 3) * 2 + 1;
        int     g = bit(i, 1) + bit(i, 4) * 2 + 1;