Fix mouse coordinates inside transformed graphics objects

This commit is contained in:
Skyler Lehmkuhl 2024-12-18 17:48:42 -05:00
parent 50df97f03d
commit d9a06e417a
1 changed files with 11 additions and 0 deletions

View File

@ -1979,6 +1979,14 @@ class GraphicsObject {
} }
} }
} }
transformMouse(mouse) {
if (this.parent) {
mouse = this.parent.transformMouse(mouse)
}
mouse.x -= this.x
mouse.y -= this.y
return mouse
}
addShape(shape, sendToBack=false) { addShape(shape, sendToBack=false) {
if (sendToBack) { if (sendToBack) {
this.currentFrame.shapes.unshift(shape) this.currentFrame.shapes.unshift(shape)
@ -2749,6 +2757,7 @@ function stage() {
scroller.appendChild(stageWrapper) scroller.appendChild(stageWrapper)
stage.addEventListener("mousedown", (e) => { stage.addEventListener("mousedown", (e) => {
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
mouse = context.activeObject.transformMouse(mouse)
switch (mode) { switch (mode) {
case "rectangle": case "rectangle":
case "ellipse": case "ellipse":
@ -2909,6 +2918,7 @@ function stage() {
context.dragDirection = undefined context.dragDirection = undefined
context.selectionRect = undefined context.selectionRect = undefined
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
mouse = context.activeObject.transformMouse(mouse)
switch (mode) { switch (mode) {
case "draw": case "draw":
if (context.activeShape) { if (context.activeShape) {
@ -2963,6 +2973,7 @@ function stage() {
}) })
stage.addEventListener("mousemove", (e) => { stage.addEventListener("mousemove", (e) => {
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
mouse = context.activeObject.transformMouse(mouse)
context.mousePos = mouse context.mousePos = mouse
switch (mode) { switch (mode) {
case "draw": case "draw":