perigee 0.7.0

A headless realtime 3D engine built with a focus on the web.
Documentation
use gltf::accessor::Accessor;
use thiserror::Error;

#[derive(Error, Debug)]
pub enum GltfAccessorViewError {
    #[error("could not get accessor for provided glTF buffer")]
    NoAccessorFound,
}

pub fn access_gltf_bytes<'a>(
    gltf_bytes: &'a Vec<u8>,
    accessor: &'a Accessor,
) -> Result<&'a [u8], GltfAccessorViewError> {
    if let Some(buffer_view) = accessor.view() {
        let view_start = buffer_view.offset() + accessor.offset();
        Ok(&gltf_bytes[view_start..view_start + buffer_view.length()])
    } else {
        Err(GltfAccessorViewError::NoAccessorFound)
    }
}