mirror of
https://github.com/lisk77/comet.git
synced 2025-10-23 21:38:50 +00:00
73 lines
No EOL
1.8 KiB
Rust
73 lines
No EOL
1.8 KiB
Rust
use comet::prelude::*;
|
|
use winit_input_helper::WinitInputHelper;
|
|
use comet_input::keyboard::Key;
|
|
|
|
fn setup(app: &mut App, renderer: &mut Renderer2D) {
|
|
// Takes all the textures from resources/textures and puts them into a texture atlas
|
|
renderer.initialize_atlas();
|
|
|
|
let camera = app.new_entity();
|
|
app.add_component(camera, Transform2D::new());
|
|
app.add_component(camera, Camera2D::new(v2::new(2.0, 2.0), 1.0, 1));
|
|
|
|
let e1 = app.new_entity();
|
|
|
|
app.add_component(e1, Transform2D::new());
|
|
|
|
let mut renderer2d = Render2D::new();
|
|
renderer2d.set_texture(r"resources/textures/comet_icon.png");
|
|
renderer2d.set_visibility(true);
|
|
|
|
app.add_component(e1, renderer2d);
|
|
}
|
|
|
|
fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) {
|
|
handle_input(app, dt);
|
|
|
|
renderer.render_scene_2d(app.scene());
|
|
}
|
|
|
|
fn handle_input(app: &mut App, dt: f32) {
|
|
if app.key_held(Key::KeyW)
|
|
|| app.key_held(Key::KeyA)
|
|
|| app.key_held(Key::KeyS)
|
|
|| app.key_held(Key::KeyD)
|
|
{
|
|
update_position(
|
|
app.input_manager().clone(),
|
|
app.get_component_mut::<Transform2D>(1).unwrap(),
|
|
dt
|
|
);
|
|
}
|
|
}
|
|
|
|
fn update_position(input: WinitInputHelper, transform: &mut Transform2D, dt: f32) {
|
|
let mut direction = v2::ZERO;
|
|
|
|
if input.key_held(Key::KeyW) {
|
|
direction += v2::Y;
|
|
}
|
|
if input.key_held(Key::KeyA) {
|
|
direction -= v2::X;
|
|
}
|
|
if input.key_held(Key::KeyS) {
|
|
direction -= v2::Y;
|
|
}
|
|
if input.key_held(Key::KeyD) {
|
|
direction += v2::X;
|
|
}
|
|
|
|
// If check to prevent division by zero and the comet to fly off into infinity...
|
|
if direction != v2::ZERO {
|
|
let normalized_dir = direction.normalize();
|
|
let displacement = normalized_dir * 777.7 * dt;
|
|
transform.translate(displacement);
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
App::new()
|
|
.with_title("Simple Move 2D")
|
|
.with_preset(App2D)
|
|
.run::<Renderer2D>(setup, update);
|
|
} |