#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::f32::consts::TAU;
use pittore::prelude::*;
const TEXTURE_FERRIS: u32 = 123;
const CYCLE: i32 = 30;
struct App {
counter: i32,
}
impl PittoreApp for App {
fn init(&mut self, c: &mut Context) {
let data = image::load_from_memory(include_bytes!("assets/ferris.png")).unwrap();
c.register_texture(TEXTURE_FERRIS, data);
}
fn update(&mut self, c: &mut Context) {
c.set_camera(Camera::default_2d());
let mut vertices = vec![render2d::Vertex {
position: vec2(0.0, 0.0),
uv: vec2(0.5, 0.5),
}];
for i in 0..self.counter {
let t = -(i as f32 / CYCLE as f32 - 0.25) * TAU;
let (sin, cos) = t.sin_cos();
vertices.push(render2d::Vertex {
position: vec2(cos, sin),
uv: vec2(1.0 + cos, 1.0 - sin) * 0.5,
});
}
if vertices.len() >= 3 {
let handle = c.register_mesh_temporary(Mesh::new_triangle_fan(vertices, false));
c.draw_fill(handle, TEXTURE_FERRIS, [Instance2d::default()]);
}
self.counter = (self.counter + 1) % CYCLE;
}
}
fn main() {
pittore::run("pittore", App { counter: 0 });
}