pub mod manager;
pub mod switch;
use crate::tracking::CameraPose;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct CameraId(pub usize);
#[derive(Debug, Clone)]
pub struct MultiCameraState {
pub active_camera: CameraId,
pub poses: Vec<(CameraId, CameraPose)>,
}
impl MultiCameraState {
#[must_use]
pub fn new() -> Self {
Self {
active_camera: CameraId(0),
poses: Vec::new(),
}
}
#[must_use]
pub fn active_pose(&self) -> Option<&CameraPose> {
self.poses
.iter()
.find(|(id, _)| *id == self.active_camera)
.map(|(_, pose)| pose)
}
}
impl Default for MultiCameraState {
fn default() -> Self {
Self::new()
}
}