use std::sync::Arc; use crate::canvas::managed::handles::{CanvasImageHandle, CanvasTextureHandle}; pub struct CompuSprite { pub vertices: [(f32, f32, f32); 6], pub ti_position: [(f32, f32); 6], position: (f32, f32), size: (f32, f32), color: (f32, f32, f32, f32), image_handle: Arc, } impl CompuSprite { pub fn new(position: (f32, f32), size: (f32, f32), depth: u32, image_size: (f32, f32), image_handle: Arc) -> CompuSprite { let normalized_depth = (depth as f32 / 255.0); CompuSprite { vertices: [ (position.0, position.1 , normalized_depth), // top left (position.0, position.1 + size.1 , normalized_depth), // bottom left (position.0 + size.0, position.1 + size.1, normalized_depth), // bottom right (position.0, position.1 , normalized_depth), // top left (position.0 + size.0, position.1 + size.1, normalized_depth), // bottom right (position.0 + size.0, position.1 , normalized_depth), // top right ], ti_position: [ (0.0 , 0.0 ), // top left (0.0 , image_size.1), // bottom left (image_size.0, image_size.1), // bottom right (0.0 , 0.0 ), // top left (image_size.0, image_size.1), // bottom right (image_size.0, 0.0 ), // top right ], position: position, size: size, color: (0.0, 0.0, 0.0, 0.0), image_handle: image_handle.clone(), } } }