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