use super::{ChunkPlacementError, ChunkPlacementId};
use molgfx_core::ResidencyTicket;
use molgfx_math::{Mat4, Rgba8};
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct BondChunkPlacement {
pub id: ChunkPlacementId,
pub ticket: ResidencyTicket,
pub model_to_world: Mat4,
pub radius: f32,
pub color: Rgba8,
}
impl BondChunkPlacement {
pub fn licorice(
id: ChunkPlacementId,
ticket: ResidencyTicket,
model_to_world: Mat4,
radius: f32,
color: Rgba8,
) -> Result<Self, ChunkPlacementError> {
if !model_to_world.is_finite() {
return Err(ChunkPlacementError::NonFiniteTransform);
}
if !radius.is_finite() || radius <= 0.0 {
return Err(ChunkPlacementError::InvalidBondRadius);
}
Ok(Self {
id,
ticket,
model_to_world,
radius,
color,
})
}
}