Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/recastnavigation/recast-capi.cpp')
-rw-r--r--extern/recastnavigation/recast-capi.cpp133
1 files changed, 121 insertions, 12 deletions
diff --git a/extern/recastnavigation/recast-capi.cpp b/extern/recastnavigation/recast-capi.cpp
index 38c14118156..1163265722b 100644
--- a/extern/recastnavigation/recast-capi.cpp
+++ b/extern/recastnavigation/recast-capi.cpp
@@ -68,17 +68,41 @@ int recast_createHeightfield(struct recast_heightfield *hf, int width, int heigh
}
void recast_markWalkableTriangles(const float walkableSlopeAngle,const float *verts, int nv,
- const int *tris, int nt, unsigned char *flags)
+ const int *tris, int nt, unsigned char *areas)
{
INIT_SCTX();
- rcMarkWalkableTriangles(sctx, walkableSlopeAngle, verts, nv, tris, nt, flags);
+ rcMarkWalkableTriangles(sctx, walkableSlopeAngle, verts, nv, tris, nt, areas);
}
-void recast_rasterizeTriangles(const float *verts, int nv, const int *tris,
- const unsigned char *flags, int nt, struct recast_heightfield *solid)
+void recast_clearUnwalkableTriangles(const float walkableSlopeAngle, const float* verts, int nv,
+ const int* tris, int nt, unsigned char* areas)
{
INIT_SCTX();
- rcRasterizeTriangles(sctx, verts, nv, tris, flags, nt, *(rcHeightfield *) solid);
+ rcClearUnwalkableTriangles(sctx, walkableSlopeAngle, verts, nv, tris, nt, areas);
+}
+
+int recast_addSpan(struct recast_heightfield *hf, const int x, const int y,
+ const unsigned short smin, const unsigned short smax,
+ const unsigned char area, const int flagMergeThr)
+{
+ INIT_SCTX();
+ return rcAddSpan(sctx, *(rcHeightfield *) hf, x, y, smin, smax, area, flagMergeThr);
+}
+
+int recast_rasterizeTriangle(const float *v0, const float *v1, const float *v2,
+ const unsigned char area, struct recast_heightfield *solid,
+ const int flagMergeThr)
+{
+ INIT_SCTX();
+ return rcRasterizeTriangle(sctx, v0, v1, v2, area, *(rcHeightfield *) solid, flagMergeThr);
+}
+
+int recast_rasterizeTriangles(const float *verts, const int nv, const int *tris,
+ const unsigned char *areas, const int nt, struct recast_heightfield *solid,
+ const int flagMergeThr)
+{
+ INIT_SCTX();
+ return rcRasterizeTriangles(sctx, verts, nv, tris, areas, nt, *(rcHeightfield *) solid, flagMergeThr);
}
void recast_filterLedgeSpans(const int walkableHeight, const int walkableClimb,
@@ -100,6 +124,22 @@ void recast_filterLowHangingWalkableObstacles(const int walkableClimb, struct re
rcFilterLowHangingWalkableObstacles(sctx, walkableClimb, *(rcHeightfield *) solid);
}
+int recast_getHeightFieldSpanCount(struct recast_heightfield *hf)
+{
+ INIT_SCTX();
+ return rcGetHeightFieldSpanCount(sctx, *(rcHeightfield *) hf);
+}
+
+struct recast_heightfieldLayerSet *recast_newHeightfieldLayerSet(void)
+{
+ return (struct recast_heightfieldLayerSet *) rcAllocHeightfieldLayerSet();
+}
+
+void recast_destroyHeightfieldLayerSet(struct recast_heightfieldLayerSet *lset)
+{
+ rcFreeHeightfieldLayerSet( (rcHeightfieldLayerSet *) lset);
+}
+
struct recast_compactHeightfield *recast_newCompactHeightfield(void)
{
return (struct recast_compactHeightfield *) rcAllocCompactHeightfield();
@@ -124,18 +164,68 @@ int recast_erodeWalkableArea(int radius, struct recast_compactHeightfield *chf)
return rcErodeWalkableArea(sctx, radius, *(rcCompactHeightfield *) chf);
}
+int recast_medianFilterWalkableArea(struct recast_compactHeightfield *chf)
+{
+ INIT_SCTX();
+ return rcMedianFilterWalkableArea(sctx, *(rcCompactHeightfield *) chf);
+}
+
+void recast_markBoxArea(const float *bmin, const float *bmax, unsigned char areaId,
+ struct recast_compactHeightfield *chf)
+{
+ INIT_SCTX();
+ rcMarkBoxArea(sctx, bmin, bmax, areaId, *(rcCompactHeightfield *) chf);
+}
+
+void recast_markConvexPolyArea(const float* verts, const int nverts,
+ const float hmin, const float hmax, unsigned char areaId,
+ struct recast_compactHeightfield *chf)
+{
+ INIT_SCTX();
+ rcMarkConvexPolyArea(sctx, verts, nverts, hmin, hmax, areaId, *(rcCompactHeightfield *) chf);
+}
+
+int recast_offsetPoly(const float* verts, const int nverts,
+ const float offset, float *outVerts, const int maxOutVerts)
+{
+ return rcOffsetPoly(verts, nverts, offset, outVerts, maxOutVerts);
+}
+
+void recast_markCylinderArea(const float* pos, const float r, const float h,
+ unsigned char areaId, struct recast_compactHeightfield *chf)
+{
+ INIT_SCTX();
+ rcMarkCylinderArea(sctx, pos, r, h, areaId, *(rcCompactHeightfield *) chf);
+}
+
int recast_buildDistanceField(struct recast_compactHeightfield *chf)
{
INIT_SCTX();
return rcBuildDistanceField(sctx, *(rcCompactHeightfield *) chf);
}
-int recast_buildRegions(struct recast_compactHeightfield *chf, int borderSize,
- int minRegionSize, int mergeRegionSize)
+int recast_buildRegions(struct recast_compactHeightfield *chf,
+ const int borderSize, const int minRegionArea, const int mergeRegionArea)
{
INIT_SCTX();
return rcBuildRegions(sctx, *(rcCompactHeightfield *) chf, borderSize,
- minRegionSize, mergeRegionSize);
+ minRegionArea, mergeRegionArea);
+}
+
+int recast_buildLayerRegions(struct recast_compactHeightfield *chf,
+ const int borderSize, const int minRegionArea)
+{
+ INIT_SCTX();
+ return rcBuildLayerRegions(sctx, *(rcCompactHeightfield *) chf, borderSize,
+ minRegionArea);
+}
+
+int recast_buildRegionsMonotone(struct recast_compactHeightfield *chf,
+ const int borderSize, const int minRegionArea, const int mergeRegionArea)
+{
+ INIT_SCTX();
+ return rcBuildRegionsMonotone(sctx, *(rcCompactHeightfield *) chf, borderSize,
+ minRegionArea, mergeRegionArea);
}
struct recast_contourSet *recast_newContourSet(void)
@@ -149,10 +239,11 @@ void recast_destroyContourSet(struct recast_contourSet *contourSet)
}
int recast_buildContours(struct recast_compactHeightfield *chf,
- const float maxError, const int maxEdgeLen, struct recast_contourSet *cset)
+ const float maxError, const int maxEdgeLen, struct recast_contourSet *cset,
+ const int buildFlags)
{
INIT_SCTX();
- return rcBuildContours(sctx, *(rcCompactHeightfield *) chf, maxError, maxEdgeLen, *(rcContourSet *) cset);
+ return rcBuildContours(sctx, *(rcCompactHeightfield *) chf, maxError, maxEdgeLen, *(rcContourSet *) cset, buildFlags);
}
struct recast_polyMesh *recast_newPolyMesh(void)
@@ -165,10 +256,22 @@ void recast_destroyPolyMesh(struct recast_polyMesh *polyMesh)
rcFreePolyMesh((rcPolyMesh *) polyMesh);
}
-int recast_buildPolyMesh(struct recast_contourSet *cset, int nvp, struct recast_polyMesh *mesh)
+int recast_buildPolyMesh(struct recast_contourSet *cset, const int nvp, struct recast_polyMesh *mesh)
+{
+ INIT_SCTX();
+ return rcBuildPolyMesh(sctx, *(rcContourSet *) cset, nvp, *(rcPolyMesh *) mesh);
+}
+
+int recast_mergePolyMeshes(struct recast_polyMesh **meshes, const int nmeshes, struct recast_polyMesh *mesh)
{
INIT_SCTX();
- return rcBuildPolyMesh(sctx, *(rcContourSet *) cset, nvp, * (rcPolyMesh *) mesh);
+ return rcMergePolyMeshes(sctx, (rcPolyMesh **) meshes, nmeshes, *(rcPolyMesh *) mesh);
+}
+
+int recast_copyPolyMesh(const struct recast_polyMesh *src, struct recast_polyMesh *dst)
+{
+ INIT_SCTX();
+ return rcCopyPolyMesh(sctx, *(const rcPolyMesh *) src, *(rcPolyMesh *) dst);
}
unsigned short *recast_polyMeshGetVerts(struct recast_polyMesh *mesh, int *nverts)
@@ -240,6 +343,12 @@ int recast_buildPolyMeshDetail(const struct recast_polyMesh *mesh, const struct
sampleDist, sampleMaxError, *(rcPolyMeshDetail *) dmesh);
}
+int recast_mergePolyMeshDetails(struct recast_polyMeshDetail **meshes, const int nmeshes, struct recast_polyMeshDetail *mesh)
+{
+ INIT_SCTX();
+ return rcMergePolyMeshDetails(sctx, (rcPolyMeshDetail **) meshes, nmeshes, *(rcPolyMeshDetail *) mesh);
+}
+
float *recast_polyMeshDetailGetVerts(struct recast_polyMeshDetail *mesh, int *nverts)
{
rcPolyMeshDetail *dmesh = (rcPolyMeshDetail *)mesh;