move frand

This commit is contained in:
ikpil 2023-04-27 22:36:05 +09:00
parent 4cb6c1cac7
commit 89eb8554d9
5 changed files with 31 additions and 27 deletions

View File

@ -0,0 +1,24 @@
using System;
namespace DotRecast.Core
{
public class FRand
{
private readonly Random r;
public FRand()
{
r = new Random();
}
public FRand(long seed)
{
r = new Random((int)seed); // TODO : 랜덤 시드 확인 필요
}
public float frand()
{
return (float)r.NextDouble();
}
}
}

View File

@ -73,26 +73,6 @@ namespace DotRecast.Detour
m_openList = new NodeQueue(); m_openList = new NodeQueue();
} }
public class FRand
{
private readonly Random r;
public FRand()
{
r = new Random();
}
public FRand(long seed)
{
r = new Random((int)seed); // TODO : 랜덤 시드 확인 필요
}
public float frand()
{
return (float)r.NextDouble();
}
}
/** /**
* Returns random location on navmesh. Polygons are chosen weighted by area. The search runs in linear related to * Returns random location on navmesh. Polygons are chosen weighted by area. The search runs in linear related to
* number of polygon. * number of polygon.

View File

@ -48,7 +48,7 @@ public class CrowdProfilingTool
private Crowd crowd; private Crowd crowd;
private NavMesh navMesh; private NavMesh navMesh;
private CrowdConfig config; private CrowdConfig config;
private NavMeshQuery.FRand rnd; private FRand rnd;
private readonly List<FindRandomPointResult> zones = new(); private readonly List<FindRandomPointResult> zones = new();
private long crowdUpdateTime; private long crowdUpdateTime;
@ -79,7 +79,7 @@ public class CrowdProfilingTool
{ {
if (navMesh != null) if (navMesh != null)
{ {
rnd = new NavMeshQuery.FRand(randomSeed); rnd = new FRand(randomSeed);
createCrowd(); createCrowd();
createZones(); createZones();
NavMeshQuery navquery = new NavMeshQuery(navMesh); NavMeshQuery navquery = new NavMeshQuery(navMesh);

View File

@ -495,7 +495,7 @@ public class TestNavmeshTool : Tool
for (int i = 0; i < 200; i++) for (int i = 0; i < 200; i++)
{ {
Result<FindRandomPointResult> result = m_navQuery.findRandomPointAroundCircle(m_startRef, m_spos, dist, Result<FindRandomPointResult> result = m_navQuery.findRandomPointAroundCircle(m_startRef, m_spos, dist,
m_filter, new NavMeshQuery.FRand(), constraint); m_filter, new FRand(), constraint);
if (result.succeeded()) if (result.succeeded())
{ {
randomPoints.Add(result.result.getRandomPt()); randomPoints.Add(result.result.getRandomPt());

View File

@ -31,7 +31,7 @@ public class RandomPointTest : AbstractDetourTest
[Test] [Test]
public void testRandom() public void testRandom()
{ {
NavMeshQuery.FRand f = new NavMeshQuery.FRand(1); FRand f = new FRand(1);
QueryFilter filter = new DefaultQueryFilter(); QueryFilter filter = new DefaultQueryFilter();
for (int i = 0; i < 1000; i++) for (int i = 0; i < 1000; i++)
{ {
@ -59,7 +59,7 @@ public class RandomPointTest : AbstractDetourTest
[Test] [Test]
public void testRandomAroundCircle() public void testRandomAroundCircle()
{ {
NavMeshQuery.FRand f = new NavMeshQuery.FRand(1); FRand f = new FRand(1);
QueryFilter filter = new DefaultQueryFilter(); QueryFilter filter = new DefaultQueryFilter();
FindRandomPointResult point = query.findRandomPoint(filter, f).result; FindRandomPointResult point = query.findRandomPoint(filter, f).result;
for (int i = 0; i < 1000; i++) for (int i = 0; i < 1000; i++)
@ -90,7 +90,7 @@ public class RandomPointTest : AbstractDetourTest
[Test] [Test]
public void testRandomWithinCircle() public void testRandomWithinCircle()
{ {
NavMeshQuery.FRand f = new NavMeshQuery.FRand(1); FRand f = new FRand(1);
QueryFilter filter = new DefaultQueryFilter(); QueryFilter filter = new DefaultQueryFilter();
FindRandomPointResult point = query.findRandomPoint(filter, f).result; FindRandomPointResult point = query.findRandomPoint(filter, f).result;
float radius = 5f; float radius = 5f;
@ -108,7 +108,7 @@ public class RandomPointTest : AbstractDetourTest
[Test] [Test]
public void testPerformance() public void testPerformance()
{ {
NavMeshQuery.FRand f = new NavMeshQuery.FRand(1); FRand f = new FRand(1);
QueryFilter filter = new DefaultQueryFilter(); QueryFilter filter = new DefaultQueryFilter();
FindRandomPointResult point = query.findRandomPoint(filter, f).result; FindRandomPointResult point = query.findRandomPoint(filter, f).result;
float radius = 5f; float radius = 5f;