use bevy::prelude::*;
#[derive(Event, Message, Clone, Debug)]
pub struct ChannelSnapshot {
pub entity: Entity,
pub channel: usize,
pub amplitude: f32,
pub frequency: Option<f32>,
}
#[derive(Event, Message, Clone, Debug)]
pub struct TrackStarted {
pub entity: Entity,
}
#[derive(Event, Message, Clone, Debug)]
pub struct TrackFinished {
pub entity: Entity,
}
#[derive(Event, Message, Clone, Debug)]
pub struct PlaybackFrameMarker {
pub entity: Entity,
pub frame: u64,
pub elapsed_seconds: f32,
pub looped: bool,
}
#[derive(Event, Message, Clone, Debug)]
pub struct MusicStateRequest {
pub state: String,
pub target: Option<Entity>,
}
#[derive(Event, Message, Clone, Debug)]
pub struct PlaylistAdvanceRequest {
pub entity: Entity,
pub index: Option<usize>,
}
#[derive(Event, Message, Clone, Debug)]
pub struct AudioBridgeRequest {
pub entity: Entity,
}
#[derive(Event, Message, Clone, Debug)]
pub struct YmSfxRequest {
pub target: Option<Entity>,
pub channel: usize,
pub freq_hz: f32,
pub volume: f32,
pub duration_frames: u32,
}
#[derive(Event, Message, Clone, Debug)]
pub struct BeatHit {
pub entity: Entity,
pub beat_index: u64,
pub elapsed_seconds: f32,
}
#[derive(Event, Message, Clone, Debug)]
pub struct PatternTriggered {
pub entity: Entity,
pub pattern_id: String,
pub channel: usize,
pub amplitude: f32,
pub frequency: Option<f32>,
pub frame: u64,
pub elapsed_seconds: f32,
}