fix: mail money uint64, other-player cape textures, zone toast dedup, TCP_NODELAY

Mail: change money/COD fields from uint32 to uint64 in CMSG_SEND_MAIL and
SMSG_MAIL_LIST_RESULT for WotLK 3.3.5a. Classic keeps uint32 on the wire.
Fixes money truncation and packet misalignment causing mail failures.

Other-player capes: add cape texture loading to setOnlinePlayerEquipment().
The cape geoset was enabled but no texture was loaded, leaving capes blank.
Now mirrors the local-player path: looks up ItemDisplayInfo.dbc, finds cape
texture candidates, applies via setGroupTextureOverride/setTextureSlotOverride.

Zone toasts: suppress duplicate zone toast when the zone text overlay is
already showing the same zone name. Fixes double "Entering: Stormwind City".

Network: enable TCP_NODELAY on both auth and world sockets after connect(),
disabling Nagle's algorithm to eliminate up to 200ms buffering delay on
small packets (movement, spell casts, chat).

Rendering: track material and bone descriptor sets in M2 renderer to skip
redundant vkCmdBindDescriptorSets calls between batches sharing same textures.
This commit is contained in:
Kelsi 2026-03-27 17:20:31 -07:00
parent 6b1c728377
commit 50a3eb7f07
12 changed files with 141 additions and 28 deletions

View file

@ -86,6 +86,11 @@ bool TCPSocket::connect(const std::string& host, uint16_t port) {
}
}
// Disable Nagle's algorithm — send small packets immediately.
int one = 1;
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY,
reinterpret_cast<const char*>(&one), sizeof(one));
connected = true;
LOG_INFO("Connected to ", host, ":", port);
return true;

View file

@ -220,6 +220,11 @@ bool WorldSocket::connect(const std::string& host, uint16_t port) {
}
}
// Disable Nagle's algorithm — send small packets immediately.
int one = 1;
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY,
reinterpret_cast<const char*>(&one), sizeof(one));
connected = true;
LOG_INFO("Connected to world server: ", host, ":", port);
startAsyncPump();