use glam::Vec2;
use repose_core::Color;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum SpriteBlend {
#[default]
Alpha,
Additive,
Multiply,
}
#[derive(Clone, Copy, Debug)]
pub struct SpriteInstance {
pub center: Vec2,
pub rotation: f32,
pub size: Vec2,
pub anchor: Vec2,
pub flip_x: bool,
pub flip_y: bool,
pub uv_min: Vec2,
pub uv_max: Vec2,
pub color: [f32; 4],
pub page: u32,
pub z: f32,
pub blend: SpriteBlend,
pub light_mask: u32,
}
impl Default for SpriteInstance {
fn default() -> Self {
Self {
center: Vec2::ZERO,
rotation: 0.0,
size: Vec2::ONE,
anchor: Vec2::new(0.5, 0.5),
flip_x: false,
flip_y: false,
uv_min: Vec2::ZERO,
uv_max: Vec2::ONE,
color: [1.0, 1.0, 1.0, 1.0],
page: 0,
z: 0.0,
blend: SpriteBlend::Alpha,
light_mask: 1,
}
}
}
#[derive(Clone, Debug, Default)]
pub struct WorldText {
pub text: String,
pub pos: Vec2,
pub color: [f32; 4],
pub size: f32,
pub font_family: Option<&'static str>,
}
pub fn rgba8(c: [f32; 4]) -> Color {
Color::from_rgba(
(c[0].clamp(0.0, 1.0) * 255.0) as u8,
(c[1].clamp(0.0, 1.0) * 255.0) as u8,
(c[2].clamp(0.0, 1.0) * 255.0) as u8,
(c[3].clamp(0.0, 1.0) * 255.0) as u8,
)
}