Browse Source

avoid unnecessary processing for spawns that don't have spawn proximities (cpu improvement)

Image 4 years ago
parent
commit
5bd0deb900
2 changed files with 10 additions and 0 deletions
  1. 7 0
      EQ2/source/WorldServer/Spawn.cpp
  2. 3 0
      EQ2/source/WorldServer/Spawn.h

+ 7 - 0
EQ2/source/WorldServer/Spawn.cpp

@@ -103,6 +103,7 @@ Spawn::Spawn(){
 	forceMapCheck = false;
 	m_followDistance = 0;
 	MCommandMutex.SetName("Entity::MCommandMutex");
+	has_spawn_proximities = true;
 }
 
 Spawn::~Spawn(){
@@ -3213,6 +3214,9 @@ void Spawn::CheckProximities()
 
 void Spawn::AddSpawnToProximity(int32 spawnValue, SpawnProximityType type)
 {
+	if (!has_spawn_proximities)
+		return;
+
 	if (spawn_proximities.size() > 0)
 	{
 		MutexList<SpawnProximity*>::iterator itr = spawn_proximities.begin();
@@ -3226,6 +3230,9 @@ void Spawn::AddSpawnToProximity(int32 spawnValue, SpawnProximityType type)
 
 void Spawn::RemoveSpawnFromProximity(int32 spawnValue, SpawnProximityType type)
 {
+	if (!has_spawn_proximities)
+		return;
+
 	if (spawn_proximities.size() > 0)
 	{
 		MutexList<SpawnProximity*>::iterator itr = spawn_proximities.begin();

+ 3 - 0
EQ2/source/WorldServer/Spawn.h

@@ -1026,6 +1026,7 @@ public:
 		prox->in_range_lua_function = in_range_function;
 		prox->leaving_range_lua_function = leaving_range_function;
 		spawn_proximities.Add(prox);
+		has_spawn_proximities = true;
 		return prox;
 	}
 
@@ -1035,9 +1036,11 @@ public:
 			safe_delete(itr->value);
 		}
 		spawn_proximities.clear();
+		has_spawn_proximities = false;
 	}
 
 	Mutex	MCommandMutex;
+	bool	has_spawn_proximities;
 protected:
 
 	bool	send_spawn_changes;