evoxel-core 0.0.1-alpha.9

Core primitives and operations for processing 3D voxel grids.
Documentation
use chrono::{DateTime, Duration, Utc};
use ecoord::FrameId;

#[derive(Debug, Clone, PartialEq)]
pub struct VoxelGridInfo {
    pub(crate) frame_id: FrameId,
    pub(crate) resolution: f64,
    pub(crate) start_time: Option<DateTime<Utc>>,
    pub(crate) stop_time: Option<DateTime<Utc>>,
    pub(crate) submap_index: Option<i32>,
}

impl VoxelGridInfo {
    pub fn new(
        frame_id: FrameId,
        resolution: f64,
        start_time: Option<DateTime<Utc>>,
        stop_time: Option<DateTime<Utc>>,
        submap_index: Option<i32>,
    ) -> Self {
        Self {
            resolution,
            frame_id,
            start_time,
            stop_time,
            submap_index,
        }
    }

    pub fn frame_id(&self) -> &FrameId {
        &self.frame_id
    }

    pub fn resolution(&self) -> f64 {
        self.resolution
    }

    pub fn start_time(&self) -> &Option<DateTime<Utc>> {
        &self.start_time
    }

    pub fn stop_time(&self) -> &Option<DateTime<Utc>> {
        &self.stop_time
    }

    pub fn submap_index(&self) -> Option<i32> {
        self.submap_index
    }

    pub fn duration(&self) -> Option<Duration> {
        if self.start_time.is_some() && self.stop_time.is_some() {
            Some(self.stop_time.unwrap() - self.start_time.unwrap())
        } else {
            None
        }
    }
}