use crate::core::io::FileLoadError;
#[derive(Debug, thiserror::Error)]
pub enum FbxError {
#[error("FBX: Io error: {0}")]
Io(std::io::Error),
#[error("FBX: Unknown or unsupported attribute type {0}")]
UnknownAttributeType(u8),
#[error("FBX: Corrupted null record of binary FBX")]
InvalidNullRecord,
#[error("FBX: A string has invalid content (non UTF8-compliant)")]
InvalidString,
#[error("FBX: An error has occurred: {0}")]
Custom(Box<String>),
#[error("FBX: Version is not supported: {0}")]
UnsupportedVersion(i32),
#[error("FBX: Internal handle is invalid.")]
InvalidPoolHandle,
#[error("FBX: Internal invalid cast.")]
UnexpectedType,
#[error("FBX: Index is out-of-bounds.")]
IndexOutOfBounds,
#[error("FBX: Vertex references non existing bone.")]
UnableToFindBone,
#[error("FBX: There is no corresponding scene node for a FBX model.")]
UnableToRemapModelToNode,
#[error("FBX: Unknown or unsupported mapping.")]
InvalidMapping,
#[error("FBX: Unknown or unsupported reference.")]
InvalidReference,
#[error("FBX: File load error {0:?}.")]
FileLoadError(FileLoadError),
}
impl From<FileLoadError> for FbxError {
fn from(err: FileLoadError) -> Self {
FbxError::FileLoadError(err)
}
}
impl From<std::io::Error> for FbxError {
fn from(err: std::io::Error) -> Self {
FbxError::Io(err)
}
}
impl From<String> for FbxError {
fn from(err: String) -> Self {
FbxError::Custom(Box::new(err))
}
}
impl From<std::string::FromUtf8Error> for FbxError {
fn from(_: std::string::FromUtf8Error) -> Self {
FbxError::InvalidString
}
}