engine/resources/assets/
audio_clip.rs

1// SPDX-FileCopyrightText: 2024 Jens Pitkänen <jens.pitkanen@helsinki.fi>
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5//! Asset type for individual tracks of audio.
6
7use core::ops::Range;
8
9use super::{gen_asset_handle_code, Asset};
10
11gen_asset_handle_code!(
12    AudioClipAsset,
13    AudioClipHandle,
14    find_audio_clip,
15    get_audio_clip,
16    audio_clips
17);
18
19/// Playable audio track.
20#[derive(Debug)]
21pub struct AudioClipAsset {
22    /// The total amount of samples in the chunks.
23    pub samples: u32,
24    /// The chunks containing the samples.
25    pub chunks: Range<u32>,
26}
27
28impl Asset for AudioClipAsset {
29    fn get_chunks(&self) -> Option<Range<u32>> {
30        Some(self.chunks.clone())
31    }
32
33    fn offset_chunks(&mut self, offset: i32) {
34        self.chunks.start = (self.chunks.start as i32 + offset) as u32;
35        self.chunks.end = (self.chunks.end as i32 + offset) as u32;
36    }
37
38    fn get_sprite_chunks(&self) -> Option<Range<u32>> {
39        None
40    }
41
42    fn offset_sprite_chunks(&mut self, _offset: i32) {}
43}