texture/
texture.rs

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}