pub mod animation;
pub mod gltf;
mod loader;
pub mod retarget;
pub mod spawn;
use crate::vrma::animation::VrmaAnimationPlayersPlugin;
use crate::vrma::loader::{VrmaAsset, VrmaLoaderPlugin};
use crate::vrma::retarget::VrmaRetargetPlugin;
use crate::vrma::spawn::VrmaSpawnPlugin;
use bevy::app::App;
use bevy::asset::Handle;
use bevy::prelude::*;
#[cfg(feature = "reflect")]
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use std::time::Duration;
pub struct VrmaPlugin;
impl Plugin for VrmaPlugin {
fn build(
&self,
app: &mut App,
) {
app.add_plugins((
VrmaLoaderPlugin,
VrmaSpawnPlugin,
VrmaRetargetPlugin,
VrmaAnimationPlayersPlugin,
));
#[cfg(feature = "reflect")]
{
app.register_type::<Vrma>()
.register_type::<VrmaEntity>()
.register_type::<VrmaHandle>()
.register_type::<VrmaPath>()
.register_type::<VrmaDuration>()
.register_type::<RetargetTo>()
.register_type::<RetargetSource>();
}
}
}
#[derive(Debug, Component)]
#[cfg_attr(feature = "reflect", derive(Reflect))]
#[cfg_attr(feature = "reflect", reflect(Component))]
pub struct VrmaHandle(pub Handle<VrmaAsset>);
#[derive(Debug, Component, Copy, Clone)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
#[cfg_attr(feature = "reflect", reflect(Component, Serialize, Deserialize))]
pub struct Vrma;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
pub struct VrmaEntity(pub Entity);
#[derive(Component, Debug, Clone, Eq, PartialEq)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
#[cfg_attr(feature = "reflect", reflect(Component, Serialize, Deserialize))]
pub struct VrmaPath(pub PathBuf);
#[derive(Debug, Component)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
#[cfg_attr(feature = "reflect", reflect(Component, Serialize, Deserialize))]
pub struct VrmaDuration(pub Duration);
#[derive(Debug, Event, Copy, Clone)]
#[cfg_attr(feature = "reflect", derive(Reflect))]
pub struct LoadedVrma {
pub vrm: Entity,
}
#[derive(Debug, Component)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
#[cfg_attr(feature = "reflect", reflect(Component, Serialize, Deserialize))]
struct RetargetTo(pub Entity);
#[derive(Component)]
#[cfg_attr(feature = "reflect", derive(Reflect, Serialize, Deserialize))]
#[cfg_attr(feature = "reflect", reflect(Component, Serialize, Deserialize))]
struct RetargetSource;