est_render/gpu/texture/
sprite.rs

1use crate::math::RectF;
2use super::Texture;
3
4pub struct Sprite {
5    pub texture: Texture,
6    texcoords: Vec<RectF>,
7    index: usize,
8
9    delay: f32,
10    elapsed: f32,
11}
12
13impl Sprite {
14    pub fn update(&mut self, dt: f32) {
15        self.elapsed += dt;
16        if self.elapsed >= self.delay {
17            self.elapsed = 0.0;
18            self.index = (self.index + 1) % self.texcoords.len();
19        }
20    }
21
22    pub fn reset(&mut self) {
23        self.index = 0;
24        self.elapsed = 0.0;
25    }
26
27    pub fn current_texcoords(&self) -> RectF {
28        self.texcoords[self.index]
29    }
30
31    pub fn texture(&self) -> &super::Texture {
32        &self.texture
33    }
34}