use std::sync::Arc; use crate::canvas::*; use crate::canvas::managed::handles::{CanvasFontHandle, CanvasImageHandle, CanvasTextureHandle, Handle}; use crate::canvas::canvas_frame::{Drawable}; use crate::util::vertex::{VertexTypes, TextureVertex3D, Vertex3D}; /// #[derive(Debug, Clone)] pub struct Sprite { pub verts: VertexTypes, position: (f32, f32), size: (f32, f32), } /// Container class which implements drawable. impl Sprite { /// pub fn new(position: (f32, f32), size: (f32, f32), depth: u32, texture_handle: Arc) -> Sprite { let normalized_depth = (depth as f32 / 255.0); let verts = vec![ TextureVertex3D{ v_position: [position.0, position.1, normalized_depth], // top left ti_position: [-0.0, -0.0] }, TextureVertex3D{ v_position: [position.0, position.1 + size.1, normalized_depth], // bottom left ti_position: [-0.0, 1.0] }, TextureVertex3D{ v_position: [position.0 + size.0, position.1 + size.1, normalized_depth], // bottom right ti_position: [1.0, 1.0] }, TextureVertex3D{ v_position: [position.0, position.1, normalized_depth], // top left ti_position: [-0.0, -0.0] }, TextureVertex3D{ v_position: [position.0 + size.0, position.1 + size.1, normalized_depth], // bottom right ti_position: [1.0, 1.0] }, TextureVertex3D{ v_position: [position.0 + size.0, position.1, normalized_depth], // top right ti_position: [1.0, -0.0] }, ]; Sprite { verts: VertexTypes::TextureType(verts, texture_handle), position: position, size: size, } } } impl Drawable for Sprite{ fn get(&self) -> VertexTypes { self.verts.clone() } }