Browse Source

Additional tweaking of zone in spawns and bulk pos/info/vis updates

Image 4 years ago
parent
commit
4eefc3ed2c
2 changed files with 34 additions and 35 deletions
  1. 33 34
      EQ2/source/WorldServer/client.cpp
  2. 1 1
      EQ2/source/WorldServer/zoneserver.cpp

+ 33 - 34
EQ2/source/WorldServer/client.cpp

@@ -8267,51 +8267,50 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 		int16 index = GetPlayer()->GetIndexForSpawn(spawn);
 		if (index == 0 || !GetPlayer()->WasSentSpawn(spawn->GetID()) || GetPlayer()->NeedsSpawnResent(spawn) || GetPlayer()->GetDistance(spawn) >= SEND_SPAWN_DISTANCE)
 			continue;
-		
+
 		if (spawn->vis_changed)
 		{
+			map<int32, SpawnData> tmp_info_changes;
+			map<int32, SpawnData> tmp_pos_changes;
+			map<int32, SpawnData> tmp_vis_changes;
+			int32 tmp_info_size = 0;
+			int32 tmp_pos_size = 0;
+			int32 tmp_vis_size = 0;
+
 			auto vis_change = spawn->spawn_vis_changes_ex(GetPlayer(), GetVersion());
 			if (vis_change) {
 				SpawnData data;
 				data.spawn = spawn;
 				data.data = vis_change;
 				data.size = spawn->vis_packet_size;
-				map<int32, SpawnData> tmp_vis_changes;
+				tmp_vis_size = data.size;
 				tmp_vis_changes[index] = data;
+			}
 
-				map<int32, SpawnData> tmp_info_changes;
-				map<int32, SpawnData> tmp_pos_changes;
-				int32 tmp_info_size = 0;
-				int32 tmp_pos_size = 0;
-				if (spawn->info_changed) {
-					auto info_change = spawn->spawn_info_changes_ex(GetPlayer(), GetVersion());
-
-					if (info_change) {
-						SpawnData data;
-						data.spawn = spawn;
-						data.data = info_change;
-						data.size = spawn->info_packet_size;
-						tmp_info_size = data.size;
-						tmp_info_changes[index] = data;
-					}
-				}
+			/*auto info_change = spawn->spawn_info_changes_ex(GetPlayer(), GetVersion());
 
-				if (spawn->position_changed) {
-					auto pos_change = spawn->spawn_pos_changes_ex(GetPlayer(), GetVersion());
+			if (info_change) {
+				SpawnData data;
+				data.spawn = spawn;
+				data.data = info_change;
+				data.size = spawn->info_packet_size;
+				tmp_info_size = data.size;
+				tmp_info_changes[index] = data;
+			}
 
-					if (pos_change) {
-						SpawnData data;
-						data.spawn = spawn;
-						data.data = pos_change;
-						data.size = spawn->pos_packet_size;
-						tmp_pos_size = data.size;
-						tmp_pos_changes[index] = data;
-					}
-				}
+			auto pos_change = spawn->spawn_pos_changes_ex(GetPlayer(), GetVersion());
 
-				MakeSpawnChangePacket(tmp_info_changes, tmp_pos_changes, tmp_vis_changes, tmp_info_size, tmp_pos_size, data.size);
-				continue;
-			}
+			if (pos_change) {
+				SpawnData data;
+				data.spawn = spawn;
+				data.data = pos_change;
+				data.size = spawn->pos_packet_size;
+				tmp_pos_size = data.size;
+				tmp_pos_changes[index] = data;
+			}*/
+
+			if (tmp_vis_size > 0)
+				MakeSpawnChangePacket(tmp_info_changes, tmp_pos_changes, tmp_vis_changes, tmp_info_size, tmp_pos_size, tmp_vis_size);
 		}
 
 		if (spawn->info_changed) {
@@ -8343,7 +8342,7 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 			}
 			count++;
 		}
-		
+		/*
 		if (spawn->vis_changed) {
 			auto vis_change = spawn->spawn_vis_changes_ex(GetPlayer(), GetVersion());
 
@@ -8357,7 +8356,7 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
 				vis_changes[index] = data;
 			}
 			count++;
-		}
+		}*/
 
 	}
 

+ 1 - 1
EQ2/source/WorldServer/zoneserver.cpp

@@ -1074,7 +1074,7 @@ void ZoneServer::CheckSendSpawnToClient(Client* client, bool initial_login) {
 						spawn->RemoveSpawnAccess(client->GetPlayer());
 				}
 				if(spawn && spawn != client->GetPlayer() && client->GetPlayer()->ShouldSendSpawn(spawn)) {
-					if((!initial_login && spawn_iter->second <= SEND_SPAWN_DISTANCE) || (initial_login && (spawn_iter->second <= (SEND_SPAWN_DISTANCE/2) || spawn->IsWidget()))) {
+					if(spawn_iter->second <= SEND_SPAWN_DISTANCE) {
 						if(closest_spawns.count(spawn_iter->second) == 0)
 							closest_spawns[spawn_iter->second] = new vector<Spawn*>();
 						closest_spawns[spawn_iter->second]->push_back(spawn);