use crate::text::TextRenderer;
use crate::texture_svg::TextureSVG;
use crate::utils::{MouseInfo, Position, Rectangle, Size};
use crate::PlutoniumEngine;
use std::collections::HashMap;
use uuid::Uuid;
use winit::keyboard::Key;
pub struct UpdateContext<'a> {
pub device: &'a wgpu::Device,
pub queue: &'a wgpu::Queue,
pub viewport_size: &'a Size,
pub camera_position: &'a Position,
}
pub trait PlutoObject {
fn texture_key(&self) -> Uuid;
fn get_id(&self) -> Uuid;
fn dimensions(&self) -> Rectangle;
fn pos(&self) -> Position;
fn set_dimensions(&mut self, new_dimensions: Rectangle);
fn set_pos(&mut self, new_pos: Position);
fn update(
&mut self,
_mouse_info: Option<MouseInfo>,
_key_pressed: &Option<Key>,
_texture_map: &mut HashMap<Uuid, TextureSVG>,
_update_context: Option<UpdateContext>,
_dpi_scale_factor: f32,
_text_renderer: &TextRenderer,
) {
}
fn render(&self, engine: &mut PlutoniumEngine) {
engine.queue_texture(&self.texture_key(), Some(self.pos()));
}
fn delete(&self, engine: &mut PlutoniumEngine) {
engine.remove_object(self.get_id());
}
}