Update trigger visibility when doing gm on/off

Fix by liberate

--HG--
branch : trunk
This commit is contained in:
click
2010-04-21 23:14:37 +02:00
parent 3a826ecfee
commit 12950d1c16
3 changed files with 25 additions and 0 deletions
+2
View File
@@ -228,6 +228,7 @@ bool ChatHandler::HandleGMCommand(const char* args)
{
m_session->GetPlayer()->SetGameMaster(true);
m_session->SendNotification(LANG_GM_ON);
m_session->GetPlayer()->UpdateTriggerVisibility();
#ifdef _DEBUG_VMAPS
VMAP::IVMapManager *vMapManager = VMAP::VMapFactory::createOrGetVMapManager();
vMapManager->processCommand("stoplog");
@@ -239,6 +240,7 @@ bool ChatHandler::HandleGMCommand(const char* args)
{
m_session->GetPlayer()->SetGameMaster(false);
m_session->SendNotification(LANG_GM_OFF);
m_session->GetPlayer()->UpdateTriggerVisibility();
#ifdef _DEBUG_VMAPS
VMAP::IVMapManager *vMapManager = VMAP::VMapFactory::createOrGetVMapManager();
vMapManager->processCommand("startlog");
+22
View File
@@ -20325,6 +20325,28 @@ void Player::UpdateVisibilityOf(WorldObject* target)
}
}
void Player::UpdateTriggerVisibility()
{
if (m_clientGUIDs.empty())
return;
UpdateData udata;
WorldPacket packet;
for (ClientGUIDs::iterator itr=m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr)
{
if (IS_CREATURE_GUID(*itr))
{
Creature *obj = IsInWorld() ? GetMap()->GetCreature(*itr) : NULL;
if (!obj || !obj->isTrigger())
continue;
obj->BuildCreateUpdateBlockForPlayer(&udata,this);
}
}
udata.BuildPacket(&packet);
GetSession()->SendPacket(&packet);
}
void Player::SendInitialVisiblePackets(Unit* target)
{
SendAurasForTarget(target);
+1
View File
@@ -2215,6 +2215,7 @@ class Player : public Unit, public GridObject<Player>
void UpdateObjectVisibility(bool forced = true);
void UpdateVisibilityForPlayer();
void UpdateVisibilityOf(WorldObject* target);
void UpdateTriggerVisibility();
template<class T>
void UpdateVisibilityOf(T* target, UpdateData& data, std::set<Unit*>& visibleNow);