bevy_ym2149 0.9.1

Bevy audio plugin for YM2149 PSG emulator
use bevy::prelude::*;
use std::collections::HashMap;

/// Smoothed per-entity audio metrics for visualization and gameplay hooks.
#[derive(Clone, Debug)]
pub struct ReactiveMetrics {
    pub average: [f32; 3],
    pub peak: [f32; 3],
    pub frequencies: [Option<f32>; 3],
}

impl ReactiveMetrics {
    pub fn new() -> Self {
        Self {
            average: [0.0; 3],
            peak: [0.0; 3],
            frequencies: [None; 3],
        }
    }
}

impl Default for ReactiveMetrics {
    fn default() -> Self {
        Self::new()
    }
}

/// Resource mapping playback entities to their most recent reactive metrics.
#[derive(Resource, Default)]
pub struct AudioReactiveState {
    pub metrics: HashMap<Entity, ReactiveMetrics>,
}