cube/
cube.rs

1use cafe::{CafeBuilder, Game, Vec4, Vec3};
2use cafe::render::render3D::Render3D;
3use cafe::render::Render;
4
5extern crate cafe;
6
7pub struct MyGame {
8    positions: Vec<Vec3>
9}
10
11impl Game for MyGame {
12    type Render = Render3D;
13    fn new() -> Self {
14        let positions: Vec<Vec3> = vec![
15            Vec3::new(1.0, 0.0, -3.0),
16            Vec3::new(-2.5, -2.0, -5.0),
17            Vec3::new(-2.5, -2.0, -10.0),
18            Vec3::new(0.0, -3.0, -7.0),
19        ];
20        MyGame { positions }
21    }
22
23    fn run(&mut self, dt: f32, render: &mut Self::Render) -> bool {
24        render.begin();
25        render.clear_color(Vec4::new(0.3, 0.4, 0.4, 1.0));
26        render.clear();
27
28        for pos in &self.positions {
29            render.draw_cube(*pos);
30        }
31
32        render.end();
33        true
34    }
35}
36
37fn main() {
38    let mut cafe = CafeBuilder::new("Cube", 640, 380)
39        .build::<MyGame>()
40        .unwrap();
41    cafe.run();
42}
43