#[cfg(feature = "client")]
use std::sync::Arc;
#[cfg(feature = "client")]
use let_engine::prelude::*;
#[cfg(not(feature = "client"))]
fn main() {
eprintln!("This example requires you to have the `client` feature enabled.");
}
#[cfg(feature = "client")]
fn main() {
let window_builder = WindowBuilder::new().inner_size(vec2(1280.0, 720.0));
let engine = Engine::new(
EngineSettingsBuilder::default()
.window_settings(window_builder)
.build()
.unwrap(),
)
.unwrap();
let game = Game::new();
engine.start(game);
}
#[cfg(feature = "client")]
struct Game {
main_layer: Arc<Layer>,
exit: bool,
}
#[cfg(feature = "client")]
impl Game {
pub fn new() -> Self {
Self {
main_layer: SCENE.new_layer(),
exit: false,
}
}
}
#[cfg(feature = "client")]
impl let_engine::Game for Game {
fn start(&mut self) {
self.main_layer.set_camera_settings(CameraSettings {
zoom: 0.5,
mode: CameraScaling::Expand,
});
let mut circle = NewObject::new();
circle
.appearance
.set_model(Model::Custom(ModelData::new(make_circle!(30)).unwrap()));
circle.init(&self.main_layer).unwrap();
}
fn event(&mut self, event: events::Event) {
match event {
Event::Window(WindowEvent::CloseRequested) => {
self.exit = true;
}
Event::Input(InputEvent::KeyboardInput { input }) => {
if input.state == ElementState::Pressed {
if let Some(VirtualKeyCode::Escape) = input.keycode {
self.exit = true;
}
}
}
_ => (),
};
}
fn exit(&self) -> bool {
self.exit
}
}