Object manager: implement update decoding, collections, properties, and actions #69

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

Objective

Implement full/compressed/terse object update decoding, simulator primitive/avatar collections, linking, property requests, selection, click/touch, rez/derez, permissions, media/material caps, and events.

Deliverables

  • Separate decode from state apply and preserve stale/local-ID/parent-child behavior.
  • Preserve request correlation, event ordering, packet/caps routing, and simulator ownership.
  • Validate all offsets, counts, indices, and payload limits.

Validation

  • Object/message/material tests pass with fake-grid packets/caps.
  • Malformed updates never panic or corrupt collections.
  • Representative discovery/property/action workflow passes end to end.

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 full/compressed/terse object update decoding, simulator primitive/avatar collections, linking, property requests, selection, click/touch, rez/derez, permissions, media/material caps, and events. ## Deliverables - Separate decode from state apply and preserve stale/local-ID/parent-child behavior. - Preserve request correlation, event ordering, packet/caps routing, and simulator ownership. - Validate all offsets, counts, indices, and payload limits. ## Validation - Object/message/material tests pass with fake-grid packets/caps. - Malformed updates never panic or corrupt collections. - Representative discovery/property/action workflow passes end to end. ## 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:44 +00:00
hugo added the enhancement label 2026-08-08 08:21:44 +00:00
Author
Owner

Implemented and pushed in commit 13f85bf. Added bounded full, compressed, and terse object decoding; primitive/avatar ownership collections and recursive kill cleanup; property, pay-price, animation, particle, sit, physics, and update events; complete mapped object actions; ObjectMedia and RenderMaterials caps; stable concurrent GridClient ObjectManager ownership; and native media/event argument mappings with no ObjectManager failure shims remaining. Review verified decode-before-apply ordering, callbacks outside collection locks, stale UUID cleanup, packet/caps bounds, cancellation-safe click release, and cross-platform Rust-only behavior. Verification: 9 object-manager unit tests, 3 media/material unit tests, world_manager_shims 2/2, object_manager_null_throws 1/1, API compile check, clippy with warnings denied, both generator consistency checks, formatting, and diff checks all pass. Unrelated live-network compatibility failures were not included in this issue.

Implemented and pushed in commit 13f85bf. Added bounded full, compressed, and terse object decoding; primitive/avatar ownership collections and recursive kill cleanup; property, pay-price, animation, particle, sit, physics, and update events; complete mapped object actions; ObjectMedia and RenderMaterials caps; stable concurrent GridClient ObjectManager ownership; and native media/event argument mappings with no ObjectManager failure shims remaining. Review verified decode-before-apply ordering, callbacks outside collection locks, stale UUID cleanup, packet/caps bounds, cancellation-safe click release, and cross-platform Rust-only behavior. Verification: 9 object-manager unit tests, 3 media/material unit tests, world_manager_shims 2/2, object_manager_null_throws 1/1, API compile check, clippy with warnings denied, both generator consistency checks, formatting, and diff checks all pass. Unrelated live-network compatibility failures were not included in this issue.
hugo closed this issue 2026-08-10 14:33:29 +00:00
Sign in to join this conversation.