From d57068af7559f4073b4a3f489171c9db31b6f5fe Mon Sep 17 00:00:00 2001 From: polsevev Date: Tue, 8 Nov 2022 06:32:39 +0100 Subject: [PATCH] Remember to build for Release, literally 100x performance! --- src/BarPlugin.rs | 10 +++++----- src/GuiHookVec.rs | 3 ++- src/State.rs | 43 ++++++++++++++++++------------------------- src/main.rs | 4 ++-- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/src/BarPlugin.rs b/src/BarPlugin.rs index cd7183e..a33162c 100644 --- a/src/BarPlugin.rs +++ b/src/BarPlugin.rs @@ -1,21 +1,21 @@ -use macroquad::color::Color; +use macroquad::color; use macroquad::color_u8; use macroquad::rand; #[derive(Debug, Clone)] pub struct Bar { pub position:i32, - pub color:Color + pub color:color::Color } impl Bar{ - pub fn new(position:i32) -> Self{ - + pub fn new(position:i32, hsl_color:f32) -> Self{ + println!("{}", hsl_color); Bar{ position, - color:Color::from_rgba(rand::gen_range(0, 255),rand::gen_range(0, 254),rand::gen_range(0, 255),255), + color: color::hsl_to_rgb((hsl_color as f32) , 1.0, 0.5), } } } diff --git a/src/GuiHookVec.rs b/src/GuiHookVec.rs index fe1c6be..f54ae06 100644 --- a/src/GuiHookVec.rs +++ b/src/GuiHookVec.rs @@ -28,9 +28,10 @@ impl GuiVec{ pub fn new(screen_width:f32, screen_height:f32,length:i32) -> Self { let barWidth = (screen_width/((length) as f32)) - 1_f32; let barHeightStep = (screen_height/((length) as f32)); + let colorStep = 360./length as f32; let mut list:Vec = vec!(); for i in 1..length+1 { - list.push(Bar::new(i)); + list.push(Bar::new(i, (colorStep*i as f32)/360.)); } GuiVec{list, initialSize:length as usize, lastTime: 0.0 , reads:0, writes:0, comps:0, screen_height, screen_width} } diff --git a/src/State.rs b/src/State.rs index 8bf569b..ff4bdcb 100644 --- a/src/State.rs +++ b/src/State.rs @@ -4,6 +4,7 @@ use std::time::Instant; use macroquad::color::{BLACK, WHITE}; use macroquad::math::Vec2; use macroquad::prelude::{clear_background, draw_text, get_fps, get_time, next_frame, screen_width}; +use macroquad::time::get_frame_time; use macroquad::ui::root_ui; use macroquad::window::screen_height; use crate::Algorithm::Algorithm; @@ -20,24 +21,22 @@ impl State{ let mut lasttime:f64 = 0.; let mut holder = GuiVec::new(screen_width(), screen_height(), length); let mut counter = 0; - + let mut speed = 200; loop{ clear_background(WHITE); - if get_time()-lasttime > timeout && !finished && !paused{ - let now = Instant::now(); - match Pin::new(& mut generator).resume(()){ - GeneratorState::Yielded(x) => { - holder = x; - let elapsed = now.elapsed(); - //println!("{}", elapsed.as_micros()); - println!("{}", get_fps()) - }, - GeneratorState::Complete(x) => { - finished = true; - paused = true; - } - }; - lasttime = get_time(); + for _ in 0..speed{ + if get_time()-lasttime > timeout && !finished && !paused{ + match Pin::new(& mut generator).resume(()){ + GeneratorState::Yielded(x) => { + holder = x; + }, + GeneratorState::Complete(x) => { + finished = true; + paused = true; + } + }; + lasttime = get_time(); + } } holder.draw(); draw_text(format!("Read: {}", holder.reads).as_str(), screen_width()*0.01, 20.0, 20.0, BLACK); @@ -55,15 +54,9 @@ impl State{ if root_ui().button(Vec2::new(screen_width()*0.01, 110.), "Return"){ ret = true; } - if (finished && ret) || ret { - break; - } - if counter != 20{ - counter += 1; - }else{ - counter = 0; - next_frame().await - } + + next_frame().await + } } } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 181a4a1..26d728c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,9 +19,9 @@ use crate::Algorithm::AlgoEnum; #[macroquad::main("BeepSort")] async fn main() { - let mut length = 200; + let mut length = 100; - let mut delay = 0.0; + let mut delay = 0.; loop{ clear_background(WHITE);