summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorworktycho <work.tycho@gmail.com>2015-03-15 13:16:37 +0100
committerworktycho <work.tycho@gmail.com>2015-03-15 13:16:37 +0100
commit83531707f3219490eb8ad1e2a7308ff7d4c5fde1 (patch)
treeb379005ad92e48bb696b40fa1b05a35034498710
parentMerge pull request #1734 from mc-server/pistons (diff)
parentUse thread_local in cFastRandom (diff)
downloadcuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar.gz
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar.bz2
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar.lz
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar.xz
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.tar.zst
cuberite-83531707f3219490eb8ad1e2a7308ff7d4c5fde1.zip
-rw-r--r--src/Blocks/BlockDirt.h6
-rw-r--r--src/FastRandom.cpp34
-rw-r--r--src/FastRandom.h6
-rw-r--r--src/Map.cpp4
-rw-r--r--src/MobSpawner.cpp9
5 files changed, 16 insertions, 43 deletions
diff --git a/src/Blocks/BlockDirt.h b/src/Blocks/BlockDirt.h
index 12bca92dd..cc0d845e4 100644
--- a/src/Blocks/BlockDirt.h
+++ b/src/Blocks/BlockDirt.h
@@ -69,9 +69,9 @@ public:
cFastRandom rand;
for (int i = 0; i < 2; i++) // Pick two blocks to grow to
{
- int OfsX = rand.NextInt(3, a_RelX) - 1; // [-1 .. 1]
- int OfsY = rand.NextInt(5, a_RelY) - 3; // [-3 .. 1]
- int OfsZ = rand.NextInt(3, a_RelZ) - 1; // [-1 .. 1]
+ int OfsX = rand.NextInt(3) - 1; // [-1 .. 1]
+ int OfsY = rand.NextInt(5) - 3; // [-3 .. 1]
+ int OfsZ = rand.NextInt(3) - 1; // [-1 .. 1]
BLOCKTYPE DestBlock;
NIBBLETYPE DestMeta;
diff --git a/src/FastRandom.cpp b/src/FastRandom.cpp
index 515dc25ea..737b13535 100644
--- a/src/FastRandom.cpp
+++ b/src/FastRandom.cpp
@@ -6,6 +6,12 @@
#include "Globals.h"
#include "FastRandom.h"
+#ifdef _WIN32
+ #define thread_local __declspec(thread)
+#endif
+
+thread_local unsigned int m_Counter = 0;
+
@@ -86,7 +92,7 @@ public:
cFastRandom::cFastRandom(void) :
- m_LinearRand(static_cast<unsigned>(std::chrono::system_clock::now().time_since_epoch().count()))
+ m_LinearRand(m_Counter++)
{
}
@@ -105,18 +111,6 @@ int cFastRandom::NextInt(int a_Range)
-int cFastRandom::NextInt(int a_Range, int a_Salt)
-{
- m_LinearRand.seed(a_Salt);
- std::uniform_int_distribution<> distribution(0, a_Range - 1);
- return distribution(m_LinearRand);
-}
-
-
-
-
-
-
float cFastRandom::NextFloat(float a_Range)
{
std::uniform_real_distribution<float> distribution(0, a_Range);
@@ -128,18 +122,6 @@ float cFastRandom::NextFloat(float a_Range)
-float cFastRandom::NextFloat(float a_Range, int a_Salt)
-{
- m_LinearRand.seed(a_Salt);
- std::uniform_real_distribution<float> distribution(0, a_Range);
- return distribution(m_LinearRand);
-}
-
-
-
-
-
-
int cFastRandom::GenerateRandomInteger(int a_Begin, int a_End)
{
std::uniform_int_distribution<> distribution(a_Begin, a_End);
@@ -154,7 +136,7 @@ int cFastRandom::GenerateRandomInteger(int a_Begin, int a_End)
// MTRand:
MTRand::MTRand() :
- m_MersenneRand(static_cast<unsigned>(std::chrono::system_clock::now().time_since_epoch().count()))
+ m_MersenneRand(m_Counter++)
{
}
diff --git a/src/FastRandom.h b/src/FastRandom.h
index 64a087c97..30395a293 100644
--- a/src/FastRandom.h
+++ b/src/FastRandom.h
@@ -36,16 +36,10 @@ public:
/** Returns a random int in the range [0 .. a_Range - 1]; a_Range must be less than 1M */
int NextInt(int a_Range);
-
- /** Returns a random int in the range [0 .. a_Range - 1]; a_Range must be less than 1M; a_Salt is additional source of randomness */
- int NextInt(int a_Range, int a_Salt);
/** Returns a random float in the range [0 .. a_Range]; a_Range must be less than 1M */
float NextFloat(float a_Range);
- /** Returns a random float in the range [0 .. a_Range]; a_Range must be less than 1M; a_Salt is additional source of randomness */
- float NextFloat(float a_Range, int a_Salt);
-
/** Returns a random float between 0 and 1. */
float NextFloat(void) { return NextFloat(1); }
diff --git a/src/Map.cpp b/src/Map.cpp
index fbde00cf7..5e57cc8ec 100644
--- a/src/Map.cpp
+++ b/src/Map.cpp
@@ -66,10 +66,8 @@ void cMapDecorator::Update(void)
{
cFastRandom Random;
- Int64 WorldAge = m_Player->GetWorld()->GetWorldAge();
-
// TODO 2014-02-19 xdot: Refine
- m_Rot = Random.NextInt(16, (int) WorldAge);
+ m_Rot = Random.NextInt(16);
}
else
{
diff --git a/src/MobSpawner.cpp b/src/MobSpawner.cpp
index 541135996..7a5238fd8 100644
--- a/src/MobSpawner.cpp
+++ b/src/MobSpawner.cpp
@@ -110,8 +110,7 @@ eMonsterType cMobSpawner::ChooseMobType(EMCSBiome a_Biome)
if (allowedMobsSize > 0)
{
std::set<eMonsterType>::iterator itr = allowedMobs.begin();
- static int Counter = 0;
- int iRandom = m_Random.NextInt((int)allowedMobsSize, Counter++);
+ int iRandom = m_Random.NextInt((int)allowedMobsSize);
for (int i = 0; i < iRandom; i++)
{
@@ -187,7 +186,7 @@ bool cMobSpawner::CanSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_R
(BlockBelow == E_BLOCK_GRASS) || (BlockBelow == E_BLOCK_LEAVES) || (BlockBelow == E_BLOCK_NEW_LEAVES)
) &&
(a_RelY >= 62) &&
- (Random.NextInt(3, a_Biome) != 0)
+ (Random.NextInt(3) != 0)
);
}
@@ -248,7 +247,7 @@ bool cMobSpawner::CanSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_R
(!cBlockInfo::IsTransparent(BlockBelow)) &&
(SkyLight <= 7) &&
(BlockLight <= 7) &&
- (Random.NextInt(2, a_Biome) == 0)
+ (Random.NextInt(2) == 0)
);
}
@@ -272,7 +271,7 @@ bool cMobSpawner::CanSpawnHere(cChunk * a_Chunk, int a_RelX, int a_RelY, int a_R
(TargetBlock == E_BLOCK_AIR) &&
(BlockAbove == E_BLOCK_AIR) &&
(!cBlockInfo::IsTransparent(BlockBelow)) &&
- (Random.NextInt(20, a_Biome) == 0)
+ (Random.NextInt(20) == 0)
);
}