pub mod tokens;
mod schema;
pub use schema::{AssetPreviewsAPI, SpatialAudio};
use tokens::*;
macro_rules! impl_media_schema {
(xformable $ty:ident) => {
impl $crate::usd::SchemaBase for $ty {
const KIND: $crate::usd::SchemaKind = $crate::usd::SchemaKind::ConcreteTyped;
fn prim(&self) -> &$crate::usd::Prim {
&self.0
}
}
impl $crate::schemas::geom::Imageable for $ty {}
impl $crate::schemas::geom::Xformable for $ty {}
};
(applied_api $ty:ident) => {
impl $crate::usd::SchemaBase for $ty {
const KIND: $crate::usd::SchemaKind = $crate::usd::SchemaKind::SingleApplyApi;
fn prim(&self) -> &$crate::usd::Prim {
&self.0
}
}
};
}
pub(crate) use impl_media_schema;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum AuralMode {
#[default]
Spatial,
NonSpatial,
}
impl AuralMode {
pub fn as_token(self) -> &'static str {
match self {
AuralMode::Spatial => AURAL_SPATIAL,
AuralMode::NonSpatial => AURAL_NON_SPATIAL,
}
}
pub fn from_token(s: &str) -> Option<Self> {
Some(match s {
AURAL_SPATIAL => AuralMode::Spatial,
AURAL_NON_SPATIAL => AuralMode::NonSpatial,
_ => return None,
})
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum PlaybackMode {
#[default]
OnceFromStart,
OnceFromStartToEnd,
LoopFromStart,
LoopFromStartToEnd,
LoopFromStage,
}
impl PlaybackMode {
pub fn as_token(self) -> &'static str {
match self {
PlaybackMode::OnceFromStart => PLAYBACK_ONCE_FROM_START,
PlaybackMode::OnceFromStartToEnd => PLAYBACK_ONCE_FROM_START_TO_END,
PlaybackMode::LoopFromStart => PLAYBACK_LOOP_FROM_START,
PlaybackMode::LoopFromStartToEnd => PLAYBACK_LOOP_FROM_START_TO_END,
PlaybackMode::LoopFromStage => PLAYBACK_LOOP_FROM_STAGE,
}
}
pub fn from_token(s: &str) -> Option<Self> {
Some(match s {
PLAYBACK_ONCE_FROM_START => PlaybackMode::OnceFromStart,
PLAYBACK_ONCE_FROM_START_TO_END => PlaybackMode::OnceFromStartToEnd,
PLAYBACK_LOOP_FROM_START => PlaybackMode::LoopFromStart,
PLAYBACK_LOOP_FROM_START_TO_END => PlaybackMode::LoopFromStartToEnd,
PLAYBACK_LOOP_FROM_STAGE => PlaybackMode::LoopFromStage,
_ => return None,
})
}
}