mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
When a model finishes on the UGC server while players are on the property, each client was sent the served NIF checksum, NotifyClientUGCModelReady and the model constructed again at once. A client that was sent the model's LXFML shortly before (the property load, a request for a model not made yet, the owner's brick by brick save) is still building it then: the build writes its own .nif over BrickModels/UserMade/<id>.nif and caches that file's MD5 as the NIF's manifest info when it finishes (client 1.10.64: LWOBBBInterface::GenerateModelFromLxfml 0x00b6c220, MainThread_Process- ModelResponse 0x00b5a1e0), undoing the switch, so it kept its own build. That is the usual case: another player's client asks for a model the owner just placed, gets its LXFML, and that request makes the UGC server make the model at once. Now such a client is switched 30 seconds after the last LXFML sent to it (UgcManifest::ServedMeshSwitches, BUILD_SETTLE); another LXFML sent meanwhile starts the wait again. Other clients are switched at once, as before. The served checksum is looked up when the switch happens. HKX requests are still answered with the LXFML, so collision stays the client's own. Check in game (ugc_manifest=1, ugc_manifest_models=1, two accounts on one property): the owner saves a new model; within about 30 s of the UGC server making it, the other player's copy blinks out and back with the served mesh (vertex AO, look of the dashboard's viewer), and still has collision (walk into it). The owner's copy switches the same way. The world log shows "Switching ... to the served mesh of model ...". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>