commit 040c83b2fa78af8347aa25c3611ef5bfe1d84998
parent 1f3eb3b72a432a6ce082c51e4715f68202308486
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Thu, 17 Oct 2024 15:30:19 -0700
Make pointer door swing updates live
Now the door swing is updated on every pointermove (which I suppose
I should throttle), and also uses params.threshold (650) like
everything else instead of it's own value of 500.
One thing you'll note about the behavior is that the hinge isn't
updated on pointermove, I don't see this as an issue and it might
even be the desired behavior so I didn't change that.
Diffstat:
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js
@@ -35,7 +35,7 @@ const modes = {
handlers: {
contextmenu: preventDefaultHandler,
pointerdown: [singlePointerHandler, selectionHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
- pointermove: [singlePointerHandler, precisePointHandler, furnitureHandler],
+ pointermove: [singlePointerHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
pointerup: [singlePointerHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
pointercancel: [singlePointerHandler, selectionHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
keydown: [keyHandler],
@@ -1036,7 +1036,7 @@ function precisePointHandler(event, editor, state) {
handled(event)
}
-// pointerdown, pointerup, dblclick
+// pointerdown, pointermove, pointerup
function precisePointMapHandler(event, editor, state) {
const cleanup = function() {
for (let i in state) {
@@ -1054,12 +1054,14 @@ function precisePointMapHandler(event, editor, state) {
return
}
- if (state.door && event.type === "pointerup") {
+ if (event.type === "pointermove") {
+ if (!state.door) {
+ return
+ }
handled(event)
let door = editor.findObj(state.doorID)
- if (state.doorSwingFrom.distanceTo(cursor) < 500) {
- cleanup()
+ if (state.doorSwingFrom.distanceTo(cursor) < params.threshold) {
return
}
@@ -1075,6 +1077,13 @@ function precisePointMapHandler(event, editor, state) {
let s = (o > 0 ? "+" : "-")
editor.backend.mapPoints({ door_swing: state.hinge + s }, state.doorID)
+ }
+
+ if (event.type === "pointerup") {
+ if (!state.door) {
+ return
+ }
+ handled(event)
editor.finishAction()
cleanup()
return