use byteorder::{LittleEndian, ReadBytesExt};
use serde::{Deserialize, Serialize};
use std::io::{Cursor, Read};
use uuid::Uuid;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AttachedSound {
pub sound_id: Uuid,
pub owner_id: Option<Uuid>,
pub gain: f32,
pub flags: u8,
pub radius: f32,
}
impl AttachedSound {
pub fn from_bytes(bytes: &[u8]) -> std::io::Result<Self> {
let mut cursor = Cursor::new(bytes);
let mut sound_id_bytes = [0u8; 16];
cursor.read_exact(&mut sound_id_bytes)?;
let mut owner_id_bytes = [0u8; 16];
cursor.read_exact(&mut owner_id_bytes)?;
Ok(Self {
sound_id: Uuid::from_bytes(sound_id_bytes),
owner_id: Some(Uuid::from_bytes(owner_id_bytes)),
gain: cursor.read_f32::<LittleEndian>()?,
flags: cursor.read_u8()?,
radius: cursor.read_f32::<LittleEndian>()?,
})
}
}