gltf_kun 0.0.10

Graph-based glTF processing library.
Documentation
use petgraph::graph::NodeIndex;

use crate::graph::{Extensions, GraphNodeWeight, Weight};

use super::GltfWeight;

#[derive(Clone, Debug, Default)]
pub struct BufferWeight {
    pub name: Option<String>,
    pub extras: gltf::json::Extras,

    pub uri: Option<String>,
}

impl From<BufferWeight> for Weight {
    fn from(weight: BufferWeight) -> Self {
        Self::Gltf(GltfWeight::Buffer(weight))
    }
}

impl<'a> TryFrom<&'a Weight> for &'a BufferWeight {
    type Error = ();
    fn try_from(value: &'a Weight) -> Result<Self, Self::Error> {
        match value {
            Weight::Gltf(GltfWeight::Buffer(weight)) => Ok(weight),
            _ => Err(()),
        }
    }
}

impl<'a> TryFrom<&'a mut Weight> for &'a mut BufferWeight {
    type Error = ();
    fn try_from(value: &'a mut Weight) -> Result<Self, Self::Error> {
        match value {
            Weight::Gltf(GltfWeight::Buffer(weight)) => Ok(weight),
            _ => Err(()),
        }
    }
}

#[derive(Copy, Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct Buffer(pub NodeIndex);

impl From<NodeIndex> for Buffer {
    fn from(index: NodeIndex) -> Self {
        Self(index)
    }
}

impl From<Buffer> for NodeIndex {
    fn from(buffer: Buffer) -> Self {
        buffer.0
    }
}

impl GraphNodeWeight<BufferWeight> for Buffer {}
impl Extensions for Buffer {}