57 lines
1.4 KiB
Rust
57 lines
1.4 KiB
Rust
use crate::effects::star_field;
|
|
use crate::slide::Slide;
|
|
use crate::slide_show_config::Context;
|
|
use crate::utils::screen_center;
|
|
use macroquad::color::BLACK;
|
|
use macroquad::prelude::*;
|
|
|
|
#[derive(Debug, Default)]
|
|
pub struct Demo {
|
|
camera_angle: f32,
|
|
}
|
|
|
|
impl Demo {
|
|
pub fn new() -> Box<Self> {
|
|
Box::new(Self::default())
|
|
}
|
|
}
|
|
|
|
impl Slide for Demo {
|
|
fn display(&mut self, ctx: &Context<'_>) {
|
|
clear_background(BLACK);
|
|
star_field();
|
|
|
|
push_camera_state();
|
|
|
|
let camera_x = self.camera_angle.sin() * 20.0;
|
|
let camera_z = self.camera_angle.cos() * 20.0;
|
|
set_camera(&Camera3D {
|
|
position: vec3(camera_x, 15., camera_z),
|
|
up: vec3(0., 1., 0.),
|
|
target: vec3(0.0, 0.0, 0.0),
|
|
..Default::default()
|
|
});
|
|
|
|
draw_sphere_wires(vec3(0.0, 0.0, 0.0), 6.0, None, RED);
|
|
|
|
draw_sphere_wires(vec3(15.0, 0.0, 0.0), 2.0, None, RED);
|
|
|
|
draw_sphere_wires(vec3(0.0, 0.0, 15.0), 2.0, None, RED);
|
|
|
|
draw_sphere_wires(vec3(-15.0, 0.0, 0.0), 2.0, None, RED);
|
|
|
|
draw_sphere_wires(vec3(0.0, 0.0, -15.0), 2.0, None, RED);
|
|
|
|
draw_sphere_wires(vec3(15.0, 0.0, 0.0), 2.0, None, RED);
|
|
|
|
let diff = 1.0 * get_frame_time();
|
|
self.camera_angle = (self.camera_angle + diff) % 360.0;
|
|
|
|
pop_camera_state();
|
|
|
|
ctx.slide_show_theme
|
|
.heading_config
|
|
.draw_text("This Ain't No Powerpoint", screen_center());
|
|
}
|
|
}
|