From a648ef360ec8b25f825afd8908feb07e3465d205 Mon Sep 17 00:00:00 2001 From: mars Date: Tue, 15 Nov 2022 16:51:41 -0700 Subject: [PATCH 1/4] Fix vertex and cursor sandbox coords --- apps/sandbox/src/main.rs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/sandbox/src/main.rs b/apps/sandbox/src/main.rs index a6381eb..dbdd016 100644 --- a/apps/sandbox/src/main.rs +++ b/apps/sandbox/src/main.rs @@ -1,7 +1,7 @@ // Copyright (c) 2022 Marceline Cramer // SPDX-License-Identifier: AGPL-3.0-or-later -use canary::{CursorEventKind, Panel, Runtime, Script}; +use canary::{CursorEventKind, Panel, Runtime, Script, PX_PER_MM}; use eframe::egui; use std::time::Instant; @@ -111,11 +111,8 @@ impl PanelWindow { let (rect, response) = ui.allocate_at_least(size, sense); if let Some(hover_pos) = response.hover_pos() { - let local = (hover_pos - rect.left_top()) / rect.size(); - let norm = local * 2.0 - egui::vec2(1.0, 1.0); - let x = norm.x; - let y = -norm.y; - let pos = canary::Vec2 { x, y }; + let local = (hover_pos - rect.left_top()) * PX_PER_MM; + let pos = canary::Vec2::new(local.x, local.y); let kind = if response.drag_started() { CursorEventKind::Select @@ -142,9 +139,9 @@ impl PanelWindow { canary::DrawCommand::Mesh { vertices, indices } => { for v in vertices.iter() { use egui::epaint::Vertex; - let pos = egui::pos2(v.position.x, -v.position.y); - let pos = pos.to_vec2() / 2.0 + egui::vec2(0.5, 0.5); - let pos = rect.left_top() + pos * rect.size(); + let pos = v.position / PX_PER_MM; + let pos = egui::pos2(pos.x, pos.y); + let pos = pos + rect.left_top().to_vec2(); let (r, g, b, a) = v.color.to_rgba_unmultiplied(); let color = egui::Color32::from_rgba_unmultiplied(r, g, b, a); let v = Vertex { pos, uv, color }; -- 2.30.2 From 7b2a110c126078b35eae3ae60308d9af5cbadfee Mon Sep 17 00:00:00 2001 From: mars Date: Tue, 15 Nov 2022 17:02:15 -0700 Subject: [PATCH 2/4] Resizeable sandbox panels --- apps/sandbox/src/main.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/sandbox/src/main.rs b/apps/sandbox/src/main.rs index dbdd016..a51d56a 100644 --- a/apps/sandbox/src/main.rs +++ b/apps/sandbox/src/main.rs @@ -70,6 +70,7 @@ impl eframe::App for App { index, msg_buf: String::new(), show_msg: false, + current_size: Default::default(), }; self.panels.push(panel); @@ -91,6 +92,7 @@ pub struct PanelWindow { pub index: usize, pub msg_buf: String, pub show_msg: bool, + pub current_size: egui::Vec2, } impl PanelWindow { @@ -101,14 +103,24 @@ impl PanelWindow { ui.checkbox(&mut self.show_msg, "Show Message Editor"); }); - let size = egui::vec2(800.0, 800.0); let sense = egui::Sense { click: true, drag: true, focusable: true, }; - let (rect, response) = ui.allocate_at_least(size, sense); + let desired_size = ui.available_size(); + let response = ui.allocate_response(desired_size, sense); + let rect = response.rect; + + if rect.size() != self.current_size { + let size = rect.size(); + self.current_size = size; + + let size = canary::Vec2::new(size.x, size.y); + println!("resizing: {:?}", size); + self.panel.on_resize(size / PX_PER_MM); + } if let Some(hover_pos) = response.hover_pos() { let local = (hover_pos - rect.left_top()) * PX_PER_MM; -- 2.30.2 From f192983319b2089a153fe747ebc9238e487e6e4e Mon Sep 17 00:00:00 2001 From: mars Date: Tue, 15 Nov 2022 17:03:54 -0700 Subject: [PATCH 3/4] Remove resize debug message --- apps/sandbox/src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/sandbox/src/main.rs b/apps/sandbox/src/main.rs index a51d56a..add37fd 100644 --- a/apps/sandbox/src/main.rs +++ b/apps/sandbox/src/main.rs @@ -118,7 +118,6 @@ impl PanelWindow { self.current_size = size; let size = canary::Vec2::new(size.x, size.y); - println!("resizing: {:?}", size); self.panel.on_resize(size / PX_PER_MM); } -- 2.30.2 From a925d6b94ddee8ee437fc795387276720695df0f Mon Sep 17 00:00:00 2001 From: mars Date: Tue, 15 Nov 2022 17:12:04 -0700 Subject: [PATCH 4/4] Fix use of PX_PER_MM --- apps/sandbox/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sandbox/src/main.rs b/apps/sandbox/src/main.rs index add37fd..8593ebd 100644 --- a/apps/sandbox/src/main.rs +++ b/apps/sandbox/src/main.rs @@ -118,7 +118,7 @@ impl PanelWindow { self.current_size = size; let size = canary::Vec2::new(size.x, size.y); - self.panel.on_resize(size / PX_PER_MM); + self.panel.on_resize(size * PX_PER_MM); } if let Some(hover_pos) = response.hover_pos() { -- 2.30.2