mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 01:37:05 +00:00
[11193] Optimize visibility update and AI notification code. Optimization decreases amount of visibility and AI notification operations in 8-10 times, and as a result, lowers CPU usage by 30-40%
You need to update your config file, new "Visibility.RelocationLowerLimit" and "Visibility.AIRelocationNotifyDelay' options added Special thanks to Ambal for code hints and advices Thanks to Undergarun and kero99 for making tests
This commit is contained in:
parent
60b2e2c8ba
commit
724092d9e5
10 changed files with 117 additions and 62 deletions
|
|
@ -125,7 +125,7 @@ m_lootMoney(0), m_lootGroupRecipientId(0),
|
|||
m_corpseDecayTimer(0), m_respawnTime(0), m_respawnDelay(25), m_corpseDelay(60), m_respawnradius(5.0f),
|
||||
m_subtype(subtype), m_defaultMovementType(IDLE_MOTION_TYPE), m_equipmentId(0),
|
||||
m_AlreadyCallAssistance(false), m_AlreadySearchedAssistance(false),
|
||||
m_regenHealth(true), m_AI_locked(false), m_isDeadByDefault(false), m_needNotify(false),
|
||||
m_regenHealth(true), m_AI_locked(false), m_isDeadByDefault(false),
|
||||
m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL),
|
||||
m_creatureInfo(NULL), m_splineFlags(SPLINEFLAG_WALKMODE)
|
||||
{
|
||||
|
|
@ -426,15 +426,6 @@ uint32 Creature::ChooseDisplayId(const CreatureInfo *cinfo, const CreatureData *
|
|||
|
||||
void Creature::Update(uint32 update_diff, uint32 diff)
|
||||
{
|
||||
if (m_needNotify)
|
||||
{
|
||||
m_needNotify = false;
|
||||
RelocationNotify();
|
||||
|
||||
if (!IsInWorld())
|
||||
return;
|
||||
}
|
||||
|
||||
switch( m_deathState )
|
||||
{
|
||||
case JUST_ALIVED:
|
||||
|
|
@ -2352,13 +2343,6 @@ void Creature::SendAreaSpiritHealerQueryOpcode(Player *pl)
|
|||
pl->SendDirectMessage(&data);
|
||||
}
|
||||
|
||||
void Creature::RelocationNotify()
|
||||
{
|
||||
MaNGOS::CreatureRelocationNotifier relocationNotifier(*this);
|
||||
float radius = MAX_CREATURE_ATTACK_RADIUS * sWorld.getConfig(CONFIG_FLOAT_RATE_CREATURE_AGGRO);
|
||||
Cell::VisitAllObjects(this, relocationNotifier, radius);
|
||||
}
|
||||
|
||||
void Creature::ApplyGameEventSpells(GameEventCreatureData const* eventData, bool activated)
|
||||
{
|
||||
uint32 cast_spell = activated ? eventData->spell_id_start : eventData->spell_id_end;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue