metaverse_avatar 0.3.2

Avatar handling for the open metaverse
use benthic_protocol::errors::SessionError;
use metaverse_mesh::errors::{MetaverseMeshAnimationError, MetaverseMeshError};
use uuid::Uuid;

#[derive(Debug, thiserror::Error)]
pub enum AvatarError {
    #[error("{feature}: currently unimplemented")]
    Unimplemented { feature: String },

    #[error("Inventory is not currently initialized")]
    InventoryUninitialized {},

    #[error("Agent not found for agent_id: {agent}")]
    AgentNotFound { agent: Uuid },

    #[error("IO error: {0}")]
    IoError(#[from] std::io::Error),

    #[error("Serde Error: {0}")]
    SerdeError(#[from] serde_json::Error),

    #[error("Session Error: {0}")]
    SessionError(#[from] SessionError),

    #[error("Mesh Error: {0}")]
    MetaverseMeshError(#[from] MetaverseMeshError),

    #[error("Avatar mesh generation failed: {error}")]
    MeshGeneration { error: String },

    #[error("Avatar {agent_id} not yet fully loaded")]
    NotLoaded { agent_id: Uuid },

    #[error("Avatar {agent_id} not yet in scene")]
    NotPresent { agent_id: Uuid },
}

#[derive(Debug, thiserror::Error)]
pub enum AnimationError {
    #[error("Session Error: {0}")]
    SessionError(#[from] SessionError),

    #[error("{feature} is currently unimplmented")]
    Unimplemented { feature: String },

    #[error("Metaverse Mesh Animation Error: {0}")]
    AnimationError(#[from] MetaverseMeshAnimationError),

    #[error("Mesh Error: {0}")]
    MeshError(#[from] MetaverseMeshError),
}