From: Brendan Hansen Date: Thu, 8 Jul 2021 03:32:11 +0000 (-0500) Subject: correct scaling X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=e50b0adbee4aec8e2958aeda6f1a45d946616555;p=onyx-wasm-analyzer.git correct scaling --- diff --git a/src/main.onyx b/src/main.onyx index 68202a1..90e221f 100644 --- a/src/main.onyx +++ b/src/main.onyx @@ -175,27 +175,47 @@ update :: (dt: f32) { if key_handler_is_down(^keys, 39) do transform.translation.x -= speed * dt; if key_handler_is_down(^keys, 37) do transform.translation.x += speed * dt; if key_handler_is_down(^keys, 187) { - transform.translation.x += ~~(window_width / 2) * transform.scale.x; - transform.translation.y += ~~(window_height / 2) * transform.scale.y; + bx: f32 = (transform.translation.x - ~~(window_width / 2)) / transform.scale.x; + by: f32 = (transform.translation.y - ~~(window_height / 2)) / transform.scale.y; transform.scale.x *= 1 + scale_speed; transform.scale.y *= 1 + scale_speed; - transform.translation.x -= ~~(window_width / 2) * transform.scale.x; - transform.translation.y -= ~~(window_height / 2) * transform.scale.y; + transform.translation.x = bx * transform.scale.x + ~~(window_width / 2); + transform.translation.y = by * transform.scale.y + ~~(window_height / 2); } if key_handler_is_down(^keys, 189) { - transform.translation.x += ~~(window_width / 2) * transform.scale.x; - transform.translation.y += ~~(window_height / 2) * transform.scale.y; + bx: f32 = (transform.translation.x - ~~(window_width / 2)) / transform.scale.x; + by: f32 = (transform.translation.y - ~~(window_height / 2)) / transform.scale.y; transform.scale.x /= 1 + scale_speed; transform.scale.y /= 1 + scale_speed; - transform.translation.x -= ~~(window_width / 2) * transform.scale.x; - transform.translation.y -= ~~(window_height / 2) * transform.scale.y; + transform.translation.x = bx * transform.scale.x + ~~(window_width / 2); + transform.translation.y = by * transform.scale.y + ~~(window_height / 2); } } +push_state :: () -> Iterator(u8) { + next :: (done: ^bool) -> (u8, bool) { + *done = !*done; + if *done do return 0, false; + + gfx.push_matrix(); + + return 0, true; + } + + close :: (_: rawptr) { + gfx.pop_matrix(); + } + + done := new(bool); + *done = true; + + return .{ done, next, close }; +} + draw :: () { bg_color := config.Colors.background; gl.clearColor(bg_color.r, bg_color.g, bg_color.b, bg_color.a); @@ -203,7 +223,9 @@ draw :: () { window_rectangle := ui.Rectangle.{ 0, 0, ~~window_width, ~~window_height }; - gfx.push_scissor(ui.mouse_state.x, ui.mouse_state.y, 400, 400); + // m_pos := gfx.global_renderer->to_world_coordinates(.{ ui.mouse_state.x, ui.mouse_state.y }); + // gfx.rect(.{ m_pos.x - 10, m_pos.y - 10 }, .{ 720, 720 }, color=config.Colors.primary_dark); + // gfx.push_scissor(m_pos.x, m_pos.y, 700, 700); draw_background_lines(~~window_width, ~~window_height, line_color=config.Colors.background); @@ -217,12 +239,15 @@ draw :: () { gfx.rect(.{ x, y }, .{ w, h }, color=config.Colors.primary); } - gfx.pop_scissor(); + // gfx.pop_scissor(); - gfx.push_matrix(); - gfx.identity(); - draw_menu_bar(window_rectangle); - gfx.pop_matrix(); + { + gfx.push_matrix(); + defer gfx.pop_matrix(); + + gfx.identity(); + draw_menu_bar(window_rectangle); + } gfx.flush(); ui.clear_buttons();