moved to rust style file tree
This commit is contained in:
48
src/canvas/canvas_frame.rs
Normal file
48
src/canvas/canvas_frame.rs
Normal file
@@ -0,0 +1,48 @@
|
||||
use crate::util::vertex_3d::{Vertex3D};
|
||||
use std::sync::Arc;
|
||||
use std::collections::HashMap;
|
||||
use crate::canvas::canvas_state::{Drawable, CanvasTextureHandle, CanvasImageHandle};
|
||||
|
||||
///
|
||||
pub struct CanvasFrame {
|
||||
pub colored_drawables: Vec<Vertex3D>,
|
||||
pub textured_drawables: HashMap<Arc<CanvasTextureHandle>, Vec<Vec<Vertex3D>>>,
|
||||
pub image_drawables: HashMap<Arc<CanvasImageHandle>, Vec<Vec<Vertex3D>>>,
|
||||
}
|
||||
|
||||
impl CanvasFrame {
|
||||
|
||||
/// Creates a bare canvas frame with empty accumulators
|
||||
pub fn new() -> CanvasFrame {
|
||||
CanvasFrame {
|
||||
colored_drawables: vec![],
|
||||
textured_drawables: Default::default(),
|
||||
image_drawables: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Accumulates the drawables collected Vertex2D's
|
||||
pub fn draw(&mut self, drawable: &dyn Drawable) {
|
||||
match drawable.get_texture_handle() {
|
||||
Some(handle) => {
|
||||
self.textured_drawables
|
||||
.entry(handle.clone())
|
||||
.or_insert(Vec::new())
|
||||
.push(drawable.collect());
|
||||
}
|
||||
None => {
|
||||
match drawable.get_image_handle() {
|
||||
Some(handle) => {
|
||||
self.image_drawables
|
||||
.entry(handle.clone())
|
||||
.or_insert(Vec::new())
|
||||
.push(drawable.collect());
|
||||
}
|
||||
None => {
|
||||
self.colored_drawables.extend(drawable.collect());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user