From 5f4fe391eea6626178f9c983141c314a751a30b2 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Wed, 7 Feb 2024 22:08:47 -0700 Subject: [PATCH] NEW DRAGGING --- source/funkin/editors/charter/Charter.hx | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index d08937e5..dcdeac2d 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -642,22 +642,16 @@ class Charter extends UIState { }); currentCursor = HAND; } else { - var hoverOffset:FlxPoint = FlxPoint.get(); - for (s in selection) - if (s.hovered) { - hoverOffset.set(mousePos.x - s.x, mousePos.y - s.y); - break; - } - - dragStartPos.set(Std.int(dragStartPos.x / 40) * 40, dragStartPos.y); //credits to burgerballs - var verticalChange:Float = ((mousePos.y - hoverOffset.y) - dragStartPos.y) / 40; + dragStartPos.set(Std.int(dragStartPos.x / 40) * 40, dragStartPos.y); + var verticalChange:Float = (mousePos.y - dragStartPos.y) / 40; var horizontalChange:Int = CoolUtil.floorInt((mousePos.x - dragStartPos.x) / 40); var undoDrags:Array = []; for (s in selection) { if (s.draggable) { var changePoint:FlxPoint = FlxPoint.get(verticalChange, horizontalChange); - if (!FlxG.keys.pressed.SHIFT) changePoint.x -= ((s.step + verticalChange) - quantStepRounded(s.step+verticalChange)); + if (!FlxG.keys.pressed.SHIFT) + changePoint.x -= ((s.step + verticalChange) - quantStepRounded(s.step+verticalChange, verticalChange > 0 ? 0.35 : 0.65)); var boundedChange:FlxPoint = changePoint.clone(); @@ -684,12 +678,9 @@ class Charter extends UIState { undos.addToUndo(CSelectionDrag(undoDrags)); } - hoverOffset.put(); gridActionType = NONE; - currentCursor = ARROW; } - case NONE: if (FlxG.mouse.justPressed) FlxG.mouse.getWorldPosition(charterCamera, dragStartPos); @@ -772,11 +763,14 @@ class Charter extends UIState { return Math.floor(step/stepMulti) * stepMulti; } - public function quantStepRounded(step:Float):Float { + public function quantStepRounded(step:Float, ?roundRatio:Float = 0.5):Float { var stepMulti:Float = 1/(quant/16); - return Math.round(step/stepMulti) * stepMulti; + return ratioRound(step/stepMulti, roundRatio) * stepMulti; } + public function ratioRound(val:Float, ratio:Float):Int + return Math.floor(val) + ((Math.abs(val % 1) > ratio ? 1 : 0) * (val > 0 ? 1 : -1)); + public function getHoveredEvent(y:Float) { var eventHovered:CharterEvent = null; eventsGroup.forEach(function(e) {