build by sample settings

This commit is contained in:
ikpil 2023-07-27 14:29:34 +09:00
parent e6e17d83a2
commit afc515c498
4 changed files with 34 additions and 63 deletions

View File

@ -669,77 +669,21 @@ public class RecastDemo : IRecastDemoChannel
return;
}
var settings = _sample.GetSettings();
var partitioning = settings.partitioning;
var cellSize = settings.cellSize;
var cellHeight = settings.cellHeight;
var agentHeight = settings.agentHeight;
var agentRadius = settings.agentRadius;
var agentMaxClimb = settings.agentMaxClimb;
var agentMaxSlope = settings.agentMaxSlope;
var regionMinSize = settings.minRegionSize;
var regionMergeSize = settings.mergedRegionSize;
var edgeMaxLen = settings.edgeMaxLen;
var edgeMaxError = settings.edgeMaxError;
var vertsPerPoly = settings.vertsPerPoly;
var detailSampleDist = settings.detailSampleDist;
var detailSampleMaxError = settings.detailSampleMaxError;
var filterLowHangingObstacles = settings.filterLowHangingObstacles;
var filterLedgeSpans = settings.filterLedgeSpans;
var filterWalkableLowHeightSpans = settings.filterWalkableLowHeightSpans;
var tileSize = settings.tileSize;
long t = RcFrequency.Ticks;
Logger.Information($"build");
NavMeshBuildResult buildResult;
var settings = _sample.GetSettings();
if (settings.tiled)
{
buildResult = tileNavMeshBuilder.Build(
_sample.GetInputGeom(),
partitioning,
cellSize,
cellHeight,
agentHeight,
agentRadius,
agentMaxClimb,
agentMaxSlope,
regionMinSize,
regionMergeSize,
edgeMaxLen,
edgeMaxError,
vertsPerPoly,
detailSampleDist,
detailSampleMaxError,
filterLowHangingObstacles,
filterLedgeSpans,
filterWalkableLowHeightSpans,
tileSize
);
buildResult = tileNavMeshBuilder.Build(_sample.GetInputGeom(), settings);
}
else
{
buildResult = soloNavMeshBuilder.Build(
_sample.GetInputGeom(),
partitioning,
cellSize,
cellHeight,
agentHeight,
agentRadius,
agentMaxClimb,
agentMaxSlope,
regionMinSize,
regionMergeSize,
edgeMaxLen,
edgeMaxError,
vertsPerPoly,
detailSampleDist,
detailSampleMaxError,
filterLowHangingObstacles,
filterLedgeSpans,
filterWalkableLowHeightSpans
);
buildResult = soloNavMeshBuilder.Build(_sample.GetInputGeom(), settings);
}
_sample.Update(_sample.GetInputGeom(), buildResult.RecastBuilderResults, buildResult.NavMesh);

View File

@ -26,6 +26,17 @@ namespace DotRecast.Recast.DemoTool.Builder
{
public class SoloNavMeshBuilder
{
public NavMeshBuildResult Build(DemoInputGeomProvider geom, SampleSettings settings)
{
return Build(geom,
settings.partitioning, settings.cellSize, settings.cellHeight, settings.agentHeight,
settings.agentRadius, settings.agentMaxClimb, settings.agentMaxSlope,
settings.minRegionSize, settings.mergedRegionSize,
settings.edgeMaxLen, settings.edgeMaxError,
settings.vertsPerPoly, settings.detailSampleDist, settings.detailSampleMaxError,
settings.filterLowHangingObstacles, settings.filterLedgeSpans, settings.filterWalkableLowHeightSpans);
}
public NavMeshBuildResult Build(DemoInputGeomProvider geom, PartitionType partitionType,
float cellSize, float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb,
float agentMaxSlope, int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError,

View File

@ -30,6 +30,18 @@ namespace DotRecast.Recast.DemoTool.Builder
{
}
public NavMeshBuildResult Build(DemoInputGeomProvider geom, SampleSettings settings)
{
return Build(geom,
settings.partitioning, settings.cellSize, settings.cellHeight, settings.agentHeight,
settings.agentRadius, settings.agentMaxClimb, settings.agentMaxSlope,
settings.minRegionSize, settings.mergedRegionSize,
settings.edgeMaxLen, settings.edgeMaxError,
settings.vertsPerPoly, settings.detailSampleDist, settings.detailSampleMaxError,
settings.filterLowHangingObstacles, settings.filterLedgeSpans, settings.filterWalkableLowHeightSpans,
settings.tileSize);
}
public NavMeshBuildResult Build(DemoInputGeomProvider geom, PartitionType partitionType,
float cellSize, float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb,
float agentMaxSlope, int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError,

View File

@ -1,5 +1,6 @@
using DotRecast.Core;
using DotRecast.Detour.TileCache;
using DotRecast.Recast.DemoTool.Builder;
namespace DotRecast.Recast.DemoTool.Tools
{
@ -38,7 +39,10 @@ namespace DotRecast.Recast.DemoTool.Tools
int tx = (int)((pos.x - bmin[0]) / ts);
int ty = (int)((pos.z - bmin[2]) / ts);
var tileRef = navMesh.GetTileRefAt(tx, ty, 0);
// var tnmb = new TileNavMeshBuilder();
// tnmb.BuildRecastResult(geom, settings.partitioning, )
//var tileRef = navMesh.GetTileRefAt(tx, ty, 0);
// navMesh.RemoveTile(tileRef);
}