aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShocker <shocker@freakz.ro>2011-06-28 23:19:54 +0300
committerShocker <shocker@freakz.ro>2011-06-28 23:19:54 +0300
commit9e58c6e7533787fc0a5f6431855ab379b8c8b92a (patch)
tree1b80339a8030f5e0c1ccb3089ef5d017ee0e906a /src
parent6a59d7ddc198627cda4e0c41c883b74b30d73378 (diff)
Core/Maps: Allow multi-threaded updates for all instances of a map, should increase performance
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Maps/MapInstanced.cpp5
-rwxr-xr-xsrc/server/game/Maps/MapManager.h2
2 files changed, 6 insertions, 1 deletions
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