From 8f0100c466266fe37257878f01ad115980140282 Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Thu, 13 Jun 2024 23:22:14 +0200 Subject: [PATCH] Small UI fixes and finetuned quadtree settings --- src/main.ts | 23 +++++++++++++++-------- src/renderer/input.class.ts | 8 ++++---- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/main.ts b/src/main.ts index 837995e..4d603f4 100644 --- a/src/main.ts +++ b/src/main.ts @@ -37,25 +37,32 @@ Renderer.scene.add(Asset.instance); Renderer.startRendering(); Input.onDragStart((_, button) => { if(button & 1) Selector.hide(); }); -Input.onDragEnd((start, end, button) => { +Input.onDragEnd((s, e, button) => { if(button & 1) { - const s = performance.now(); - const selection = quad.query({x1: Math.min(start.x, end.x), x2: Math.max(start.x, end.x), y1: Math.min(start.y, end.y), y2: Math.max(start.y, end.y)}).map(e => Asset.assets[e]); - console.log("Fetching %s out of %s elements in %sms", selection.length, Asset.assets.length, performance.now() - s); + const n = performance.now(); + const selection = quad.query({x1: Math.min(s.x, e.x), x2: Math.max(s.x, e.x), y1: Math.min(s.y, e.y), y2: Math.max(s.y, e.y)}).map(e => Asset.assets[e]); + console.log("Fetching %s out of %s elements in %sms", selection.length, Asset.assets.length, performance.now() - n); if(Input.keys['Shift']) Selector.toggle(selection); else Selector.select(selection); } }); Input.onDrag((delta, start, end, button) => { if(button & 1) Selector.preview(start, end); else Renderer.move(-delta.x, -delta.y); }); -Input.onClick((point, button) => { +Input.onClick((p, button) => { if(button & 1) { - const selection = quad.fetch(point.x, point.y).map(e => Asset.assets[e]); + const selection = quad.fetch(p.x, p.y)[0]; - if(Input.keys['Shift']) Selector.toggle(selection); - else Selector.select(selection); + if (selection === undefined) + { + if (!Input.keys['Shift']) + Selector.clear(); + return; + } + + if (Input.keys['Shift']) Selector.toggle([Asset.assets[selection]]); + else Selector.select([Asset.assets[selection]]); } }); Input.onWheel(delta => Renderer.zoom = clamp(Renderer.zoom * 1 + (delta * -0.001), 0.9, 5)); diff --git a/src/renderer/input.class.ts b/src/renderer/input.class.ts index 8e64fab..2464cee 100644 --- a/src/renderer/input.class.ts +++ b/src/renderer/input.class.ts @@ -114,16 +114,16 @@ export default class Input static #mousemove(e: MouseEvent): void { e.preventDefault(); + + const cursor = Renderer.screenSpaceToCameraSpace(e.clientX, e.clientY); + const cursorOmitted = Renderer.screenSpaceToCameraSpace(e.clientX, e.clientY, true); - if(Input.#dragging && !Input.#dragStarted) + if(Input.#dragging && !Input.#dragStarted && cursor.x !== this.#dragInitPos.x && cursor.y !== this.#dragInitPos.y) { Input.#dragStartCb && Input.#dragStartCb(Input.#dragInitPos, e.buttons); Input.#dragStarted = true; } - const cursor = Renderer.screenSpaceToCameraSpace(e.clientX, e.clientY); - const cursorOmitted = Renderer.screenSpaceToCameraSpace(e.clientX, e.clientY, true); - Input.#cursor = cursor; if(Input.dragging)