refactor: rename for unity3d

This commit is contained in:
ikpil 2023-09-21 23:36:55 +09:00
parent 25bc69f2e4
commit 087582c42e
21 changed files with 159 additions and 159 deletions

View File

@ -387,7 +387,7 @@ public class RecastDemo : IRecastDemoChannel
new OffMeshConnectionSampleTool(), new OffMeshConnectionSampleTool(),
new ConvexVolumeSampleTool(), new ConvexVolumeSampleTool(),
new CrowdSampleTool(), new CrowdSampleTool(),
new CrowdProfilingSampleTool(), new CrowdAgentProfilingSampleTool(),
new JumpLinkBuilderSampleTool(), new JumpLinkBuilderSampleTool(),
new DynamicUpdateSampleTool() new DynamicUpdateSampleTool()
); );

View File

@ -33,17 +33,17 @@ using static DotRecast.Recast.Demo.Draw.DebugDraw;
namespace DotRecast.Recast.Demo.Tools; namespace DotRecast.Recast.Demo.Tools;
public class CrowdProfilingSampleTool : ISampleTool public class CrowdAgentProfilingSampleTool : ISampleTool
{ {
private static readonly ILogger Logger = Log.ForContext<CrowdProfilingSampleTool>(); private static readonly ILogger Logger = Log.ForContext<CrowdAgentProfilingSampleTool>();
private DemoSample _sample; private DemoSample _sample;
private DtNavMesh m_nav; private DtNavMesh m_nav;
private readonly RcCrowdProfilingTool _tool; private readonly RcCrowdAgentProfilingTool _tool;
public CrowdProfilingSampleTool() public CrowdAgentProfilingSampleTool()
{ {
_tool = new(); _tool = new();
} }
@ -139,19 +139,19 @@ public class CrowdProfilingSampleTool : ISampleTool
foreach (DtCrowdAgent ag in crowd.GetActiveAgents()) foreach (DtCrowdAgent ag in crowd.GetActiveAgents())
{ {
CrowdAgentData crowAgentData = (CrowdAgentData)ag.option.userData; RcCrowdAgentData crowAgentData = (RcCrowdAgentData)ag.option.userData;
float height = ag.option.height; float height = ag.option.height;
float radius = ag.option.radius; float radius = ag.option.radius;
RcVec3f pos = ag.npos; RcVec3f pos = ag.npos;
int col = DuRGBA(220, 220, 220, 128); int col = DuRGBA(220, 220, 220, 128);
if (crowAgentData.type == CrowdAgentType.TRAVELLER) if (crowAgentData.type == RcCrowdAgentType.TRAVELLER)
{ {
col = DuRGBA(100, 160, 100, 128); col = DuRGBA(100, 160, 100, 128);
} }
if (crowAgentData.type == CrowdAgentType.VILLAGER) if (crowAgentData.type == RcCrowdAgentType.VILLAGER)
{ {
col = DuRGBA(120, 80, 160, 128); col = DuRGBA(120, 80, 160, 128);
} }

View File

@ -44,8 +44,8 @@ public class CrowdSampleTool : ISampleTool
private DtNavMesh m_nav; private DtNavMesh m_nav;
private CrowdToolMode m_mode = CrowdToolMode.CREATE; private RcCrowdToolMode m_mode = RcCrowdToolMode.CREATE;
private int m_modeIdx = CrowdToolMode.CREATE.Idx; private int m_modeIdx = RcCrowdToolMode.CREATE.Idx;
private int _expandSelectedDebugDraw = 1; private int _expandSelectedDebugDraw = 1;
private bool _showCorners = true; private bool _showCorners = true;
@ -71,16 +71,16 @@ public class CrowdSampleTool : ISampleTool
{ {
ImGui.Text($"Crowd Tool Mode"); ImGui.Text($"Crowd Tool Mode");
ImGui.Separator(); ImGui.Separator();
CrowdToolMode previousToolMode = m_mode; RcCrowdToolMode previousToolMode = m_mode;
ImGui.RadioButton(CrowdToolMode.CREATE.Label, ref m_modeIdx, CrowdToolMode.CREATE.Idx); ImGui.RadioButton(RcCrowdToolMode.CREATE.Label, ref m_modeIdx, RcCrowdToolMode.CREATE.Idx);
ImGui.RadioButton(CrowdToolMode.MOVE_TARGET.Label, ref m_modeIdx, CrowdToolMode.MOVE_TARGET.Idx); ImGui.RadioButton(RcCrowdToolMode.MOVE_TARGET.Label, ref m_modeIdx, RcCrowdToolMode.MOVE_TARGET.Idx);
ImGui.RadioButton(CrowdToolMode.SELECT.Label, ref m_modeIdx, CrowdToolMode.SELECT.Idx); ImGui.RadioButton(RcCrowdToolMode.SELECT.Label, ref m_modeIdx, RcCrowdToolMode.SELECT.Idx);
ImGui.RadioButton(CrowdToolMode.TOGGLE_POLYS.Label, ref m_modeIdx, CrowdToolMode.TOGGLE_POLYS.Idx); ImGui.RadioButton(RcCrowdToolMode.TOGGLE_POLYS.Label, ref m_modeIdx, RcCrowdToolMode.TOGGLE_POLYS.Idx);
ImGui.NewLine(); ImGui.NewLine();
if (previousToolMode.Idx != m_modeIdx) if (previousToolMode.Idx != m_modeIdx)
{ {
m_mode = CrowdToolMode.Values[m_modeIdx]; m_mode = RcCrowdToolMode.Values[m_modeIdx];
} }
var crowdCfg = _tool.GetCrowdConfig(); var crowdCfg = _tool.GetCrowdConfig();
@ -219,18 +219,18 @@ public class CrowdSampleTool : ISampleTool
// Trail // Trail
foreach (DtCrowdAgent ag in crowd.GetActiveAgents()) foreach (DtCrowdAgent ag in crowd.GetActiveAgents())
{ {
CrowdAgentTrail trail = agentTrails[ag.idx]; RcCrowdAgentTrail trail = agentTrails[ag.idx];
RcVec3f pos = ag.npos; RcVec3f pos = ag.npos;
dd.Begin(LINES, 3.0f); dd.Begin(LINES, 3.0f);
RcVec3f prev = new RcVec3f(); RcVec3f prev = new RcVec3f();
float preva = 1; float preva = 1;
prev = pos; prev = pos;
for (int j = 0; j < CrowdAgentTrail.AGENT_MAX_TRAIL - 1; ++j) for (int j = 0; j < RcCrowdAgentTrail.AGENT_MAX_TRAIL - 1; ++j)
{ {
int idx = (trail.htrail + CrowdAgentTrail.AGENT_MAX_TRAIL - j) % CrowdAgentTrail.AGENT_MAX_TRAIL; int idx = (trail.htrail + RcCrowdAgentTrail.AGENT_MAX_TRAIL - j) % RcCrowdAgentTrail.AGENT_MAX_TRAIL;
int v = idx * 3; int v = idx * 3;
float a = 1 - j / (float)CrowdAgentTrail.AGENT_MAX_TRAIL; float a = 1 - j / (float)RcCrowdAgentTrail.AGENT_MAX_TRAIL;
dd.Vertex(prev.x, prev.y + 0.1f, prev.z, DuRGBA(0, 0, 0, (int)(128 * preva))); dd.Vertex(prev.x, prev.y + 0.1f, prev.z, DuRGBA(0, 0, 0, (int)(128 * preva)));
dd.Vertex(trail.trail[v], trail.trail[v + 1] + 0.1f, trail.trail[v + 2], DuRGBA(0, 0, 0, (int)(128 * a))); dd.Vertex(trail.trail[v], trail.trail[v + 1] + 0.1f, trail.trail[v + 2], DuRGBA(0, 0, 0, (int)(128 * a)));
preva = a; preva = a;
@ -480,7 +480,7 @@ public class CrowdSampleTool : ISampleTool
return; return;
} }
if (m_mode == CrowdToolMode.CREATE) if (m_mode == RcCrowdToolMode.CREATE)
{ {
if (shift) if (shift)
{ {
@ -498,17 +498,17 @@ public class CrowdSampleTool : ISampleTool
_tool.AddAgent(p, settings.agentRadius, settings.agentHeight, settings.agentMaxAcceleration, settings.agentMaxSpeed); _tool.AddAgent(p, settings.agentRadius, settings.agentHeight, settings.agentMaxAcceleration, settings.agentMaxSpeed);
} }
} }
else if (m_mode == CrowdToolMode.MOVE_TARGET) else if (m_mode == RcCrowdToolMode.MOVE_TARGET)
{ {
_tool.SetMoveTarget(p, shift); _tool.SetMoveTarget(p, shift);
} }
else if (m_mode == CrowdToolMode.SELECT) else if (m_mode == RcCrowdToolMode.SELECT)
{ {
// Highlight // Highlight
DtCrowdAgent ahit = _tool.HitTestAgents(s, p); DtCrowdAgent ahit = _tool.HitTestAgents(s, p);
_tool.HighlightAgent(ahit); _tool.HighlightAgent(ahit);
} }
else if (m_mode == CrowdToolMode.TOGGLE_POLYS) else if (m_mode == RcCrowdToolMode.TOGGLE_POLYS)
{ {
DtNavMesh nav = _sample.GetNavMesh(); DtNavMesh nav = _sample.GetNavMesh();
DtNavMeshQuery navquery = _sample.GetNavMeshQuery(); DtNavMeshQuery navquery = _sample.GetNavMeshQuery();

View File

@ -44,7 +44,7 @@ public class DynamicUpdateSampleTool : ISampleTool
private DemoSample _sample; private DemoSample _sample;
private readonly RcDynamicUpdateTool _tool; private readonly RcDynamicUpdateTool _tool;
private DynamicUpdateToolMode mode = DynamicUpdateToolMode.BUILD; private RcDynamicUpdateToolMode mode = RcDynamicUpdateToolMode.BUILD;
private float cellSize = 0.3f; private float cellSize = 0.3f;
// build config // build config
@ -75,7 +75,7 @@ public class DynamicUpdateSampleTool : ISampleTool
private long buildTime; private long buildTime;
private long raycastTime; private long raycastTime;
private DynamicColliderShape colliderShape = DynamicColliderShape.SPHERE; private RcDynamicColliderShape colliderShape = RcDynamicColliderShape.SPHERE;
private readonly TaskFactory executor; private readonly TaskFactory executor;
@ -101,20 +101,20 @@ public class DynamicUpdateSampleTool : ISampleTool
ImGui.Text($"Dynamic Update Tool Modes"); ImGui.Text($"Dynamic Update Tool Modes");
ImGui.Separator(); ImGui.Separator();
ImGui.RadioButton(DynamicUpdateToolMode.BUILD.Label, ref prevModeIdx, DynamicUpdateToolMode.BUILD.Idx); ImGui.RadioButton(RcDynamicUpdateToolMode.BUILD.Label, ref prevModeIdx, RcDynamicUpdateToolMode.BUILD.Idx);
ImGui.RadioButton(DynamicUpdateToolMode.COLLIDERS.Label, ref prevModeIdx, DynamicUpdateToolMode.COLLIDERS.Idx); ImGui.RadioButton(RcDynamicUpdateToolMode.COLLIDERS.Label, ref prevModeIdx, RcDynamicUpdateToolMode.COLLIDERS.Idx);
ImGui.RadioButton(DynamicUpdateToolMode.RAYCAST.Label, ref prevModeIdx, DynamicUpdateToolMode.RAYCAST.Idx); ImGui.RadioButton(RcDynamicUpdateToolMode.RAYCAST.Label, ref prevModeIdx, RcDynamicUpdateToolMode.RAYCAST.Idx);
ImGui.NewLine(); ImGui.NewLine();
if (prevModeIdx != mode.Idx) if (prevModeIdx != mode.Idx)
{ {
mode = DynamicUpdateToolMode.Values[prevModeIdx]; mode = RcDynamicUpdateToolMode.Values[prevModeIdx];
} }
ImGui.Text($"Selected mode - {mode.Label}"); ImGui.Text($"Selected mode - {mode.Label}");
ImGui.Separator(); ImGui.Separator();
if (mode == DynamicUpdateToolMode.BUILD) if (mode == RcDynamicUpdateToolMode.BUILD)
{ {
var loadVoxelPopupStrId = "Load Voxels Popup"; var loadVoxelPopupStrId = "Load Voxels Popup";
bool isLoadVoxelPopup = true; bool isLoadVoxelPopup = true;
@ -224,30 +224,30 @@ public class DynamicUpdateSampleTool : ISampleTool
} }
} }
if (mode == DynamicUpdateToolMode.COLLIDERS) if (mode == RcDynamicUpdateToolMode.COLLIDERS)
{ {
var prevColliderShape = (int)colliderShape; var prevColliderShape = (int)colliderShape;
ImGui.Text("Colliders"); ImGui.Text("Colliders");
ImGui.Separator(); ImGui.Separator();
ImGui.Checkbox("Show", ref showColliders); ImGui.Checkbox("Show", ref showColliders);
ImGui.RadioButton("Sphere", ref prevColliderShape, (int)DynamicColliderShape.SPHERE); ImGui.RadioButton("Sphere", ref prevColliderShape, (int)RcDynamicColliderShape.SPHERE);
ImGui.RadioButton("Capsule", ref prevColliderShape, (int)DynamicColliderShape.CAPSULE); ImGui.RadioButton("Capsule", ref prevColliderShape, (int)RcDynamicColliderShape.CAPSULE);
ImGui.RadioButton("Box", ref prevColliderShape, (int)DynamicColliderShape.BOX); ImGui.RadioButton("Box", ref prevColliderShape, (int)RcDynamicColliderShape.BOX);
ImGui.RadioButton("Cylinder", ref prevColliderShape, (int)DynamicColliderShape.CYLINDER); ImGui.RadioButton("Cylinder", ref prevColliderShape, (int)RcDynamicColliderShape.CYLINDER);
ImGui.RadioButton("Composite", ref prevColliderShape, (int)DynamicColliderShape.COMPOSITE); ImGui.RadioButton("Composite", ref prevColliderShape, (int)RcDynamicColliderShape.COMPOSITE);
ImGui.RadioButton("Convex Trimesh", ref prevColliderShape, (int)DynamicColliderShape.CONVEX); ImGui.RadioButton("Convex Trimesh", ref prevColliderShape, (int)RcDynamicColliderShape.CONVEX);
ImGui.RadioButton("Trimesh Bridge", ref prevColliderShape, (int)DynamicColliderShape.TRIMESH_BRIDGE); ImGui.RadioButton("Trimesh Bridge", ref prevColliderShape, (int)RcDynamicColliderShape.TRIMESH_BRIDGE);
ImGui.RadioButton("Trimesh House", ref prevColliderShape, (int)DynamicColliderShape.TRIMESH_HOUSE); ImGui.RadioButton("Trimesh House", ref prevColliderShape, (int)RcDynamicColliderShape.TRIMESH_HOUSE);
ImGui.NewLine(); ImGui.NewLine();
if (prevColliderShape != (int)colliderShape) if (prevColliderShape != (int)colliderShape)
{ {
colliderShape = (DynamicColliderShape)prevColliderShape; colliderShape = (RcDynamicColliderShape)prevColliderShape;
} }
} }
if (mode == DynamicUpdateToolMode.RAYCAST) if (mode == RcDynamicUpdateToolMode.RAYCAST)
{ {
ImGui.Text($"Raycast Time: {raycastTime} ms"); ImGui.Text($"Raycast Time: {raycastTime} ms");
ImGui.Separator(); ImGui.Separator();
@ -276,7 +276,7 @@ public class DynamicUpdateSampleTool : ISampleTool
public void HandleRender(NavMeshRenderer renderer) public void HandleRender(NavMeshRenderer renderer)
{ {
if (mode == DynamicUpdateToolMode.COLLIDERS) if (mode == RcDynamicUpdateToolMode.COLLIDERS)
{ {
if (showColliders) if (showColliders)
{ {
@ -287,7 +287,7 @@ public class DynamicUpdateSampleTool : ISampleTool
} }
} }
if (mode == DynamicUpdateToolMode.RAYCAST) if (mode == RcDynamicUpdateToolMode.RAYCAST)
{ {
RecastDebugDraw dd = renderer.GetDebugDraw(); RecastDebugDraw dd = renderer.GetDebugDraw();
int startCol = DuRGBA(128, 25, 0, 192); int startCol = DuRGBA(128, 25, 0, 192);
@ -356,7 +356,7 @@ public class DynamicUpdateSampleTool : ISampleTool
public void HandleClick(RcVec3f s, RcVec3f p, bool shift) public void HandleClick(RcVec3f s, RcVec3f p, bool shift)
{ {
if (mode == DynamicUpdateToolMode.COLLIDERS) if (mode == RcDynamicUpdateToolMode.COLLIDERS)
{ {
if (!shift) if (!shift)
{ {
@ -364,7 +364,7 @@ public class DynamicUpdateSampleTool : ISampleTool
} }
} }
if (mode == DynamicUpdateToolMode.RAYCAST) if (mode == RcDynamicUpdateToolMode.RAYCAST)
{ {
if (shift) if (shift)
{ {
@ -392,7 +392,7 @@ public class DynamicUpdateSampleTool : ISampleTool
public void HandleClickRay(RcVec3f start, RcVec3f dir, bool shift) public void HandleClickRay(RcVec3f start, RcVec3f dir, bool shift)
{ {
if (mode == DynamicUpdateToolMode.COLLIDERS) if (mode == RcDynamicUpdateToolMode.COLLIDERS)
{ {
if (shift) if (shift)
{ {

View File

@ -1,6 +1,6 @@
using DotRecast.Core; using DotRecast.Core;
using static DotRecast.Core.RcMath; using static DotRecast.Core.RcMath;
using static DotRecast.Recast.Toolset.Gizmos.GizmoHelper; using static DotRecast.Recast.Toolset.Gizmos.RcGizmoHelper;
namespace DotRecast.Recast.Toolset.Gizmos namespace DotRecast.Recast.Toolset.Gizmos
{ {

View File

@ -1,6 +1,6 @@
using DotRecast.Core; using DotRecast.Core;
using static DotRecast.Core.RcMath; using static DotRecast.Core.RcMath;
using static DotRecast.Recast.Toolset.Gizmos.GizmoHelper; using static DotRecast.Recast.Toolset.Gizmos.RcGizmoHelper;
namespace DotRecast.Recast.Toolset.Gizmos namespace DotRecast.Recast.Toolset.Gizmos

View File

@ -2,7 +2,7 @@
namespace DotRecast.Recast.Toolset.Gizmos namespace DotRecast.Recast.Toolset.Gizmos
{ {
public static class GizmoFactory public static class RcGizmoFactory
{ {
public static RcBoxGizmo Box(RcVec3f center, RcVec3f[] halfEdges) public static RcBoxGizmo Box(RcVec3f center, RcVec3f[] halfEdges)
{ {

View File

@ -2,7 +2,7 @@ using System;
namespace DotRecast.Recast.Toolset.Gizmos namespace DotRecast.Recast.Toolset.Gizmos
{ {
public static class GizmoHelper public static class RcGizmoHelper
{ {
private static readonly int SEGMENTS = 16; private static readonly int SEGMENTS = 16;
private static readonly int RINGS = 8; private static readonly int RINGS = 8;

View File

@ -1,5 +1,5 @@
using DotRecast.Core; using DotRecast.Core;
using static DotRecast.Recast.Toolset.Gizmos.GizmoHelper; using static DotRecast.Recast.Toolset.Gizmos.RcGizmoHelper;
namespace DotRecast.Recast.Toolset.Gizmos namespace DotRecast.Recast.Toolset.Gizmos

View File

@ -1,28 +0,0 @@
using DotRecast.Core;
namespace DotRecast.Recast.Toolset.Tools
{
public class CrowdToolMode
{
public static readonly CrowdToolMode CREATE = new CrowdToolMode(0, "Create Agents");
public static readonly CrowdToolMode MOVE_TARGET = new CrowdToolMode(1, "Move Target");
public static readonly CrowdToolMode SELECT = new CrowdToolMode(2, "Select Agent");
public static readonly CrowdToolMode TOGGLE_POLYS = new CrowdToolMode(3, "Toggle Polys");
public static readonly RcImmutableArray<CrowdToolMode> Values = RcImmutableArray.Create(
CREATE,
MOVE_TARGET,
SELECT,
TOGGLE_POLYS
);
public int Idx { get; }
public string Label { get; }
private CrowdToolMode(int idx, string label)
{
Idx = idx;
Label = label;
}
}
}

View File

@ -1,24 +0,0 @@
using DotRecast.Core;
namespace DotRecast.Recast.Toolset.Tools
{
public class DynamicUpdateToolMode
{
public static readonly DynamicUpdateToolMode BUILD = new DynamicUpdateToolMode(0, "Build");
public static readonly DynamicUpdateToolMode COLLIDERS = new DynamicUpdateToolMode(1, "Colliders");
public static readonly DynamicUpdateToolMode RAYCAST = new DynamicUpdateToolMode(2, "Raycast");
public static readonly RcImmutableArray<DynamicUpdateToolMode> Values = RcImmutableArray.Create(
BUILD, COLLIDERS, RAYCAST
);
public int Idx { get; }
public string Label { get; }
private DynamicUpdateToolMode(int idx, string label)
{
Idx = idx;
Label = label;
}
}
}

View File

@ -2,12 +2,12 @@
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public class CrowdAgentData public class RcCrowdAgentData
{ {
public readonly CrowdAgentType type; public readonly RcCrowdAgentType type;
public readonly RcVec3f home = new RcVec3f(); public readonly RcVec3f home = new RcVec3f();
public CrowdAgentData(CrowdAgentType type, RcVec3f home) public RcCrowdAgentData(RcCrowdAgentType type, RcVec3f home)
{ {
this.type = type; this.type = type;
this.home = home; this.home = home;

View File

@ -7,9 +7,9 @@ using DotRecast.Recast.Toolset.Builder;
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public class RcCrowdProfilingTool : IRcToolable public class RcCrowdAgentProfilingTool : IRcToolable
{ {
private CrowdProfilingToolConfig _cfg; private RcCrowdAgentProfilingToolConfig _cfg;
private DtCrowdConfig _crowdCfg; private DtCrowdConfig _crowdCfg;
private DtCrowd crowd; private DtCrowd crowd;
@ -21,19 +21,19 @@ namespace DotRecast.Recast.Toolset.Tools
private readonly List<DtPolyPoint> _polyPoints; private readonly List<DtPolyPoint> _polyPoints;
private long crowdUpdateTime; private long crowdUpdateTime;
public RcCrowdProfilingTool() public RcCrowdAgentProfilingTool()
{ {
_cfg = new CrowdProfilingToolConfig(); _cfg = new RcCrowdAgentProfilingToolConfig();
_agCfg = new DtCrowdAgentConfig(); _agCfg = new DtCrowdAgentConfig();
_polyPoints = new List<DtPolyPoint>(); _polyPoints = new List<DtPolyPoint>();
} }
public string GetName() public string GetName()
{ {
return "Crowd Profiling"; return "Crowd Agent Profiling";
} }
public CrowdProfilingToolConfig GetToolConfig() public RcCrowdAgentProfilingToolConfig GetToolConfig()
{ {
return _cfg; return _cfg;
} }
@ -170,7 +170,7 @@ namespace DotRecast.Recast.Toolset.Tools
for (int i = 0; i < _cfg.agents; i++) for (int i = 0; i < _cfg.agents; i++)
{ {
float tr = rnd.Next(); float tr = rnd.Next();
CrowdAgentType type = CrowdAgentType.MOB; RcCrowdAgentType type = RcCrowdAgentType.MOB;
float mobsPcnt = _cfg.percentMobs / 100f; float mobsPcnt = _cfg.percentMobs / 100f;
if (tr > mobsPcnt) if (tr > mobsPcnt)
{ {
@ -178,11 +178,11 @@ namespace DotRecast.Recast.Toolset.Tools
float travellerPcnt = _cfg.percentTravellers / 100f; float travellerPcnt = _cfg.percentTravellers / 100f;
if (tr > travellerPcnt) if (tr > travellerPcnt)
{ {
type = CrowdAgentType.VILLAGER; type = RcCrowdAgentType.VILLAGER;
} }
else else
{ {
type = CrowdAgentType.TRAVELLER; type = RcCrowdAgentType.TRAVELLER;
} }
} }
@ -190,13 +190,13 @@ namespace DotRecast.Recast.Toolset.Tools
var randomPt = RcVec3f.Zero; var randomPt = RcVec3f.Zero;
switch (type) switch (type)
{ {
case CrowdAgentType.MOB: case RcCrowdAgentType.MOB:
status = GetMobPosition(navquery, filter, out randomPt); status = GetMobPosition(navquery, filter, out randomPt);
break; break;
case CrowdAgentType.VILLAGER: case RcCrowdAgentType.VILLAGER:
status = GetVillagerPosition(navquery, filter, out randomPt); status = GetVillagerPosition(navquery, filter, out randomPt);
break; break;
case CrowdAgentType.TRAVELLER: case RcCrowdAgentType.TRAVELLER:
status = GetVillagerPosition(navquery, filter, out randomPt); status = GetVillagerPosition(navquery, filter, out randomPt);
break; break;
} }
@ -227,16 +227,16 @@ namespace DotRecast.Recast.Toolset.Tools
{ {
if (NeedsNewTarget(ag)) if (NeedsNewTarget(ag))
{ {
CrowdAgentData crowAgentData = (CrowdAgentData)ag.option.userData; RcCrowdAgentData crowAgentData = (RcCrowdAgentData)ag.option.userData;
switch (crowAgentData.type) switch (crowAgentData.type)
{ {
case CrowdAgentType.MOB: case RcCrowdAgentType.MOB:
MoveMob(navquery, filter, ag, crowAgentData); MoveMob(navquery, filter, ag, crowAgentData);
break; break;
case CrowdAgentType.VILLAGER: case RcCrowdAgentType.VILLAGER:
MoveVillager(navquery, filter, ag, crowAgentData); MoveVillager(navquery, filter, ag, crowAgentData);
break; break;
case CrowdAgentType.TRAVELLER: case RcCrowdAgentType.TRAVELLER:
MoveTraveller(navquery, filter, ag, crowAgentData); MoveTraveller(navquery, filter, ag, crowAgentData);
break; break;
} }
@ -247,7 +247,7 @@ namespace DotRecast.Recast.Toolset.Tools
crowdUpdateTime = (endTime - startTime) / TimeSpan.TicksPerMillisecond; crowdUpdateTime = (endTime - startTime) / TimeSpan.TicksPerMillisecond;
} }
private void MoveMob(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, CrowdAgentData crowAgentData) private void MoveMob(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, RcCrowdAgentData crowAgentData)
{ {
// Move somewhere // Move somewhere
var status = navquery.FindNearestPoly(ag.npos, crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _); var status = navquery.FindNearestPoly(ag.npos, crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _);
@ -262,7 +262,7 @@ namespace DotRecast.Recast.Toolset.Tools
} }
} }
private void MoveVillager(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, CrowdAgentData crowAgentData) private void MoveVillager(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, RcCrowdAgentData crowAgentData)
{ {
// Move somewhere close // Move somewhere close
var status = navquery.FindNearestPoly(ag.npos, crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _); var status = navquery.FindNearestPoly(ag.npos, crowd.GetQueryExtents(), filter, out var nearestRef, out var nearestPt, out var _);
@ -277,7 +277,7 @@ namespace DotRecast.Recast.Toolset.Tools
} }
} }
private void MoveTraveller(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, CrowdAgentData crowAgentData) private void MoveTraveller(DtNavMeshQuery navquery, IDtQueryFilter filter, DtCrowdAgent ag, RcCrowdAgentData crowAgentData)
{ {
// Move to another zone // Move to another zone
List<DtPolyPoint> potentialTargets = new List<DtPolyPoint>(); List<DtPolyPoint> potentialTargets = new List<DtPolyPoint>();
@ -315,10 +315,10 @@ namespace DotRecast.Recast.Toolset.Tools
return false; return false;
} }
private DtCrowdAgent AddAgent(RcVec3f p, CrowdAgentType type, float agentRadius, float agentHeight, float agentMaxAcceleration, float agentMaxSpeed) private DtCrowdAgent AddAgent(RcVec3f p, RcCrowdAgentType type, float agentRadius, float agentHeight, float agentMaxAcceleration, float agentMaxSpeed)
{ {
DtCrowdAgentParams ap = GetAgentParams(agentRadius, agentHeight, agentMaxAcceleration, agentMaxSpeed); DtCrowdAgentParams ap = GetAgentParams(agentRadius, agentHeight, agentMaxAcceleration, agentMaxSpeed);
ap.userData = new CrowdAgentData(type, p); ap.userData = new RcCrowdAgentData(type, p);
return crowd.AddAgent(p, ap); return crowd.AddAgent(p, ap);
} }

View File

@ -1,6 +1,6 @@
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public class CrowdProfilingToolConfig public class RcCrowdAgentProfilingToolConfig
{ {
public int expandSimOptions = 1; public int expandSimOptions = 1;
public int expandCrowdOptions = 1; public int expandCrowdOptions = 1;

View File

@ -1,6 +1,6 @@
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public class CrowdAgentTrail public class RcCrowdAgentTrail
{ {
public const int AGENT_MAX_TRAIL = 64; public const int AGENT_MAX_TRAIL = 64;
public float[] trail = new float[AGENT_MAX_TRAIL * 3]; public float[] trail = new float[AGENT_MAX_TRAIL * 3];

View File

@ -1,6 +1,6 @@
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public enum CrowdAgentType public enum RcCrowdAgentType
{ {
VILLAGER, VILLAGER,
TRAVELLER, TRAVELLER,

View File

@ -14,7 +14,7 @@ namespace DotRecast.Recast.Toolset.Tools
private DtCrowd crowd; private DtCrowd crowd;
private readonly DtCrowdAgentDebugInfo _agentDebug; private readonly DtCrowdAgentDebugInfo _agentDebug;
private long crowdUpdateTime; private long crowdUpdateTime;
private readonly Dictionary<long, CrowdAgentTrail> _trails; private readonly Dictionary<long, RcCrowdAgentTrail> _trails;
private long _moveTargetRef; private long _moveTargetRef;
private RcVec3f _moveTargetPos; private RcVec3f _moveTargetPos;
@ -23,7 +23,7 @@ namespace DotRecast.Recast.Toolset.Tools
_agCfg = new DtCrowdAgentConfig(); _agCfg = new DtCrowdAgentConfig();
_agentDebug = new DtCrowdAgentDebugInfo(); _agentDebug = new DtCrowdAgentDebugInfo();
_agentDebug.vod = new DtObstacleAvoidanceDebugData(2048); _agentDebug.vod = new DtObstacleAvoidanceDebugData(2048);
_trails = new Dictionary<long, CrowdAgentTrail>(); _trails = new Dictionary<long, RcCrowdAgentTrail>();
} }
@ -42,7 +42,7 @@ namespace DotRecast.Recast.Toolset.Tools
return _agentDebug; return _agentDebug;
} }
public Dictionary<long, CrowdAgentTrail> GetCrowdAgentTrails() public Dictionary<long, RcCrowdAgentTrail> GetCrowdAgentTrails()
{ {
return _trails; return _trails;
} }
@ -147,9 +147,9 @@ namespace DotRecast.Recast.Toolset.Tools
// Update agent trails // Update agent trails
foreach (DtCrowdAgent ag in crowd.GetActiveAgents()) foreach (DtCrowdAgent ag in crowd.GetActiveAgents())
{ {
CrowdAgentTrail trail = _trails[ag.idx]; RcCrowdAgentTrail trail = _trails[ag.idx];
// Update agent movement trail. // Update agent movement trail.
trail.htrail = (trail.htrail + 1) % CrowdAgentTrail.AGENT_MAX_TRAIL; trail.htrail = (trail.htrail + 1) % RcCrowdAgentTrail.AGENT_MAX_TRAIL;
trail.trail[trail.htrail * 3] = ag.npos.x; trail.trail[trail.htrail * 3] = ag.npos.x;
trail.trail[trail.htrail * 3 + 1] = ag.npos.y; trail.trail[trail.htrail * 3 + 1] = ag.npos.y;
trail.trail[trail.htrail * 3 + 2] = ag.npos.z; trail.trail[trail.htrail * 3 + 2] = ag.npos.z;
@ -182,11 +182,11 @@ namespace DotRecast.Recast.Toolset.Tools
// Init trail // Init trail
if (!_trails.TryGetValue(ag.idx, out var trail)) if (!_trails.TryGetValue(ag.idx, out var trail))
{ {
trail = new CrowdAgentTrail(); trail = new RcCrowdAgentTrail();
_trails.Add(ag.idx, trail); _trails.Add(ag.idx, trail);
} }
for (int i = 0; i < CrowdAgentTrail.AGENT_MAX_TRAIL; ++i) for (int i = 0; i < RcCrowdAgentTrail.AGENT_MAX_TRAIL; ++i)
{ {
trail.trail[i * 3] = p.x; trail.trail[i * 3] = p.x;
trail.trail[i * 3 + 1] = p.y; trail.trail[i * 3 + 1] = p.y;

View File

@ -0,0 +1,28 @@
using DotRecast.Core;
namespace DotRecast.Recast.Toolset.Tools
{
public class RcCrowdToolMode
{
public static readonly RcCrowdToolMode CREATE = new RcCrowdToolMode(0, "Create Agents");
public static readonly RcCrowdToolMode MOVE_TARGET = new RcCrowdToolMode(1, "Move Target");
public static readonly RcCrowdToolMode SELECT = new RcCrowdToolMode(2, "Select Agent");
public static readonly RcCrowdToolMode TOGGLE_POLYS = new RcCrowdToolMode(3, "Toggle Polys");
public static readonly RcImmutableArray<RcCrowdToolMode> Values = RcImmutableArray.Create(
CREATE,
MOVE_TARGET,
SELECT,
TOGGLE_POLYS
);
public int Idx { get; }
public string Label { get; }
private RcCrowdToolMode(int idx, string label)
{
Idx = idx;
Label = label;
}
}
}

View File

@ -1,6 +1,6 @@
namespace DotRecast.Recast.Toolset.Tools namespace DotRecast.Recast.Toolset.Tools
{ {
public enum DynamicColliderShape public enum RcDynamicColliderShape
{ {
SPHERE, SPHERE,
CAPSULE, CAPSULE,

View File

@ -88,7 +88,7 @@ namespace DotRecast.Recast.Toolset.Tools
} }
public RcGizmo AddShape(DynamicColliderShape colliderShape, RcVec3f p) public RcGizmo AddShape(RcDynamicColliderShape colliderShape, RcVec3f p)
{ {
if (dynaMesh == null) if (dynaMesh == null)
{ {
@ -97,35 +97,35 @@ namespace DotRecast.Recast.Toolset.Tools
RcGizmo colliderWithGizmo = null; RcGizmo colliderWithGizmo = null;
{ {
if (colliderShape == DynamicColliderShape.SPHERE) if (colliderShape == RcDynamicColliderShape.SPHERE)
{ {
colliderWithGizmo = SphereCollider(p, dynaMesh.config.walkableClimb); colliderWithGizmo = SphereCollider(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.CAPSULE) else if (colliderShape == RcDynamicColliderShape.CAPSULE)
{ {
colliderWithGizmo = CapsuleCollider(p, dynaMesh.config.walkableClimb); colliderWithGizmo = CapsuleCollider(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.BOX) else if (colliderShape == RcDynamicColliderShape.BOX)
{ {
colliderWithGizmo = BoxCollider(p, dynaMesh.config.walkableClimb); colliderWithGizmo = BoxCollider(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.CYLINDER) else if (colliderShape == RcDynamicColliderShape.CYLINDER)
{ {
colliderWithGizmo = CylinderCollider(p, dynaMesh.config.walkableClimb); colliderWithGizmo = CylinderCollider(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.COMPOSITE) else if (colliderShape == RcDynamicColliderShape.COMPOSITE)
{ {
colliderWithGizmo = CompositeCollider(p, dynaMesh.config.walkableClimb); colliderWithGizmo = CompositeCollider(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.TRIMESH_BRIDGE) else if (colliderShape == RcDynamicColliderShape.TRIMESH_BRIDGE)
{ {
colliderWithGizmo = TrimeshBridge(p, dynaMesh.config.walkableClimb); colliderWithGizmo = TrimeshBridge(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.TRIMESH_HOUSE) else if (colliderShape == RcDynamicColliderShape.TRIMESH_HOUSE)
{ {
colliderWithGizmo = TrimeshHouse(p, dynaMesh.config.walkableClimb); colliderWithGizmo = TrimeshHouse(p, dynaMesh.config.walkableClimb);
} }
else if (colliderShape == DynamicColliderShape.CONVEX) else if (colliderShape == RcDynamicColliderShape.CONVEX)
{ {
colliderWithGizmo = ConvexTrimesh(p, dynaMesh.config.walkableClimb); colliderWithGizmo = ConvexTrimesh(p, dynaMesh.config.walkableClimb);
} }
@ -169,7 +169,7 @@ namespace DotRecast.Recast.Toolset.Tools
{ {
float radius = 1 + (float)random.NextDouble() * 10; float radius = 1 + (float)random.NextDouble() * 10;
var collider = new DtSphereCollider(p, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb); var collider = new DtSphereCollider(p, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
var gizmo = GizmoFactory.Sphere(p, radius); var gizmo = RcGizmoFactory.Sphere(p, radius);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -190,7 +190,7 @@ namespace DotRecast.Recast.Toolset.Tools
RcVec3f start = RcVec3f.Of(p.x, p.y, p.z); RcVec3f start = RcVec3f.Of(p.x, p.y, p.z);
RcVec3f end = RcVec3f.Of(p.x + a.x, p.y + a.y, p.z + a.z); RcVec3f end = RcVec3f.Of(p.x + a.x, p.y + a.y, p.z + a.z);
var collider = new DtCapsuleCollider(start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb); var collider = new DtCapsuleCollider(start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
var gizmo = GizmoFactory.Capsule(start, end, radius); var gizmo = RcGizmoFactory.Capsule(start, end, radius);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -205,7 +205,7 @@ namespace DotRecast.Recast.Toolset.Tools
RcVec3f up = RcVec3f.Of((1f - 2 * (float)random.NextDouble()), 0.01f + (float)random.NextDouble(), (1f - 2 * (float)random.NextDouble())); RcVec3f up = RcVec3f.Of((1f - 2 * (float)random.NextDouble()), 0.01f + (float)random.NextDouble(), (1f - 2 * (float)random.NextDouble()));
RcVec3f[] halfEdges = Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(up, forward, extent); RcVec3f[] halfEdges = Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(up, forward, extent);
var collider = new DtBoxCollider(p, halfEdges, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb); var collider = new DtBoxCollider(p, halfEdges, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
var gizmo = GizmoFactory.Box(p, halfEdges); var gizmo = RcGizmoFactory.Box(p, halfEdges);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -221,7 +221,7 @@ namespace DotRecast.Recast.Toolset.Tools
RcVec3f start = RcVec3f.Of(p.x, p.y, p.z); RcVec3f start = RcVec3f.Of(p.x, p.y, p.z);
RcVec3f end = RcVec3f.Of(p.x + a.x, p.y + a.y, p.z + a.z); RcVec3f end = RcVec3f.Of(p.x + a.x, p.y + a.y, p.z + a.z);
var collider = new DtCylinderCollider(start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb); var collider = new DtCylinderCollider(start, end, radius, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_WATER, walkableClimb);
var gizmo = GizmoFactory.Cylinder(start, end, radius); var gizmo = RcGizmoFactory.Cylinder(start, end, radius);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -258,11 +258,11 @@ namespace DotRecast.Recast.Toolset.Tools
DtSphereCollider crown = new DtSphereCollider(crownCenter, 4f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_GRASS, DtSphereCollider crown = new DtSphereCollider(crownCenter, 4f, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_GRASS,
walkableClimb); walkableClimb);
DtCompositeCollider collider = new DtCompositeCollider(@base, roof, trunk, crown); DtCompositeCollider collider = new DtCompositeCollider(@base, roof, trunk, crown);
IRcGizmoMeshFilter baseGizmo = GizmoFactory.Box(baseCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(baseUp, forward, baseExtent)); IRcGizmoMeshFilter baseGizmo = RcGizmoFactory.Box(baseCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(baseUp, forward, baseExtent));
IRcGizmoMeshFilter roofGizmo = GizmoFactory.Box(roofCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(roofUp, forward, roofExtent)); IRcGizmoMeshFilter roofGizmo = RcGizmoFactory.Box(roofCenter, Detour.Dynamic.Colliders.DtBoxCollider.GetHalfEdges(roofUp, forward, roofExtent));
IRcGizmoMeshFilter trunkGizmo = GizmoFactory.Capsule(trunkStart, trunkEnd, 0.5f); IRcGizmoMeshFilter trunkGizmo = RcGizmoFactory.Capsule(trunkStart, trunkEnd, 0.5f);
IRcGizmoMeshFilter crownGizmo = GizmoFactory.Sphere(crownCenter, 4f); IRcGizmoMeshFilter crownGizmo = RcGizmoFactory.Sphere(crownCenter, 4f);
IRcGizmoMeshFilter gizmo = GizmoFactory.Composite(baseGizmo, roofGizmo, trunkGizmo, crownGizmo); IRcGizmoMeshFilter gizmo = RcGizmoFactory.Composite(baseGizmo, roofGizmo, trunkGizmo, crownGizmo);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -281,7 +281,7 @@ namespace DotRecast.Recast.Toolset.Tools
float[] verts = TransformVertices(p, convexGeom, 360); float[] verts = TransformVertices(p, convexGeom, 360);
var collider = new DtConvexTrimeshCollider(verts, convexGeom.faces, var collider = new DtConvexTrimeshCollider(verts, convexGeom.faces,
SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, walkableClimb * 10); SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, walkableClimb * 10);
var gizmo = GizmoFactory.Trimesh(verts, convexGeom.faces); var gizmo = RcGizmoFactory.Trimesh(verts, convexGeom.faces);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }
@ -290,7 +290,7 @@ namespace DotRecast.Recast.Toolset.Tools
float[] verts = TransformVertices(p, geom, 0); float[] verts = TransformVertices(p, geom, 0);
var collider = new DtTrimeshCollider(verts, geom.faces, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD, var collider = new DtTrimeshCollider(verts, geom.faces, SampleAreaModifications.SAMPLE_POLYAREA_TYPE_ROAD,
walkableClimb * 10); walkableClimb * 10);
var gizmo = GizmoFactory.Trimesh(verts, geom.faces); var gizmo = RcGizmoFactory.Trimesh(verts, geom.faces);
return new RcGizmo(collider, gizmo); return new RcGizmo(collider, gizmo);
} }

View File

@ -0,0 +1,24 @@
using DotRecast.Core;
namespace DotRecast.Recast.Toolset.Tools
{
public class RcDynamicUpdateToolMode
{
public static readonly RcDynamicUpdateToolMode BUILD = new RcDynamicUpdateToolMode(0, "Build");
public static readonly RcDynamicUpdateToolMode COLLIDERS = new RcDynamicUpdateToolMode(1, "Colliders");
public static readonly RcDynamicUpdateToolMode RAYCAST = new RcDynamicUpdateToolMode(2, "Raycast");
public static readonly RcImmutableArray<RcDynamicUpdateToolMode> Values = RcImmutableArray.Create(
BUILD, COLLIDERS, RAYCAST
);
public int Idx { get; }
public string Label { get; }
private RcDynamicUpdateToolMode(int idx, string label)
{
Idx = idx;
Label = label;
}
}
}