Skip to main content

sge_api/
lib.rs

1use sge_rendering::{d2::Renderer2D, dq2d, wdq2d};
2use shapes_2d::Shape2DExt;
3
4pub mod area;
5pub mod shapes_2d;
6
7pub trait Drawable {
8    fn draw_to(&self, renderer: Renderer2D);
9    fn draw(&self) {
10        self.draw_to(dq2d())
11    }
12    fn draw_world(&self) {
13        self.draw_to(wdq2d())
14    }
15}
16
17impl<T: Shape2DExt> Drawable for T {
18    fn draw_to(&self, renderer: Renderer2D) {
19        <Self as Shape2DExt>::draw_to(&self, renderer);
20    }
21
22    fn draw(&self) {
23        self.draw_to(dq2d())
24    }
25
26    fn draw_world(&self) {
27        if self.is_visible_in_world() {
28            self.draw_to(wdq2d())
29        }
30    }
31}
32
33pub fn draw<T: Drawable>(v: &T) {
34    v.draw()
35}
36
37pub fn draw_world<T: Drawable>(v: &T) {
38    v.draw_world()
39}
40
41pub fn draw_to<T: Drawable>(v: &T, renderer: Renderer2D) {
42    v.draw_to(renderer)
43}
44
45// impl Drawable for Sdf {
46//     fn draw_to(&self, renderer: Renderer2D) {
47//         draw_sdf_to(*self, renderer);
48//     }
49// }
50
51// impl Drawable for Metaballs {
52//     fn draw_to(&self, renderer: Renderer2D) {
53//         draw_metaballs_to(*self, renderer);
54//     }
55// }