|
@@ -8255,6 +8255,8 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
|
|
|
map<int32, SpawnData> pos_changes;
|
|
|
map<int32, SpawnData> vis_changes;
|
|
|
|
|
|
+ map<int32, SpawnData> empty_changes;
|
|
|
+
|
|
|
int32 info_size = 0;
|
|
|
int32 pos_size = 0;
|
|
|
int32 vis_size = 0;
|
|
@@ -8268,9 +8270,48 @@ void Client::SendSpawnChanges(set<Spawn*>& spawns) {
|
|
|
|
|
|
if (spawn->vis_changed)
|
|
|
{
|
|
|
- EQ2Packet* outapp = spawn->spawn_update_packet(GetPlayer(), GetVersion(), false, false);
|
|
|
- QueuePacket(outapp);
|
|
|
- continue;
|
|
|
+ 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_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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (spawn->position_changed) {
|
|
|
+ auto pos_change = spawn->spawn_pos_changes_ex(GetPlayer(), GetVersion());
|
|
|
+
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ MakeSpawnChangePacket(tmp_info_changes, tmp_pos_changes, tmp_vis_changes, tmp_info_size, tmp_pos_size, data.size);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (spawn->info_changed) {
|