本文整理汇总了C++中WorldSession::GetInstance方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldSession::GetInstance方法的具体用法?C++ WorldSession::GetInstance怎么用?C++ WorldSession::GetInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldSession
的用法示例。
在下文中一共展示了WorldSession::GetInstance方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _PerformObjectDuties
void MapMgr::_PerformObjectDuties()
{
++mLoopCounter;
uint32 mstime = getMSTime();
uint32 difftime = mstime - lastUnitUpdate;
if(difftime > 500)
difftime = 500;
// Update creatures.
{
CreatureSet::iterator itr = activeCreatures.begin();
PetStorageMap::iterator it2 = m_PetStorage.begin();
Creature * ptr;
Pet * ptr2;
for(; itr != activeCreatures.end();)
{
ptr = *itr;
++itr;
ptr->Update(difftime);
}
for(; it2 != m_PetStorage.end();)
{
ptr2 = it2->second;
++it2;
ptr2->Update(difftime);
}
}
// Update any events.
eventHolder.Update(difftime);
// Update players.
{
PlayerStorageMap::iterator itr = m_PlayerStorage.begin();
Player* ptr;
for(; itr != m_PlayerStorage.end(); )
{
ptr = static_cast< Player* >( (itr->second) );
++itr;
if( ptr != NULL )
ptr->Update( difftime );
}
lastUnitUpdate = mstime;
}
// Update gameobjects (not on every loop, however)
if( mLoopCounter % 2 )
{
difftime = mstime - lastGameobjectUpdate;
GameObjectSet::iterator itr = activeGameObjects.begin();
GameObject * ptr;
for(; itr != activeGameObjects.end(); )
{
ptr = *itr;
++itr;
ptr->Update( difftime );
}
lastGameobjectUpdate = mstime;
}
// Sessions are updated every loop.
{
int result;
WorldSession * session;
SessionSet::iterator itr = Sessions.begin();
SessionSet::iterator it2;
for(; itr != Sessions.end();)
{
session = (*itr);
it2 = itr;
++itr;
if(session->GetInstance() != m_instanceID)
{
Sessions.erase(it2);
continue;
}
// Don't update players not on our map.
// If we abort in the handler, it means we will "lose" packets, or not process this.
// .. and that could be diasterous to our client :P
if(session->GetPlayer() && (session->GetPlayer()->GetMapMgr() != this && session->GetPlayer()->GetMapMgr() != 0))
{
continue;
}
if((result = session->Update(m_instanceID)))
{
if(result == 1)
{
// complete deletion
sWorld.DeleteSession(session);
}
//.........这里部分代码省略.........
示例2: _PerformObjectDuties
void MapMgr::_PerformObjectDuties()
{
++mLoopCounter;
uint32 mstime = getMSTime();
uint32 difftime = mstime - lastUnitUpdate;
if(difftime > 500)
difftime = 500;
// Update any events.
// we make update of events before objects so in case there are 0 timediff events they do not get deleted after update but on next server update loop
eventHolder.Update(difftime);
// Update creatures.
{
creature_iterator = activeCreatures.begin();
Creature* ptr;
Pet* ptr2;
for(; creature_iterator != activeCreatures.end();)
{
ptr = *creature_iterator;
++creature_iterator;
ptr->Update(difftime);
}
pet_iterator = m_PetStorage.begin();
for(; pet_iterator != m_PetStorage.end();)
{
ptr2 = pet_iterator->second;
++pet_iterator;
ptr2->Update(difftime);
}
}
// Update players.
{
PlayerStorageMap::iterator itr = m_PlayerStorage.begin();
Player* ptr;
for(; itr != m_PlayerStorage.end();)
{
ptr = itr->second;
++itr;
ptr->Update(difftime);
}
lastUnitUpdate = mstime;
}
// Dynamic objects
//
// We take the pointer, increment, and update in this order because during the update the DynamicObject might get deleted,
// rendering the iterator unincrementable. Which causes a crash!
{
for(DynamicObjectStorageMap::iterator itr = m_DynamicObjectStorage.begin(); itr != m_DynamicObjectStorage.end();)
{
DynamicObject* o = itr->second;
++itr;
o->UpdateTargets();
}
}
// Update gameobjects (not on every loop, however)
if(mLoopCounter % 2)
{
difftime = mstime - lastGameobjectUpdate;
GameObjectSet::iterator itr = activeGameObjects.begin();
GameObject* ptr;
for(; itr != activeGameObjects.end();)
{
ptr = *itr;
++itr;
if(ptr != NULL)
ptr->Update(difftime);
}
lastGameobjectUpdate = mstime;
}
// Sessions are updated every loop.
{
int result;
WorldSession* session;
SessionSet::iterator itr = Sessions.begin();
SessionSet::iterator it2;
for(; itr != Sessions.end();)
{
session = (*itr);
it2 = itr;
++itr;
if(session->GetInstance() != m_instanceID)
{
Sessions.erase(it2);
continue;
}
//.........这里部分代码省略.........