basic curve editing through moving control points

This commit is contained in:
Skyler Lehmkuhl 2024-11-18 06:14:04 -05:00
parent 3dee1bae17
commit 175eb7e484
1 changed files with 17 additions and 4 deletions

View File

@ -440,6 +440,7 @@ function stage() {
case "select": case "select":
let curve = selectCurve(context, mouse) let curve = selectCurve(context, mouse)
if (curve) { if (curve) {
context.dragging = true
console.log("gonna move this") console.log("gonna move this")
} }
break; break;
@ -451,6 +452,7 @@ function stage() {
}) })
stage.addEventListener("mouseup", (e) => { stage.addEventListener("mouseup", (e) => {
context.mouseDown = false context.mouseDown = false
context.dragging = false
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
switch (mode) { switch (mode) {
case "draw": case "draw":
@ -470,9 +472,9 @@ function stage() {
}) })
stage.addEventListener("mousemove", (e) => { stage.addEventListener("mousemove", (e) => {
let mouse = getMousePos(stage, e) let mouse = getMousePos(stage, e)
context.activeCurve = undefined
switch (mode) { switch (mode) {
case "draw": case "draw":
context.activeCurve = undefined
if (context.activeShape) { if (context.activeShape) {
if (vectorDist(mouse, context.lastMouse) > minSegmentSize) { if (vectorDist(mouse, context.lastMouse) > minSegmentSize) {
context.activeShape.addLine(mouse.x, mouse.y) context.activeShape.addLine(mouse.x, mouse.y)
@ -481,6 +483,7 @@ function stage() {
} }
break; break;
case "rectangle": case "rectangle":
context.activeCurve = undefined
if (context.activeShape) { if (context.activeShape) {
context.activeShape.clear() context.activeShape.clear()
context.activeShape.addLine(mouse.x, context.activeShape.starty) context.activeShape.addLine(mouse.x, context.activeShape.starty)
@ -491,7 +494,19 @@ function stage() {
} }
break; break;
case "select": case "select":
context.activeCurve = selectCurve(context, mouse) if (context.dragging) {
let dist = vectorDist(mouse, context.activeCurve.points[1])
let cpoint = context.activeCurve.points[1]
if (vectorDist(mouse, context.activeCurve.points[2]) < dist) {
cpoint = context.activeCurve.points[2]
}
cpoint.x += (mouse.x - context.lastMouse.x)
cpoint.y += (mouse.y - context.lastMouse.y)
} else {
context.activeCurve = selectCurve(context, mouse)
}
context.lastMouse = mouse
break; break;
default: default:
break; break;
@ -616,9 +631,7 @@ function infopanel() {
} }
break; break;
case "enum": case "enum":
console.log(e)
if (prop.options.indexOf(e.target.value) >= 0) { if (prop.options.indexOf(e.target.value) >= 0) {
console.log(setProperty)
setProperty(context, property, e.target.value) setProperty(context, property, e.target.value)
} }
break; break;