Epic: #64 (AffinityEngine)
No dependencies — can be done independently
What
Add a public method to SpatialIndex in crates/arcane-spatial/src/index.rs that exposes entity data for building WorldStateView.players:
pub fn snapshot_entities(&self) -> Vec<(Uuid, Uuid, Vec3)> {
self.entities
.iter()
.map(|(entity_id, (cluster_id, position))| (*entity_id, *cluster_id, *position))
.collect()
}
Returns (entity_id, cluster_id, position) triples for all tracked entities.
Why
SpatialIndex.entities is private. ClusterManager currently can only get cluster-level geometry via snapshot_for_view(), not individual entity data. To populate WorldStateView.players (required for AffinityEngine), ClusterManager needs entity-level access.
Acceptance criteria
- Method added to
SpatialIndex
- Returns correct data for tracked entities
cargo test -p arcane-spatial passes
Spec
See arcane-engine repo: in_08_00_integration_report.md §2.4
Epic: #64 (AffinityEngine)
No dependencies — can be done independently
What
Add a public method to
SpatialIndexincrates/arcane-spatial/src/index.rsthat exposes entity data for buildingWorldStateView.players:Returns
(entity_id, cluster_id, position)triples for all tracked entities.Why
SpatialIndex.entitiesis private.ClusterManagercurrently can only get cluster-level geometry viasnapshot_for_view(), not individual entity data. To populateWorldStateView.players(required for AffinityEngine), ClusterManager needs entity-level access.Acceptance criteria
SpatialIndexcargo test -p arcane-spatialpassesSpec
See
arcane-enginerepo:in_08_00_integration_report.md§2.4