#![deny(missing_docs)]
#![allow(unknown_lints)]
#[cfg(test)]
#[macro_use]
extern crate approx;
extern crate byteorder;
extern crate cgmath;
#[macro_use]
extern crate lazy_static;
#[deprecated(since = "0.9.1", note = "Will be removed in 1.0.0")]
#[doc(hidden)]
pub extern crate gltf_json as json;
pub mod accessor;
pub mod animation;
pub mod buffer;
pub mod camera;
pub mod glb;
pub mod gltf;
pub mod image;
pub mod material;
pub mod mesh;
pub mod scene;
pub mod skin;
pub mod texture;
#[doc(inline)]
pub use self::animation::Animation;
#[doc(inline)]
pub use self::accessor::Accessor;
#[doc(inline)]
pub use self::buffer::Buffer;
#[doc(inline)]
pub use self::camera::Camera;
#[doc(inline)]
pub use self::glb::Glb;
#[doc(inline)]
pub use self::gltf::{Gltf, Unvalidated};
#[doc(inline)]
pub use self::image::Image;
#[doc(inline)]
pub use self::material::Material;
#[doc(inline)]
pub use self::mesh::{Attribute, Mesh, Primitive, Semantic};
#[doc(inline)]
pub use self::scene::{Node, Scene};
#[doc(inline)]
pub use self::skin::Skin;
#[doc(inline)]
pub use self::texture::Texture;
#[derive(Debug)]
pub enum Error {
Deserialize(json::Error),
Glb(self::glb::Error),
Validation(Vec<(json::Path, json::validation::Error)>),
}
pub fn is_binary(slice: &[u8]) -> bool {
slice.starts_with(b"glTF")
}
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
use std::error::Error;
write!(f, "{}", self.description())
}
}
impl std::error::Error for Error {
fn description(&self) -> &str {
match *self {
Error::Deserialize(_) => "deserialization error",
Error::Glb(ref e) => e.description(),
Error::Validation(_) => "invalid glTF JSON",
}
}
}
impl From<self::glb::Error> for Error {
fn from(err: self::glb::Error) -> Self {
Error::Glb(err)
}
}
impl From<json::Error> for Error {
fn from(err: json::Error) -> Self {
Error::Deserialize(err)
}
}
impl From<Vec<(json::Path, json::validation::Error)>> for Error {
fn from(errs: Vec<(json::Path, json::validation::Error)>) -> Self {
Error::Validation(errs)
}
}