use serde::{Deserialize, Serialize};
use crate::CoordinateSystem;
#[derive(Clone, Debug)]
pub struct UnpackOptionsBuilder {
to_coord_sys: CoordinateSystem,
}
impl UnpackOptionsBuilder {
#[inline]
pub fn to_coord_system(mut self, coord_sys: CoordinateSystem) -> Self {
self.to_coord_sys = coord_sys;
self
}
#[inline]
pub fn build(self) -> UnpackOptions {
UnpackOptions {
to_coord_sys: self.to_coord_sys,
}
}
}
impl Default for UnpackOptionsBuilder {
#[inline]
fn default() -> Self {
Self {
to_coord_sys: CoordinateSystem::UNSPECIFIED,
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct UnpackOptions {
pub to_coord_sys: CoordinateSystem,
}
impl UnpackOptions {
#[inline]
pub fn builder() -> UnpackOptionsBuilder {
UnpackOptionsBuilder::default()
}
}
static_assertions::const_assert_eq!(std::mem::size_of::<UnpackedGaussian>(), 236);
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct UnpackedGaussian {
pub position: [f32; 3], pub rotation: [f32; 4], pub scale: [f32; 3], pub color: [f32; 3], pub alpha: f32, pub sh_r: [f32; 15],
pub sh_g: [f32; 15],
pub sh_b: [f32; 15],
}