feat: stabilize OpenSim interactions and landmarks
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user