use std::sync::Arc; use std::collections::HashMap; use std::hash::Hash; use crate::canvas::*; use crate::canvas::managed::shader::dynamic_vertex::RuntimeVertexDef; use crate::canvas::managed::handles::{CanvasTextureHandle, CanvasImageHandle, CanvasFontHandle, Handle}; use vulkano::pipeline::vertex::Vertex; use std::any::Any; use crate::VertexType; use winit::event::Event; /// Trait which may be inherited by objects that wish to be drawn to the screen pub trait Drawable { fn get(&self) -> Vec; } /// Trait which may be inherited by objects that wish to receive events pub trait Eventable { fn notify(&mut self, event: &Event) -> (); } /// Accumulator for Vectors of VertexTypes #[derive(Default)] pub struct CanvasFrame { pub map: Vec, } impl CanvasFrame { /// Push this drawable onto the back of the accumulator pub fn draw(&mut self, drawable: &dyn Drawable) { for i in drawable.get() { self.map.push(i); } } }