scanning #1
142
src/main.rs
142
src/main.rs
@@ -2,37 +2,94 @@ use core::f32;
|
|||||||
|
|
||||||
use macroquad::prelude::*;
|
use macroquad::prelude::*;
|
||||||
|
|
||||||
#[macroquad::main("InputKeys")]
|
const DOT_RADIUS: f32 = 1.0;
|
||||||
async fn main() {
|
|
||||||
// sin wave
|
|
||||||
let mut freq = 0.1;
|
|
||||||
let mut amp = 50.0;
|
|
||||||
let freq_mod = 0.001;
|
|
||||||
let amp_mod = 5.;
|
|
||||||
let y_offset = screen_height() / 2.0;
|
|
||||||
let mut x_offset = 0.0;
|
|
||||||
let x_mod = 5.0;
|
|
||||||
|
|
||||||
// selection box
|
struct Dot {
|
||||||
|
x: f32,
|
||||||
|
y: f32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Dot {
|
||||||
|
fn new(x: f32, y: f32) -> Self {
|
||||||
|
Self {x,y}
|
||||||
|
}
|
||||||
|
fn draw(&self) {
|
||||||
|
draw_circle(self.x, self.y,DOT_RADIUS, GREEN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct DebugWindow {
|
||||||
|
text: Vec<String>,
|
||||||
|
text_margin: f32,
|
||||||
|
}
|
||||||
|
impl DebugWindow {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
text: Vec::new(),
|
||||||
|
text_margin: 20.0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn add_line(&mut self, line: String) {
|
||||||
|
self.text.push(line);
|
||||||
|
}
|
||||||
|
fn draw(&self) {
|
||||||
|
let params = TextParams { color: WHITE, ..Default::default()} ;
|
||||||
|
|
||||||
|
self.text.iter().enumerate().for_each(|(index, text)| {
|
||||||
|
let x = self.text_margin;
|
||||||
|
let y = self.text_margin+20.*(index as f32 + 1.);
|
||||||
|
|
||||||
|
// let measurement = measure_text(text, None, params.font_size, params.font_scale);
|
||||||
|
// draw_rectangle(x,y,measurement.width,-measurement.height, Color { r: 1., g: 1., b: 1., a: 0.25 });
|
||||||
|
draw_text_ex(text, x, y, params.clone());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[macroquad::main("Graph")]
|
||||||
|
async fn main() {
|
||||||
|
// Dot params
|
||||||
|
let y_offset = screen_height() / 2.0;
|
||||||
|
let mut x_offset = screen_width();
|
||||||
|
let mut trail: Vec<Dot> = Vec::new();
|
||||||
|
|
||||||
|
// Selection box
|
||||||
let mut inital_x_pos = 0.;
|
let mut inital_x_pos = 0.;
|
||||||
let mut inital_y_pos = 0.;
|
let mut inital_y_pos = 0.;
|
||||||
|
|
||||||
|
// Tooling
|
||||||
let mut show_debug = false;
|
let mut show_debug = false;
|
||||||
|
let mut px_per_s: f32 = 100.;
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
clear_background(BLACK);
|
clear_background(BLACK);
|
||||||
if show_debug {
|
|
||||||
let text_h = 20.0;
|
let delta_time = get_frame_time();
|
||||||
let text_margin = 20.0;
|
|
||||||
draw_text(&format!("Amplitude: {}, Freqency {}, X Offset {}", amp, freq, x_offset) , text_margin, text_h*1. +text_margin, text_h, WHITE);
|
if x_offset >= screen_width() {
|
||||||
draw_text(&format!("Cursor {:?}, Last Click {:?}", mouse_position(), (inital_x_pos, inital_y_pos)) , text_margin, text_h*2. +text_margin, text_h, WHITE);
|
// wrap once you've hit the end of the line
|
||||||
}
|
x_offset = 0.;
|
||||||
|
trail.clear();
|
||||||
// toggle debug box
|
} else {
|
||||||
if is_key_pressed(KeyCode::LeftControl) {
|
x_offset = x_offset + (delta_time * px_per_s);
|
||||||
show_debug = !show_debug;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let x = 0.+x_offset;
|
||||||
|
let y = 0.+y_offset;
|
||||||
|
|
||||||
|
let dot = Dot::new(x,y);
|
||||||
|
trail.push(dot);
|
||||||
|
trail.iter().for_each(|d| d.draw());
|
||||||
|
|
||||||
|
if is_key_pressed(KeyCode::D) {
|
||||||
|
show_debug = !show_debug;
|
||||||
|
}
|
||||||
|
if is_key_pressed(KeyCode::Up) {
|
||||||
|
px_per_s += 5.;
|
||||||
|
}
|
||||||
|
if is_key_pressed(KeyCode::Down) {
|
||||||
|
px_per_s -= 5.;
|
||||||
|
}
|
||||||
// selection box
|
// selection box
|
||||||
if is_mouse_button_pressed(MouseButton::Left) {
|
if is_mouse_button_pressed(MouseButton::Left) {
|
||||||
(inital_x_pos, inital_y_pos) = mouse_position();
|
(inital_x_pos, inital_y_pos) = mouse_position();
|
||||||
@@ -43,36 +100,19 @@ async fn main() {
|
|||||||
let width = x - inital_x_pos;
|
let width = x - inital_x_pos;
|
||||||
let height = y - inital_y_pos;
|
let height = y - inital_y_pos;
|
||||||
|
|
||||||
draw_rectangle(inital_x_pos, inital_y_pos, width, height, Color { r: 0.2, g: 0.1, b: 1., a: 0.5 });
|
draw_rectangle(inital_x_pos, inital_y_pos, width, height, Color { r: 0.2, g: 0.1, b: 1., a: 0.3 });
|
||||||
|
}
|
||||||
|
// toggle debug box
|
||||||
|
if show_debug {
|
||||||
|
let mut debug = DebugWindow::new();
|
||||||
|
debug.add_line(format!("FPS {}, Latency {:.2}ms", get_fps(), delta_time * 1000.0));
|
||||||
|
debug.add_line(format!("px/s {}", px_per_s));
|
||||||
|
debug.add_line(format!("Dots {}", trail.len()));
|
||||||
|
debug.add_line(format!("Cursor Pos {:?}", mouse_position()));
|
||||||
|
debug.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
// sin wave
|
next_frame().await;
|
||||||
for x in 0..(screen_width() as i32) {
|
|
||||||
let x = x as f32;
|
|
||||||
|
|
||||||
let y = f32::sin(x * freq + x_offset)*amp + y_offset;
|
|
||||||
|
|
||||||
draw_circle(x, y, 3.0, GREEN);
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::PageUp) {
|
|
||||||
freq += freq_mod;
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::PageDown) {
|
|
||||||
freq -= freq_mod;
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::Up) {
|
|
||||||
amp += amp_mod;
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::Down) {
|
|
||||||
amp -= amp_mod;
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::Left) {
|
|
||||||
x_offset += x_mod;
|
|
||||||
}
|
|
||||||
if is_key_down(KeyCode::Right) {
|
|
||||||
x_offset -= x_mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
next_frame().await
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user