Update trigger visibility when doing gm on/off
Fix by liberate --HG-- branch : trunk
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user