use actix::Message;
use std::path::PathBuf;
use std::time::SystemTime;
use glam::Mat4;
use metaverse_messages::utils::skeleton::Joint;
use metaverse_messages::utils::skeleton::JointName;
use metaverse_messages::utils::skeleton::Transform;
use glam::Vec3;
use metaverse_messages::utils::skeleton::Skeleton;
use uuid::Uuid;
#[derive(Debug, Clone, Message)]
#[rtype(result = "()")]
pub struct Avatar {
pub agent_id: Uuid,
pub items: Vec<OutfitObject>,
pub position: Vec3,
pub skeleton: Skeleton,
pub path: Option<PathBuf>,
pub outfit_size: usize,
pub last_update: SystemTime,
}
impl Avatar {
pub fn new(agent_id: Uuid, position: Vec3) -> Self {
Avatar {
agent_id,
position,
items: Vec::new(),
skeleton: include!(concat!(env!("OUT_DIR"), "/default_skeleton.rs")),
path: None,
last_update: SystemTime::now(),
outfit_size: 0,
}
}
}
#[derive(Debug, Clone)]
pub enum OutfitObject {
MeshObject(PathBuf),
Bodypart,
Clothing,
Other,
}