From 32880153ab76830311d8a1db3a157cd5ac6e5d9c Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Wed, 8 Feb 2012 12:36:54 +0000 Subject: MTRand class is not created in each tick, therefore much improving tick-thread time (now uses ~5 % CPU instead of one full core) git-svn-id: http://mc-server.googlecode.com/svn/trunk@245 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/cWorld.h | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'source/cWorld.h') diff --git a/source/cWorld.h b/source/cWorld.h index c5d036141..e81d3e1df 100644 --- a/source/cWorld.h +++ b/source/cWorld.h @@ -1,3 +1,4 @@ + #pragma once #ifndef _WIN32 @@ -10,6 +11,7 @@ enum ENUM_ITEM_ID; #include "cSimulatorManager.h" #include "ptr_cChunk.h" +#include "MersenneTwister.h" @@ -23,7 +25,6 @@ class cLavaSimulator; class cSandSimulator; class cChunkMap; class cItem; -class cCriticalSection; class cPlayer; class cClientHandle; class cChunk; @@ -159,17 +160,19 @@ public: int GetWeather() { return m_Weather; }; //tolua_export cWorldGenerator* GetWorldGenerator() { return m_WorldGenerator; } + private: + friend class cRoot; + cWorld( const char* a_WorldName ); ~cWorld(); struct sWorldState; sWorldState* m_pState; - - void AddToRemoveEntityQueue( cEntity & a_Entity ); - void RemoveEntity( cEntity* a_Entity ); - void UnloadUnusedChunks(); + + // This random generator is to be used only in the Tick() method, and thus only in the World-Tick-thread (MTRand is not exactly thread-safe) + MTRand m_TickRand; double m_SpawnX; double m_SpawnY; @@ -206,4 +209,15 @@ private: unsigned int m_WorldSeed; int m_Weather; + + void TickWeather(float a_Dt); // Handles weather each tick + + void AddToRemoveEntityQueue( cEntity & a_Entity ); + void RemoveEntity( cEntity* a_Entity ); + void UnloadUnusedChunks(); + }; //tolua_export + + + + -- cgit v1.2.3