diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index e2152db..0000000 --- a/src/main.rs +++ /dev/null @@ -1,170 +0,0 @@ -use std::ops::Deref; -use colored::Color::White; -use image::{GrayImage, Luma}; -use comet::{ - app::{ - App, - ApplicationType::* - }, - renderer::renderer2d::Renderer2D, - ecs::{ - Render2D, - Transform2D, - Component, - Render - }, - math::*, - input::keyboard::*, - log::* -}; - -use winit_input_helper::WinitInputHelper; -use comet_input::input_handler::InputHandler; -use comet_math::noise::{PerlinNoise, ValueNoise, WhiteNoise}; - -#[derive(Debug, Clone)] -struct GameState { - running: bool -} - -impl GameState { - pub fn new() -> Self { - Self { - running: true - } - } - - pub fn is_running(&self) -> bool { - self.running - } - - pub fn set_running(&mut self, running: bool) { - self.running = running; - } -} - -fn update_position(input: WinitInputHelper, transform: &mut Transform2D, dt: f32) { - let mut direction = Vec2::ZERO; - - if input.key_held(Key::KeyW) { - direction += Vec2::Y; - } - if input.key_held(Key::KeyA) { - direction -= Vec2::X; - } - if input.key_held(Key::KeyS) { - direction -= Vec2::Y; - } - if input.key_held(Key::KeyD) { - direction += Vec2::X; - } - - if direction != Vec2::ZERO { - let normalized_dir = direction.normalize(); - if normalized_dir.x().is_nan() || normalized_dir.y().is_nan() { - error!("Direction is NaN! X: {}, Y: {}", normalized_dir.x(), normalized_dir.y()); - } - let displacement = normalized_dir * 777.7 * dt; - transform.translate(displacement); - } -} - -fn handle_input(app: &mut App, dt: f32) { - if app.key_pressed(Key::NumpadAdd) { debug!("pressed +"); app.set_update_rate(120); } - if app.key_pressed(Key::Minus) { app.set_update_rate(60); } - if app.key_pressed(Key::KeyQ) { app.quit() } - if app.key_pressed(Key::KeyE) { app.world_mut().get_component_mut::(0).translate([0f32,0f32].into()) } - 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.world_mut().get_component_mut::(0), dt); - } -} - -fn setup(app: &mut App, renderer: &mut Renderer2D) { - renderer.initialize_atlas(); - renderer.load_shader(None, "blacknwhite.wgsl"); - renderer.load_shader(None, "crt.wgsl"); - renderer.load_shader(None, "glitch.wgsl"); - - let world = app.world_mut(); - world.register_component::(); - //world.register_component::(); - - let mut renderer2d = Render2D::new(); - renderer2d.set_texture(r"resources/textures/comet_icon.png"); - renderer2d.set_visibility(true); - - let id = world.new_entity(); - world.add_component(id as usize, renderer2d.clone()); - - let transform = world.get_component_mut::(id as usize); - transform.translate(Vec2::X*5.0); - -// world.add_component(id as usize, renderer2d); - - /*let rectangle2d = Rectangle2D::new(*tranform.position(), Vec2::new(0.1, 0.1)); - world.add_component(id as usize, rectangle2d); - - let id2 = world.new_entity(); - let tranform2 = world.get_component_mut::(id as usize); - let rectangle = Rectangle2D::new(*tranform2.position(), Vec2::new(0.1, 0.1)); - - world.add_component(id2 as usize, rectangle);*/ - -} - -fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) { - let is_running = app.game_state::().map(|gs| gs.is_running()).unwrap_or(false); - - match is_running { - true => handle_input(app, dt), - false => {} - } - - if app.key_pressed(Key::KeyP) { app.game_state_mut::().map(|gs| gs.set_running(!gs.is_running())); } - if app.key_pressed(Key::KeyC) { renderer.apply_shader("blacknwhite.wgsl"); } - if app.key_pressed(Key::KeyR) { renderer.apply_base_shader(); } - - renderer.render_scene_2d(app.world()); -} - -fn save_image_fromg_f32_vec(pixels: Vec, width: u32, height: u32, path: &str) -> Result<(), Box>{ - //debug!("{:?}", pixels); - if pixels.len() != (width * height) as usize { - return Err("The size of the input Vec does not match the width and height".into()); - } - - // Create a new image buffer with the given width and height. - let mut img = GrayImage::new(width, height); - - // Iterate over the `Vec` and convert each value to u8. - for (i, &val) in pixels.iter().enumerate() { - let pixel_value = (val * 255.0).clamp(0.0, 255.0) as u8; - let x = (i as u32) % width; - let y = (i as u32) / width; - - img.put_pixel(x, y, Luma([pixel_value])); - } - - // Save the image to the specified path. - img.save(path)?; - - Ok(()) -} - -fn main() { - //let mut perlin = PerlinNoise::new(1000, 1000, 5.0, 777); - let mut perlin = ValueNoise::new(1000, 1000, 15.0, 77); - let noise = perlin.generate(); - save_image_fromg_f32_vec(noise, 1000, 1000, "C:\\Users\\lisk77\\Code Sharing\\comet\\resources\\textures\\perlin.png").unwrap(); - /*App::new(App2D) - .with_title("Comet App") - .with_icon(r"resources/textures/comet_icon.png") - .with_size(1920, 1080) - .with_game_state(GameState::new()) - .run::(setup, update) - ;*/ -} \ No newline at end of file