sevenx_engine 0.2.11

Engine de jogos 2D/3D completa com suporte Android, física, áudio, partículas, tilemap, UI, eventos e sistema 3D avançado com PBR.
Documentation
// Sistema de animação de sprites (antigo - para compatibilidade)
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Animation {
    pub frames: Vec<usize>,
    pub current_frame: usize,
    pub current_relative_frame: usize,
    pub frame_duration: f32,
    pub elapsed: f32,
    pub looping: bool,
}

impl Animation {
    pub fn new(frames: Vec<usize>, frame_duration: f32, looping: bool) -> Self {
        Self {
            frames,
            current_frame: 0,
            current_relative_frame: 0,
            frame_duration,
            elapsed: 0.0,
            looping,
        }
    }

    pub fn update(&mut self, dt: f32) {
        self.elapsed += dt;
        if self.elapsed >= self.frame_duration {
            self.elapsed = 0.0;
            self.current_relative_frame += 1;

            if self.current_relative_frame >= self.frames.len() {
                if self.looping {
                    self.current_relative_frame = 0;
                } else {
                    self.current_relative_frame = self.frames.len() - 1;
                }
            }

            if self.current_relative_frame < self.frames.len() {
                self.current_frame = self.frames[self.current_relative_frame];
            }
        }
    }

    pub fn get_current_absolute_frame(&self) -> usize {
        self.current_frame
    }

    pub fn reset(&mut self) {
        self.current_frame = 0;
        self.current_relative_frame = 0;
        self.elapsed = 0.0;
    }
}