feat: stabilize OpenSim interactions and landmarks
Some checks failed
CI / rust-skia (Rust only) (push) Has been cancelled
CI / required (push) Has been cancelled

This commit is contained in:
2026-08-21 22:46:10 +02:00
parent adf5165033
commit e4e84dcdcb
27 changed files with 536 additions and 101 deletions

View File

@@ -59,6 +59,7 @@ struct RuntimeState {
behavior: BehaviorMode,
service_state: &'static str,
region_id: Option<String>,
region_handle: Option<u64>,
region_name: Option<String>,
position: Option<[f64; 3]>,
}
@@ -70,6 +71,7 @@ impl Default for RuntimeState {
behavior: BehaviorMode::Offline,
service_state: "starting",
region_id: None,
region_handle: None,
region_name: None,
position: None,
}
@@ -173,11 +175,13 @@ impl AgentControlTarget {
pub fn update_region(
&self,
region_id: Option<String>,
region_handle: Option<u64>,
region_name: Option<String>,
position: Option<[f64; 3]>,
) {
let mut state = lock(&self.state);
state.region_id = region_id.filter(|value| value.len() <= 64);
state.region_handle = region_handle.filter(|value| *value != 0);
state.region_name = region_name.filter(|value| value.len() <= 256);
state.position =
position.filter(|value| value.iter().all(|component| component.is_finite()));
@@ -259,6 +263,7 @@ impl AgentControlTarget {
transport_connected: state.session.transport_connected,
agent_ready: state.session.agent_ready,
region_id: state.region_id,
region_handle: state.region_handle,
region_name: state.region_name,
position: state.position,
behavior_mode: behavior_name(state.behavior).to_owned(),