forked from bit/DotRecastNetSim
C3 style
This commit is contained in:
parent
1cd8acfa8c
commit
e13dc0ac70
|
@ -26,47 +26,47 @@ namespace DotRecast.Recast.Demo.Builder;
|
||||||
|
|
||||||
public class SoloNavMeshBuilder : AbstractNavMeshBuilder
|
public class SoloNavMeshBuilder : AbstractNavMeshBuilder
|
||||||
{
|
{
|
||||||
public Tuple<IList<RecastBuilderResult>, NavMesh> Build(DemoInputGeomProvider m_geom, PartitionType m_partitionType,
|
public Tuple<IList<RecastBuilderResult>, NavMesh> Build(DemoInputGeomProvider geom, PartitionType partitionType,
|
||||||
float m_cellSize, float m_cellHeight, float m_agentHeight, float m_agentRadius, float m_agentMaxClimb,
|
float cellSize, float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb,
|
||||||
float m_agentMaxSlope, int m_regionMinSize, int m_regionMergeSize, float m_edgeMaxLen, float m_edgeMaxError,
|
float agentMaxSlope, int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError,
|
||||||
int m_vertsPerPoly, float m_detailSampleDist, float m_detailSampleMaxError, bool filterLowHangingObstacles,
|
int vertsPerPoly, float detailSampleDist, float detailSampleMaxError, bool filterLowHangingObstacles,
|
||||||
bool filterLedgeSpans, bool filterWalkableLowHeightSpans)
|
bool filterLedgeSpans, bool filterWalkableLowHeightSpans)
|
||||||
{
|
{
|
||||||
RecastBuilderResult rcResult = BuildRecastResult(m_geom, m_partitionType, m_cellSize, m_cellHeight, m_agentHeight,
|
RecastBuilderResult rcResult = BuildRecastResult(geom, partitionType, cellSize, cellHeight, agentHeight,
|
||||||
m_agentRadius, m_agentMaxClimb, m_agentMaxSlope, m_regionMinSize, m_regionMergeSize, m_edgeMaxLen, m_edgeMaxError,
|
agentRadius, agentMaxClimb, agentMaxSlope, regionMinSize, regionMergeSize, edgeMaxLen, edgeMaxError,
|
||||||
m_vertsPerPoly, m_detailSampleDist, m_detailSampleMaxError, filterLowHangingObstacles, filterLedgeSpans,
|
vertsPerPoly, detailSampleDist, detailSampleMaxError, filterLowHangingObstacles, filterLedgeSpans,
|
||||||
filterWalkableLowHeightSpans);
|
filterWalkableLowHeightSpans);
|
||||||
return Tuple.Create(ImmutableArray.Create(rcResult) as IList<RecastBuilderResult>,
|
return Tuple.Create(ImmutableArray.Create(rcResult) as IList<RecastBuilderResult>,
|
||||||
BuildNavMesh(
|
BuildNavMesh(
|
||||||
BuildMeshData(m_geom, m_cellSize, m_cellHeight, m_agentHeight, m_agentRadius, m_agentMaxClimb, rcResult),
|
BuildMeshData(geom, cellSize, cellHeight, agentHeight, agentRadius, agentMaxClimb, rcResult),
|
||||||
m_vertsPerPoly));
|
vertsPerPoly));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NavMesh BuildNavMesh(MeshData meshData, int m_vertsPerPoly)
|
private NavMesh BuildNavMesh(MeshData meshData, int vertsPerPoly)
|
||||||
{
|
{
|
||||||
return new NavMesh(meshData, m_vertsPerPoly, 0);
|
return new NavMesh(meshData, vertsPerPoly, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RecastBuilderResult BuildRecastResult(DemoInputGeomProvider m_geom, PartitionType m_partitionType, float m_cellSize,
|
private RecastBuilderResult BuildRecastResult(DemoInputGeomProvider geom, PartitionType partitionType, float cellSize,
|
||||||
float m_cellHeight, float m_agentHeight, float m_agentRadius, float m_agentMaxClimb, float m_agentMaxSlope,
|
float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb, float agentMaxSlope,
|
||||||
int m_regionMinSize, int m_regionMergeSize, float m_edgeMaxLen, float m_edgeMaxError, int m_vertsPerPoly,
|
int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError, int vertsPerPoly,
|
||||||
float m_detailSampleDist, float m_detailSampleMaxError, bool filterLowHangingObstacles, bool filterLedgeSpans,
|
float detailSampleDist, float detailSampleMaxError, bool filterLowHangingObstacles, bool filterLedgeSpans,
|
||||||
bool filterWalkableLowHeightSpans)
|
bool filterWalkableLowHeightSpans)
|
||||||
{
|
{
|
||||||
RecastConfig cfg = new RecastConfig(m_partitionType, m_cellSize, m_cellHeight, m_agentMaxSlope, filterLowHangingObstacles,
|
RecastConfig cfg = new RecastConfig(partitionType, cellSize, cellHeight, agentMaxSlope, filterLowHangingObstacles,
|
||||||
filterLedgeSpans, filterWalkableLowHeightSpans, m_agentHeight, m_agentRadius, m_agentMaxClimb, m_regionMinSize,
|
filterLedgeSpans, filterWalkableLowHeightSpans, agentHeight, agentRadius, agentMaxClimb, regionMinSize,
|
||||||
m_regionMergeSize, m_edgeMaxLen, m_edgeMaxError, m_vertsPerPoly, m_detailSampleDist, m_detailSampleMaxError,
|
regionMergeSize, edgeMaxLen, edgeMaxError, vertsPerPoly, detailSampleDist, detailSampleMaxError,
|
||||||
SampleAreaModifications.SAMPLE_AREAMOD_WALKABLE, true);
|
SampleAreaModifications.SAMPLE_AREAMOD_WALKABLE, true);
|
||||||
RecastBuilderConfig bcfg = new RecastBuilderConfig(cfg, m_geom.GetMeshBoundsMin(), m_geom.GetMeshBoundsMax());
|
RecastBuilderConfig bcfg = new RecastBuilderConfig(cfg, geom.GetMeshBoundsMin(), geom.GetMeshBoundsMax());
|
||||||
RecastBuilder rcBuilder = new RecastBuilder();
|
RecastBuilder rcBuilder = new RecastBuilder();
|
||||||
return rcBuilder.Build(m_geom, bcfg);
|
return rcBuilder.Build(geom, bcfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
private MeshData BuildMeshData(DemoInputGeomProvider m_geom, float m_cellSize, float m_cellHeight, float m_agentHeight,
|
private MeshData BuildMeshData(DemoInputGeomProvider geom, float cellSize, float cellHeight, float agentHeight,
|
||||||
float m_agentRadius, float m_agentMaxClimb, RecastBuilderResult rcResult)
|
float agentRadius, float agentMaxClimb, RecastBuilderResult result)
|
||||||
{
|
{
|
||||||
NavMeshDataCreateParams option = GetNavMeshCreateParams(m_geom, m_cellSize, m_cellHeight, m_agentHeight, m_agentRadius,
|
NavMeshDataCreateParams option = GetNavMeshCreateParams(geom, cellSize, cellHeight, agentHeight, agentRadius,
|
||||||
m_agentMaxClimb, rcResult);
|
agentMaxClimb, result);
|
||||||
return UpdateAreaAndFlags(NavMeshBuilder.CreateNavMeshData(option));
|
return UpdateAreaAndFlags(NavMeshBuilder.CreateNavMeshData(option));
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -32,36 +32,36 @@ public class TileNavMeshBuilder : AbstractNavMeshBuilder
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tuple<IList<RecastBuilderResult>, NavMesh> Build(DemoInputGeomProvider m_geom, PartitionType m_partitionType,
|
public Tuple<IList<RecastBuilderResult>, NavMesh> Build(DemoInputGeomProvider geom, PartitionType partitionType,
|
||||||
float m_cellSize, float m_cellHeight, float m_agentHeight, float m_agentRadius, float m_agentMaxClimb,
|
float cellSize, float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb,
|
||||||
float m_agentMaxSlope, int m_regionMinSize, int m_regionMergeSize, float m_edgeMaxLen, float m_edgeMaxError,
|
float agentMaxSlope, int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError,
|
||||||
int m_vertsPerPoly, float m_detailSampleDist, float m_detailSampleMaxError, bool filterLowHangingObstacles,
|
int vertsPerPoly, float detailSampleDist, float detailSampleMaxError, bool filterLowHangingObstacles,
|
||||||
bool filterLedgeSpans, bool filterWalkableLowHeightSpans, int tileSize)
|
bool filterLedgeSpans, bool filterWalkableLowHeightSpans, int tileSize)
|
||||||
{
|
{
|
||||||
List<RecastBuilderResult> rcResult = BuildRecastResult(m_geom, m_partitionType, m_cellSize, m_cellHeight, m_agentHeight,
|
List<RecastBuilderResult> rcResult = BuildRecastResult(geom, partitionType, cellSize, cellHeight, agentHeight,
|
||||||
m_agentRadius, m_agentMaxClimb, m_agentMaxSlope, m_regionMinSize, m_regionMergeSize, m_edgeMaxLen, m_edgeMaxError,
|
agentRadius, agentMaxClimb, agentMaxSlope, regionMinSize, regionMergeSize, edgeMaxLen, edgeMaxError,
|
||||||
m_vertsPerPoly, m_detailSampleDist, m_detailSampleMaxError, filterLowHangingObstacles, filterLedgeSpans,
|
vertsPerPoly, detailSampleDist, detailSampleMaxError, filterLowHangingObstacles, filterLedgeSpans,
|
||||||
filterWalkableLowHeightSpans, tileSize);
|
filterWalkableLowHeightSpans, tileSize);
|
||||||
return Tuple.Create((IList<RecastBuilderResult>)rcResult,
|
return Tuple.Create((IList<RecastBuilderResult>)rcResult,
|
||||||
BuildNavMesh(m_geom,
|
BuildNavMesh(geom,
|
||||||
BuildMeshData(m_geom, m_cellSize, m_cellHeight, m_agentHeight, m_agentRadius, m_agentMaxClimb, rcResult),
|
BuildMeshData(geom, cellSize, cellHeight, agentHeight, agentRadius, agentMaxClimb, rcResult),
|
||||||
m_cellSize, tileSize, m_vertsPerPoly));
|
cellSize, tileSize, vertsPerPoly));
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<RecastBuilderResult> BuildRecastResult(DemoInputGeomProvider m_geom, PartitionType m_partitionType,
|
private List<RecastBuilderResult> BuildRecastResult(DemoInputGeomProvider geom, PartitionType partitionType,
|
||||||
float m_cellSize, float m_cellHeight, float m_agentHeight, float m_agentRadius, float m_agentMaxClimb,
|
float cellSize, float cellHeight, float agentHeight, float agentRadius, float agentMaxClimb,
|
||||||
float m_agentMaxSlope, int m_regionMinSize, int m_regionMergeSize, float m_edgeMaxLen, float m_edgeMaxError,
|
float agentMaxSlope, int regionMinSize, int regionMergeSize, float edgeMaxLen, float edgeMaxError,
|
||||||
int m_vertsPerPoly, float m_detailSampleDist, float m_detailSampleMaxError, bool filterLowHangingObstacles,
|
int vertsPerPoly, float detailSampleDist, float detailSampleMaxError, bool filterLowHangingObstacles,
|
||||||
bool filterLedgeSpans, bool filterWalkableLowHeightSpans, int tileSize)
|
bool filterLedgeSpans, bool filterWalkableLowHeightSpans, int tileSize)
|
||||||
{
|
{
|
||||||
RecastConfig cfg = new RecastConfig(true, tileSize, tileSize, RecastConfig.CalcBorder(m_agentRadius, m_cellSize),
|
RecastConfig cfg = new RecastConfig(true, tileSize, tileSize, RecastConfig.CalcBorder(agentRadius, cellSize),
|
||||||
m_partitionType, m_cellSize, m_cellHeight, m_agentMaxSlope, filterLowHangingObstacles, filterLedgeSpans,
|
partitionType, cellSize, cellHeight, agentMaxSlope, filterLowHangingObstacles, filterLedgeSpans,
|
||||||
filterWalkableLowHeightSpans, m_agentHeight, m_agentRadius, m_agentMaxClimb,
|
filterWalkableLowHeightSpans, agentHeight, agentRadius, agentMaxClimb,
|
||||||
m_regionMinSize * m_regionMinSize * m_cellSize * m_cellSize,
|
regionMinSize * regionMinSize * cellSize * cellSize,
|
||||||
m_regionMergeSize * m_regionMergeSize * m_cellSize * m_cellSize, m_edgeMaxLen, m_edgeMaxError, m_vertsPerPoly,
|
regionMergeSize * regionMergeSize * cellSize * cellSize, edgeMaxLen, edgeMaxError, vertsPerPoly,
|
||||||
true, m_detailSampleDist, m_detailSampleMaxError, SampleAreaModifications.SAMPLE_AREAMOD_WALKABLE);
|
true, detailSampleDist, detailSampleMaxError, SampleAreaModifications.SAMPLE_AREAMOD_WALKABLE);
|
||||||
RecastBuilder rcBuilder = new RecastBuilder();
|
RecastBuilder rcBuilder = new RecastBuilder();
|
||||||
return rcBuilder.BuildTiles(m_geom, cfg, Task.Factory);
|
return rcBuilder.BuildTiles(geom, cfg, Task.Factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
private NavMesh BuildNavMesh(DemoInputGeomProvider geom, List<MeshData> meshData, float cellSize, int tileSize,
|
private NavMesh BuildNavMesh(DemoInputGeomProvider geom, List<MeshData> meshData, float cellSize, int tileSize,
|
||||||
|
@ -112,17 +112,17 @@ public class TileNavMeshBuilder : AbstractNavMeshBuilder
|
||||||
return new int[] { tw, th };
|
return new int[] { tw, th };
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<MeshData> BuildMeshData(DemoInputGeomProvider m_geom, float m_cellSize, float m_cellHeight, float m_agentHeight,
|
private List<MeshData> BuildMeshData(DemoInputGeomProvider geom, float cellSize, float cellHeight, float agentHeight,
|
||||||
float m_agentRadius, float m_agentMaxClimb, List<RecastBuilderResult> rcResult)
|
float agentRadius, float agentMaxClimb, List<RecastBuilderResult> results)
|
||||||
{
|
{
|
||||||
// Add tiles to nav mesh
|
// Add tiles to nav mesh
|
||||||
List<MeshData> meshData = new();
|
List<MeshData> meshData = new();
|
||||||
foreach (RecastBuilderResult result in rcResult)
|
foreach (RecastBuilderResult result in results)
|
||||||
{
|
{
|
||||||
int x = result.tileX;
|
int x = result.tileX;
|
||||||
int z = result.tileZ;
|
int z = result.tileZ;
|
||||||
NavMeshDataCreateParams option = GetNavMeshCreateParams(m_geom, m_cellSize, m_cellHeight, m_agentHeight,
|
NavMeshDataCreateParams option = GetNavMeshCreateParams(geom, cellSize, cellHeight, agentHeight,
|
||||||
m_agentRadius, m_agentMaxClimb, result);
|
agentRadius, agentMaxClimb, result);
|
||||||
option.tileX = x;
|
option.tileX = x;
|
||||||
option.tileZ = z;
|
option.tileZ = z;
|
||||||
MeshData md = NavMeshBuilder.CreateNavMeshData(option);
|
MeshData md = NavMeshBuilder.CreateNavMeshData(option);
|
||||||
|
|
Loading…
Reference in New Issue