diff options
-rw-r--r-- | extern/recastnavigation/Recast/Source/Recast.cpp | 2 | ||||
-rw-r--r-- | extern/recastnavigation/Recast/Source/RecastFilter.cpp | 10 | ||||
-rw-r--r-- | extern/recastnavigation/Recast/Source/RecastMesh.cpp | 16 | ||||
-rw-r--r-- | extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp | 24 | ||||
-rw-r--r-- | source/blender/editors/util/navmesh_conversion.cpp | 16 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_scene_types.h | 26 | ||||
-rw-r--r-- | source/blender/python/intern/gpu.c | 9 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_NavMeshObject.cpp | 4 |
8 files changed, 61 insertions, 46 deletions
diff --git a/extern/recastnavigation/Recast/Source/Recast.cpp b/extern/recastnavigation/Recast/Source/Recast.cpp index 4bd8b7a12a9..0db26c2c1cd 100644 --- a/extern/recastnavigation/Recast/Source/Recast.cpp +++ b/extern/recastnavigation/Recast/Source/Recast.cpp @@ -188,7 +188,7 @@ bool rcBuildCompactHeightfield(const int walkableHeight, const int walkableClimb if (s->flags == flags) { const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int top = s->next ? (int)s->next->smin : MAX_HEIGHT; chf.spans[idx].y = (unsigned short)rcClamp(bot, 0, 0xffff); chf.spans[idx].h = (unsigned char)rcClamp(top - bot, 0, 0xff); idx++; diff --git a/extern/recastnavigation/Recast/Source/RecastFilter.cpp b/extern/recastnavigation/Recast/Source/RecastFilter.cpp index 3421ea1899e..ebe60714a18 100644 --- a/extern/recastnavigation/Recast/Source/RecastFilter.cpp +++ b/extern/recastnavigation/Recast/Source/RecastFilter.cpp @@ -46,7 +46,7 @@ void rcFilterLedgeSpans(const int walkableHeight, continue; const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int top = s->next ? (int)s->next->smin : MAX_HEIGHT; // Find neighbours minimum height. int minh = MAX_HEIGHT; @@ -74,7 +74,7 @@ void rcFilterLedgeSpans(const int walkableHeight, for (ns = solid.spans[dx + dy*w]; ns; ns = ns->next) { nbot = (int)ns->smax; - ntop = (int)ns->next ? (int)ns->next->smin : MAX_HEIGHT; + ntop = ns->next ? (int)ns->next->smin : MAX_HEIGHT; // Skip neightbour if the gap between the spans is too small. if (rcMin(top,ntop) - rcMax(bot,nbot) > walkableHeight) minh = rcMin(minh, nbot - bot); @@ -115,7 +115,7 @@ void rcFilterWalkableLowHeightSpans(int walkableHeight, for (rcSpan* s = solid.spans[x + y*w]; s; s = s->next) { const int bot = (int)s->smax; - const int top = (int)s->next ? (int)s->next->smin : MAX_HEIGHT; + const int top = s->next ? (int)s->next->smin : MAX_HEIGHT; if ((top - bot) <= walkableHeight) s->flags &= ~RC_WALKABLE; } @@ -194,7 +194,7 @@ bool rcMarkReachableSpans(const int walkableHeight, rcReachableSeed cur = stack[stackSize]; const int bot = (int)cur.s->smax; - const int top = (int)cur.s->next ? (int)cur.s->next->smin : MAX_HEIGHT; + const int top = cur.s->next ? (int)cur.s->next->smin : MAX_HEIGHT; // Visit neighbours in all 4 directions. for (int dir = 0; dir < 4; ++dir) @@ -214,7 +214,7 @@ bool rcMarkReachableSpans(const int walkableHeight, continue; const int nbot = (int)ns->smax; - const int ntop = (int)ns->next ? (int)ns->next->smin : MAX_HEIGHT; + const int ntop = ns->next ? (int)ns->next->smin : MAX_HEIGHT; // Skip neightbour if the gap between the spans is too small. if (rcMin(top,ntop) - rcMax(bot,nbot) < walkableHeight) continue; diff --git a/extern/recastnavigation/Recast/Source/RecastMesh.cpp b/extern/recastnavigation/Recast/Source/RecastMesh.cpp index 45ed4a2fdc6..38d62904213 100644 --- a/extern/recastnavigation/Recast/Source/RecastMesh.cpp +++ b/extern/recastnavigation/Recast/Source/RecastMesh.cpp @@ -489,6 +489,9 @@ static void pushBack(int v, int* arr, int& an) static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int maxTris) { + unsigned short* tmpPoly; + int ntris; + static const int nvp = mesh.nvp; int* edges = 0; @@ -671,7 +674,7 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m } // Triangulate the hole. - int ntris = triangulate(nhole, &tverts[0], &thole[0], tris); + ntris = triangulate(nhole, &tverts[0], &thole[0], tris); // Merge the hole triangles back to polygons. polys = new unsigned short[(ntris+1)*nvp]; @@ -689,7 +692,7 @@ static bool removeVertex(rcPolyMesh& mesh, const unsigned short rem, const int m goto failure; } - unsigned short* tmpPoly = &polys[ntris*nvp]; + tmpPoly = &polys[ntris*nvp]; // Build initial polygons. memset(polys, 0xff, ntris*nvp*sizeof(unsigned short)); @@ -793,7 +796,9 @@ failure: bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) { + unsigned short* tmpPoly; rcTimeVal startTime = rcGetPerformanceTimer(); + rcTimeVal endTime; vcopy(mesh.bmin, cset.bmin); vcopy(mesh.bmax, cset.bmax); @@ -902,7 +907,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) rcGetLog()->log(RC_LOG_ERROR, "rcBuildPolyMesh: Out of memory 'polys' (%d).", maxVertsPerCont*nvp); goto failure; } - unsigned short* tmpPoly = &polys[maxVertsPerCont*nvp]; + tmpPoly = &polys[maxVertsPerCont*nvp]; for (int i = 0; i < cset.nconts; ++i) { @@ -1050,7 +1055,7 @@ bool rcBuildPolyMesh(rcContourSet& cset, int nvp, rcPolyMesh& mesh) return false; } - rcTimeVal endTime = rcGetPerformanceTimer(); + endTime = rcGetPerformanceTimer(); // if (rcGetLog()) // rcGetLog()->log(RC_LOG_PROGRESS, "Build polymesh: %.3f ms", rcGetDeltaTimeUsec(startTime, endTime)/1000.0f); @@ -1076,6 +1081,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) return true; rcTimeVal startTime = rcGetPerformanceTimer(); + rcTimeVal endTime; int* nextVert = 0; int* firstVert = 0; @@ -1196,7 +1202,7 @@ bool rcMergePolyMeshes(rcPolyMesh** meshes, const int nmeshes, rcPolyMesh& mesh) delete [] nextVert; delete [] vremap; - rcTimeVal endTime = rcGetPerformanceTimer(); + endTime = rcGetPerformanceTimer(); if (rcGetBuildTimes()) rcGetBuildTimes()->mergePolyMesh += rcGetDeltaTimeUsec(startTime, endTime); diff --git a/extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp b/extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp index ef17531d7bc..b43346c53e2 100644 --- a/extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp +++ b/extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp @@ -95,7 +95,11 @@ static int circumCircle(const float xp, const float yp, return (drsqr <= rsqr) ? 1 : 0; } +#if defined(_MSC_VER) static int ptcmp(void* up, const void *v1, const void *v2) +#else +static int ptcmp(const void *v1, const void *v2, void* up) +#endif { const float* verts = (const float*)up; const float* p1 = &verts[(*(const int*)v1)*3]; @@ -116,10 +120,10 @@ static void delaunay(const int nv, float *verts, rcIntArray& idx, rcIntArray& tr idx.resize(nv); for (int i = 0; i < nv; ++i) idx[i] = i; -#ifdef WIN32 +#if defined(_MSC_VER) qsort_s(&idx[0], idx.size(), sizeof(int), ptcmp, verts); #else - qsort_r(&idx[0], idx.size(), sizeof(int), verts, ptcmp); + qsort_r(&idx[0], idx.size(), sizeof(int), ptcmp, verts); #endif // Find the maximum and minimum vertex bounds. @@ -673,11 +677,15 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c const float sampleDist, const float sampleMaxError, rcPolyMeshDetail& dmesh) { - rcTimeVal startTime = rcGetPerformanceTimer(); - if (mesh.nverts == 0 || mesh.npolys == 0) return true; - + + rcTimeVal startTime = rcGetPerformanceTimer(); + rcTimeVal endTime; + + int vcap; + int tcap; + const int nvp = mesh.nvp; const float cs = mesh.cs; const float ch = mesh.ch; @@ -760,8 +768,8 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c goto failure; } - int vcap = nPolyVerts+nPolyVerts/2; - int tcap = vcap*2; + vcap = nPolyVerts+nPolyVerts/2; + tcap = vcap*2; dmesh.nverts = 0; dmesh.verts = new float[vcap*3]; @@ -882,7 +890,7 @@ bool rcBuildPolyMeshDetail(const rcPolyMesh& mesh, const rcCompactHeightfield& c delete [] bounds; delete [] poly; - rcTimeVal endTime = rcGetPerformanceTimer(); + endTime = rcGetPerformanceTimer(); if (rcGetBuildTimes()) rcGetBuildTimes()->buildDetailMesh += rcGetDeltaTimeUsec(startTime, endTime); diff --git a/source/blender/editors/util/navmesh_conversion.cpp b/source/blender/editors/util/navmesh_conversion.cpp index 2068d17435c..255e3387ab2 100644 --- a/source/blender/editors/util/navmesh_conversion.cpp +++ b/source/blender/editors/util/navmesh_conversion.cpp @@ -146,7 +146,6 @@ bool buildPolygonsByDetailedMeshes(const int vertsPerPoly, const int npolys, const float* verts, const unsigned short* dtris, const int* dtrisToPolysMap) { - bool res = false; int capacity = vertsPerPoly; unsigned short* newPoly = new unsigned short[capacity]; memset(newPoly, 0xff, sizeof(unsigned short)*capacity); @@ -268,7 +267,6 @@ bool buildPolygonsByDetailedMeshes(const int vertsPerPoly, const int npolys, } } } - res = true; returnLabel: delete newPoly; @@ -280,8 +278,13 @@ struct SortContext const int* recastData; const int* trisToFacesMap; }; -static int compareByData(void* data, const void * a, const void * b){ - SortContext* context = (SortContext*)data; +#if defined(_MSC_VER) +static int compareByData(const void* data, void * a, void * b) +#else +static int compareByData(const void * a, const void * b, void* data) +#endif +{ + const SortContext* context = (const SortContext*)data; return ( context->recastData[context->trisToFacesMap[*(int*)a]] - context->recastData[context->trisToFacesMap[*(int*)b]] ); } @@ -307,8 +310,11 @@ bool buildNavMeshData(const int nverts, const float* verts, SortContext context; context.recastData = recastData; context.trisToFacesMap = trisToFacesMap; +#if defined(_MSC_VER) qsort_s(trisMapping, ntris, sizeof(int), compareByData, &context); - +#else + qsort_r(trisMapping, ntris, sizeof(int), compareByData, &context); +#endif //search first valid triangle - triangle of convex polygon int validTriStart = -1; for (int i=0; i< ntris; i++) diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index be44b87d48e..5f20432d6f8 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -445,6 +445,19 @@ typedef struct RecastData typedef struct GameData { + /* standalone player */ + struct GameFraming framing; + short fullscreen, xplay, yplay, freqplay; + short depth, attrib, rt1, rt2; + + /* stereo/dome mode */ + struct GameDome dome; + short stereoflag, stereomode; + short pad2, pad3; + float eyeseparation, pad1; + RecastData recastData; + + /* physics (it was in world)*/ float gravity; /*Gravitation constant for the game world*/ @@ -463,19 +476,6 @@ typedef struct GameData { short ticrate, maxlogicstep, physubstep, maxphystep; short obstacleSimulation; float levelHeight; - - - /* standalone player */ - struct GameFraming framing; - short fullscreen, xplay, yplay, freqplay; - short depth, attrib, rt1, rt2; - - /* stereo/dome mode */ - struct GameDome dome; - short stereoflag, stereomode; - short pad2, pad3; - float eyeseparation, pad1; - RecastData recastData; } GameData; #define STEREO_NOSTEREO 1 diff --git a/source/blender/python/intern/gpu.c b/source/blender/python/intern/gpu.c index 8d705e44bb8..334bb1f725a 100644 --- a/source/blender/python/intern/gpu.c +++ b/source/blender/python/intern/gpu.c @@ -147,7 +147,6 @@ static PyObject* GPU_export_shader(PyObject* UNUSED(self), PyObject *args, PyObj PyObject* pymat; PyObject* as_pointer; PyObject* pointer; - PyObject* noargs; PyObject* result; PyObject* dict; PyObject* val; @@ -170,9 +169,7 @@ static PyObject* GPU_export_shader(PyObject* UNUSED(self), PyObject *args, PyObj (as_pointer = PyObject_GetAttrString(pyscene, "as_pointer")) != NULL && PyCallable_Check(as_pointer)) { // must be a scene object - noargs = PyTuple_New(0); - pointer = PyObject_CallObject(as_pointer, noargs); - Py_DECREF(noargs); + pointer = PyObject_CallObject(as_pointer, NULL); if (!pointer) { PyErr_SetString(PyExc_SystemError, "scene.as_pointer() failed"); return NULL; @@ -192,9 +189,7 @@ static PyObject* GPU_export_shader(PyObject* UNUSED(self), PyObject *args, PyObj (as_pointer = PyObject_GetAttrString(pymat, "as_pointer")) != NULL && PyCallable_Check(as_pointer)) { // must be a material object - noargs = PyTuple_New(0); - pointer = PyObject_CallObject(as_pointer, noargs); - Py_DECREF(noargs); + pointer = PyObject_CallObject(as_pointer, NULL); if (!pointer) { PyErr_SetString(PyExc_SystemError, "scene.as_pointer() failed"); return NULL; diff --git a/source/gameengine/Ketsji/KX_NavMeshObject.cpp b/source/gameengine/Ketsji/KX_NavMeshObject.cpp index a474ee984c5..293fc6eaa08 100644 --- a/source/gameengine/Ketsji/KX_NavMeshObject.cpp +++ b/source/gameengine/Ketsji/KX_NavMeshObject.cpp @@ -282,7 +282,7 @@ bool KX_NavMeshObject::BuildNavMesh() if (GetMeshCount()==0) { - printf("Can't find mesh for navmesh object: %s \n", m_name); + printf("Can't find mesh for navmesh object: %s \n", m_name.ReadPtr()); return false; } @@ -294,7 +294,7 @@ bool KX_NavMeshObject::BuildNavMesh() dmeshes, dvertices, ndvertsuniq, dtris, ndtris, vertsPerPoly ) || vertsPerPoly<3) { - printf("Can't build navigation mesh data for object:%s \n", m_name); + printf("Can't build navigation mesh data for object:%s \n", m_name.ReadPtr()); return false; } |