From 9e58c6e7533787fc0a5f6431855ab379b8c8b92a Mon Sep 17 00:00:00 2001 From: Shocker Date: Tue, 28 Jun 2011 23:19:54 +0300 Subject: [PATCH] Core/Maps: Allow multi-threaded updates for all instances of a map, should increase performance --- src/server/game/Maps/MapInstanced.cpp | 5 ++++- src/server/game/Maps/MapManager.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp index d3b6ad438bc..d5e363685e0 100755 --- a/src/server/game/Maps/MapInstanced.cpp +++ b/src/server/game/Maps/MapInstanced.cpp @@ -64,7 +64,10 @@ void MapInstanced::Update(const uint32& t) else { // update only here, because it may schedule some bad things before delete - i->second->Update(t); + if (sMapMgr->GetMapUpdater()->activated()) + sMapMgr->GetMapUpdater()->schedule_update(*i->second, t); + else + i->second->Update(t); ++i; } } diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 8ca856cbd6f..068dbe33ae3 100755 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -148,6 +148,8 @@ class MapManager uint32 GetNextInstanceId() { return _nextInstanceId; }; void SetNextInstanceId(uint32 nextInstanceId) { _nextInstanceId = nextInstanceId; }; + MapUpdater * GetMapUpdater() { return &m_updater; } + private: // debugging code, should be deleted some day void checkAndCorrectGridStatesArray(); // just for debugging to find some memory overwrites