fix(ugc): a client back at character select starts its UGC switches afresh

Switching characters keeps the connection (the client sends
CHARACTER_LIST_REQUEST to the world it's in), so the per-client UGC state
(waiting requests, pending mesh switches, the 3-switches-per-model cap)
carried over to the next character. It's now dropped as on a disconnect.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-28 11:45:27 -05:00
parent e27f2085dc
commit 5596f0fa2d
2 changed files with 3 additions and 1 deletions

View File

@@ -66,7 +66,7 @@ namespace UgcManifest {
// clients to served meshes that are due
void Update();
// A client left: its waiting requests are dropped
// A client left (or went back to character select): its waiting requests and pending switches are dropped
void OnDisconnect(const SystemAddress& sysAddr);
// The UGC server made these models' meshes (again, with a new checksum): each one placed in this world is sent the

View File

@@ -1229,6 +1229,8 @@ namespace {
auto user = UserManager::Instance()->GetUser(sysAddr);
if (!user || !user->GetLastUsedChar()) return;
Game::entityManager->DestroyEntity(user->GetLastUsedChar()->GetEntity());
// Back at character select on the same connection: forget this client's UGC requests and switches
UgcManifest::OnDisconnect(sysAddr);
}
//This loops prevents users who aren't authenticated to double-request the char list, which