Land: implement parcels, terrain, environment, and sound managers #70

Closed
opened 2026-08-08 08:21:45 +00:00 by hugo · 1 comment
Owner

Objective

Implement parcel overlays/properties/access/owners/resources, terrain patches/material overrides, environment settings, wind, sound, and related events.

Deliverables

  • Preserve region/local coordinates, parcel bitmap/flags, permissions, request/reply correlation, terrain codec values, environment LLSD, sound IDs/gain/queueing, and caps/packet selection.
  • Bound terrain/resource payloads and file outputs.
  • Keep destructive estate/parcel actions opt-in in live tests.

Validation

  • Parcel/terrain/environment/sound tests pass offline.
  • Golden terrain/environment fixtures match.
  • Fake-grid land workflow emits expected requests/events.

Prerequisite

Networking/client lifecycle and the earlier world model/manager issues are available; mapped APIs and translated tests are fixed.

Project constraints

  • New native Rust behavior only; no bridge or C# fallback.
  • Preserve fixed APIs and translated assertions; reuse completed lower layers and keep privileged live actions opt-in.
  • Validate bounded untrusted inputs, cancellation, task cleanup, docs, and coverage in the same change.
## Objective Implement parcel overlays/properties/access/owners/resources, terrain patches/material overrides, environment settings, wind, sound, and related events. ## Deliverables - Preserve region/local coordinates, parcel bitmap/flags, permissions, request/reply correlation, terrain codec values, environment LLSD, sound IDs/gain/queueing, and caps/packet selection. - Bound terrain/resource payloads and file outputs. - Keep destructive estate/parcel actions opt-in in live tests. ## Validation - Parcel/terrain/environment/sound tests pass offline. - Golden terrain/environment fixtures match. - Fake-grid land workflow emits expected requests/events. ## Prerequisite Networking/client lifecycle and the earlier world model/manager issues are available; mapped APIs and translated tests are fixed. ## Project constraints - New native Rust behavior only; no bridge or C# fallback. - Preserve fixed APIs and translated assertions; reuse completed lower layers and keep privileged live actions opt-in. - Validate bounded untrusted inputs, cancellation, task cleanup, docs, and coverage in the same change.
hugo added this to the 09 - World vertical slices milestone 2026-08-08 08:21:45 +00:00
hugo added the enhancement label 2026-08-08 08:21:45 +00:00
Author
Owner

Implemented in d537a37.

Summary:

  • Added client-owned native ParcelManager, TerrainManager, EnvironmentManager, and SoundManager services with lifecycle-safe subscriptions and generated API mappings.
  • Implemented parcel overlay/property/access/dwell/owner/media handling, four-metre parcel maps, request correlation, remote parcel lookup, bounded land-resource capabilities, and real LLUDP parcel/terraform action packets.
  • Implemented the bounded 16x16 terrain DCT codec, land and wind layer decoding, rectangular large-region storage, point-height lookup, and four-slot PBR material overrides.
  • Implemented extended and legacy environment LLSD GET/POST/DELETE flows with correct parcelid query selection, cached state, events, cancellation, and body limits.
  • Implemented attached/preload/trigger sound packet routing with preserved UUIDs, gain, position, region handle, and queue flags, plus validated outgoing triggers.
  • Added land-service documentation and converted the TerrainPatch compatibility constructor from a failure-only shim.

Focused verification:

  • cargo fmt and generator/API coverage checks pass.
  • workspace/all-target checks, locked API compile, serial workspace test compilation, and workspace documentation pass.
  • libremetaverse all-feature Clippy and the related compatibility-target Clippy checks pass with warnings denied.
  • Parcel, terrain codec/manager, environment, sound, terrain-material, environment-capability, parcel packet, and parcel wire compatibility cases pass in isolation.

The full workspace all-feature Clippy invocation proceeds through this implementation but still reports pre-existing Duration style warnings in estate/restart compatibility assertions owned by #73; those out-of-scope cases were left unchanged.

Implemented in d537a37. Summary: - Added client-owned native ParcelManager, TerrainManager, EnvironmentManager, and SoundManager services with lifecycle-safe subscriptions and generated API mappings. - Implemented parcel overlay/property/access/dwell/owner/media handling, four-metre parcel maps, request correlation, remote parcel lookup, bounded land-resource capabilities, and real LLUDP parcel/terraform action packets. - Implemented the bounded 16x16 terrain DCT codec, land and wind layer decoding, rectangular large-region storage, point-height lookup, and four-slot PBR material overrides. - Implemented extended and legacy environment LLSD GET/POST/DELETE flows with correct parcelid query selection, cached state, events, cancellation, and body limits. - Implemented attached/preload/trigger sound packet routing with preserved UUIDs, gain, position, region handle, and queue flags, plus validated outgoing triggers. - Added land-service documentation and converted the TerrainPatch compatibility constructor from a failure-only shim. Focused verification: - cargo fmt and generator/API coverage checks pass. - workspace/all-target checks, locked API compile, serial workspace test compilation, and workspace documentation pass. - libremetaverse all-feature Clippy and the related compatibility-target Clippy checks pass with warnings denied. - Parcel, terrain codec/manager, environment, sound, terrain-material, environment-capability, parcel packet, and parcel wire compatibility cases pass in isolation. The full workspace all-feature Clippy invocation proceeds through this implementation but still reports pre-existing Duration style warnings in estate/restart compatibility assertions owned by #73; those out-of-scope cases were left unchanged.
hugo closed this issue 2026-08-10 16:54:23 +00:00
Sign in to join this conversation.