1use std::sync::Arc;
2
3use rhachis::{
4 camera::SimpleProjection,
5 graphics::SamplerType,
6 model::{Model, Transform},
7 renderers::{SimpleRenderer, SimpleRendererBuilder},
8 texture::Texture,
9 Game, GameExt,
10};
11
12#[rhachis::run]
13struct Image {
14 renderer: SimpleRenderer,
15}
16
17impl Game for Image {
18 fn init() -> Self {
19 let mut renderer = SimpleRendererBuilder {
20 projection_builder: Box::new(|size| {
21 SimpleProjection::center_height(size.as_vec2(), 2.0)
22 }),
23 ..SimpleRendererBuilder::default()
24 }
25 .build();
26 renderer.models.push(Model::quad_texture(
27 Arc::new(
28 Texture::from_path(
29 "examples/test.png",
30 SamplerType {
31 address_mode: wgpu::AddressMode::ClampToEdge,
32 filter_mode: wgpu::FilterMode::Linear,
33 },
34 )
35 .unwrap(),
36 ),
37 vec![Transform::scale((0.5, 0.5, 1.0))],
38 ));
39
40 Self { renderer }
41 }
42
43 fn get_renderer(&mut self) -> &mut dyn rhachis::graphics::Renderer {
44 &mut self.renderer
45 }
46}