2.3 KiB
2.3 KiB
MetaCrate compatibility deviations
This file records intentional differences from the C# LibreMetaverse source. Preserve or re-evaluate these changes when importing a newer upstream version.
OpenSim varregion dimensions
GridRegionretains the optionalMapBlockReply.Sizedimensions. Missing or zero dimensions fall back to 256 x 256 metres.Simulator::region_size()exposes dimensions resolved after login and is markedmust_use, while the mapped publicsize_xandsize_yfields remain unchanged for API compatibility.- A matching map-region event updates the current simulator's resolved dimensions. Movement, border prediction, terrain lookup, and terrain archive export use the resolved dimensions.
- The cache distinguishes explicit
Sizeblocks from the 256 x 256 fallback. Startup waits for an explicit size until timeout, and a later fallback reply cannot downgrade a resolved size. - Region lookup no longer synthesizes the current simulator as a 256 x 256
GridRegion; it requests the authoritative map block.
Files: src/grid_manager.rs, src/network_manager.rs, src/agent_movement.rs,
src/asset_archive.rs.
Asynchronous region-reply correlation
- Name and handle lookups subscribe to the continuously dispatched
GridRegionevent stream before sending a request. - Each lookup accepts only the matching name or handle. Unrelated grid, object, avatar, or map traffic cannot complete the request early.
- Cancellation and the mapped map-request timeout still bound the one-shot waiter.
- The default map-request timeout is 15 seconds rather than 5 seconds because OpenSim map replies on the live varregion can arrive after 7-8 seconds during login.
Files: src/grid_manager.rs, src/client_core.rs.
OpenSim asset transport fallback
- When the OpenSim asset capability returns no payload for an asset, the request falls back to the existing UDP asset transfer path instead of reporting a missing asset immediately.
File: src/asset_manager.rs.
Deterministic persistent-asset LRU
- Successful immutable asset-cache reads explicitly refresh the file modification timestamp.
Pruning uses that timestamp as its cross-platform LRU order instead of filesystem access time,
which can be disabled or coarsened by
noatimeandrelatimemounts.
Files: src/asset_cache.rs, src/asset_pipeline_semantics.rs.