1use bottomless_pit::colour::Colour;
2use bottomless_pit::engine_handle::{Engine, EngineBuilder};
3use bottomless_pit::input::MouseKey;
4use bottomless_pit::material::{Material, MaterialBuilder};
5use bottomless_pit::render::RenderHandle;
6use bottomless_pit::resource::LoadingOp;
7use bottomless_pit::texture::Texture;
8use bottomless_pit::vec2;
9use bottomless_pit::vectors::Vec2;
10use bottomless_pit::Game;
11
12fn main() {
13 let mut engine = EngineBuilder::new()
14 .set_window_title("Testing Triangle")
15 .with_resolution((400, 400))
16 .build()
17 .unwrap();
18
19 let texture = Texture::new(&mut engine, "examples/bplogo.png", LoadingOp::Blocking);
20
21 let texture = MaterialBuilder::new()
22 .add_texture(texture)
23 .build(&mut engine);
24 let defualt = MaterialBuilder::new().build(&mut engine);
25
26 let s = TextureExample {
27 current: texture,
28 other: defualt,
29 pos: vec2! { 0.0 },
30 };
31
32 engine.run(s);
33}
34
35struct TextureExample {
36 current: Material,
37 other: Material,
38 pos: Vec2<f32>,
39}
40
41impl Game for TextureExample {
42 fn render<'o>(&'o mut self, mut render: RenderHandle<'o>) {
43 let mut render_handle = render.begin_pass(Colour::BLACK);
44
45 self.current.add_rectangle(
46 vec2! { 0.0 },
47 vec2! { 400.0 },
48 Colour::WHITE,
49 &render_handle,
50 );
51 self.current.draw(&mut render_handle);
52 }
53
54 fn update(&mut self, engine_handle: &mut Engine) {
55 let dt = engine_handle.get_frame_delta_time();
56 if engine_handle.is_mouse_key_pressed(MouseKey::Left) {
57 std::mem::swap(&mut self.other, &mut self.current);
58 }
59 self.pos.x += 100.0 * dt;
60 }
61}