From c2ef9f5f9419f47d2b503e9d48c86064e78bda14 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:54:09 -0700 Subject: [PATCH 1/9] stuffers --- .../editors/character/CharacterEditor.hx | 10 ++------- .../character/CharacterPropertiesWindow.hx | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index 40516708..01f4f6aa 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -264,22 +264,16 @@ class CharacterEditor extends UIState { uiGroup.cameras = [uiCamera]; add(cameraHoverDummy = new CameraHoverDummy(uiGroup, FlxPoint.weak(0, 0))); - characterPropertiesWindow = new CharacterPropertiesWindow((FlxG.width-(432)), 23+12+10, character); + characterPropertiesWindow = new CharacterPropertiesWindow((FlxG.width-(440)-16) - (((500-16)-(440))/2), 23+12+10, character); uiGroup.add(characterPropertiesWindow); topMenuSpr = new UITopMenu(topMenu); uiGroup.add(topMenuSpr); - // dragOffsetsCheckbox = new UICheckbox(FlxG.width - 440, 5, "Drag Offsets With Mouse?", false, 0, true); - // uiGroup.add(dragOffsetsCheckbox); - - // lockCameraCheckbox = new UICheckbox(FlxG.width - 200, 5, "Lock Camera?", false, 0, true); - // uiGroup.add(lockCameraCheckbox); - animationText = new UIText(0, 0, 0, ""); uiGroup.add(animationText); - characterAnimsWindow = new CharacterAnimsWindow(characterPropertiesWindow.x - 60, characterPropertiesWindow.y+224+16, character); + characterAnimsWindow = new CharacterAnimsWindow((FlxG.width-(500-16)-16), characterPropertiesWindow.y+224+16, character); uiGroup.add(characterAnimsWindow); add(uiGroup); diff --git a/source/funkin/editors/character/CharacterPropertiesWindow.hx b/source/funkin/editors/character/CharacterPropertiesWindow.hx index fe0e41ca..1ee0b171 100644 --- a/source/funkin/editors/character/CharacterPropertiesWindow.hx +++ b/source/funkin/editors/character/CharacterPropertiesWindow.hx @@ -8,6 +8,7 @@ class CharacterPropertiesWindow extends UISliceSprite { public var positionXStepper:UINumericStepper; public var positionYStepper:UINumericStepper; public var scaleStepper:UINumericStepper; + public var editCharacterButton:UIButton; public var flipXCheckbox:UICheckbox; public var cameraXStepper:UINumericStepper; @@ -17,7 +18,7 @@ class CharacterPropertiesWindow extends UISliceSprite { public var designedAsDropDown:UIDropDown; public function new(x:Float, y:Float, character:Character) @:privateAccess { - super(x, y, 424, 204+20, "editors/ui/inputbox"); + super(x, y, 424+16, 204+20, "editors/ui/inputbox"); function addLabelOn(ui:UISprite, text:String) members.push(new UIText(ui.x, ui.y - 24, 0, text)); @@ -39,7 +40,7 @@ class CharacterPropertiesWindow extends UISliceSprite { }; members.push(positionYStepper); - scaleStepper = new UINumericStepper(positionYStepper.x+104+16, positionYStepper.y, character.scale.x, 0.001, 2, 0, null, 104); + scaleStepper = new UINumericStepper(positionYStepper.x+104-32+26, positionYStepper.y, character.scale.x, 0.001, 2, 0, null, 90); scaleStepper.onChange = (text:String) -> { @:privateAccess scaleStepper.__onChange(text); this.changeScale(scaleStepper.value); @@ -47,7 +48,11 @@ class CharacterPropertiesWindow extends UISliceSprite { members.push(scaleStepper); addLabelOn(scaleStepper, "Scale"); - flipXCheckbox = new UICheckbox(scaleStepper.x, scaleStepper.y+32+14, "Flipped?", character.isPlayer ? !character.__baseFlipped : character.__baseFlipped); + editCharacterButton = new UIButton(scaleStepper.x + 90 -32 + 26, scaleStepper.y, "Edit Info", null); + members.push(editCharacterButton); + addLabelOn(editCharacterButton, "Character"); + + flipXCheckbox = new UICheckbox(scaleStepper.x+22, scaleStepper.y+32+14, "Flipped?", character.isPlayer ? !character.__baseFlipped : character.__baseFlipped); flipXCheckbox.onChecked = (checked:Bool) -> {this.changeFlipX(checked);}; members.push(flipXCheckbox); @@ -68,25 +73,25 @@ class CharacterPropertiesWindow extends UISliceSprite { }; members.push(cameraYStepper); - antialiasingCheckbox = new UICheckbox(scaleStepper.x, flipXCheckbox.y+32, "Antialiased?", character.antialiasing); + antialiasingCheckbox = new UICheckbox(scaleStepper.x+22, flipXCheckbox.y+32, "Antialiased?", character.antialiasing); antialiasingCheckbox.onChecked = (checked:Bool) -> {this.changeAntialiasing(checked);}; members.push(antialiasingCheckbox); - testAsDropDown = new UIDropDown(cameraXStepper.x, cameraXStepper.y+32+32+4, 170, 32, ["BOYFRIEND", "DAD"], character.playerOffsets ? 0 : 1); + testAsDropDown = new UIDropDown(cameraXStepper.x, cameraXStepper.y+32+32+4, 193, 32, ["BOYFRIEND", "DAD"], character.playerOffsets ? 0 : 1); testAsDropDown.onChange = (index:Int) -> { CharacterEditor.instance.changeStagePosition(testAsDropDown.options[index]); }; members.push(testAsDropDown); addLabelOn(testAsDropDown, "Test Character As..."); - testAsDropDown.bWidth = 170; //REFUSES TO FUCKING SET TO 170 PIECE OF SHIT!! + testAsDropDown.bWidth = 193; //REFUSES TO FUCKING SET TO 170 PIECE OF SHIT!! - designedAsDropDown = new UIDropDown(scaleStepper.x, testAsDropDown.y, 170, 32, ["BOYFRIEND", "DAD"], character.playerOffsets ? 0 : 1); + designedAsDropDown = new UIDropDown(testAsDropDown.x+193+22, testAsDropDown.y, 193, 32, ["BOYFRIEND", "DAD"], character.playerOffsets ? 0 : 1); designedAsDropDown.onChange = (index:Int) -> { CharacterEditor.instance.changeCharacterDesginedAs(designedAsDropDown.options[index] == "BOYFRIEND"); }; members.push(designedAsDropDown); addLabelOn(designedAsDropDown, "Char Desgined As..."); - designedAsDropDown.bWidth = 170; + designedAsDropDown.bWidth = 193; alpha = 0.7; From 3213fc5482e1488336a06c98d2497cd207dd1b91 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:11:07 -0700 Subject: [PATCH 2/9] Fix no stage designed as, default strage --- .../editors/character/CharacterEditor.hx | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index 01f4f6aa..c62a1734 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -279,9 +279,10 @@ class CharacterEditor extends UIState { add(uiGroup); playAnimation(character.getAnimOrder()[0]); + changeStage("stage"); + _view_focus_character(null); - - + if(Framerate.isLoaded) { Framerate.fpsCounter.alpha = 0.4; Framerate.memoryCounter.alpha = 0.4; @@ -501,7 +502,9 @@ class CharacterEditor extends UIState { remove(character); if (__stage == null) { - updateStagePositions(["NONE"]); + updateStagePositions([]); + changeStagePosition("NONE"); + add(character); } else { stage = new Stage(__stage, this, false); @@ -537,24 +540,28 @@ class CharacterEditor extends UIState { } public function changeStagePosition(position:String) { - if (stage == null) return; - - if (stage.characterPoses.exists(stagePosition)) - stage.characterPoses[stagePosition].revertCharacter(character); - - stagePosition = position.toLowerCase(); - remove(character); - - if (stage.characterPoses.exists(stagePosition)) - stage.applyCharStuff(character, stagePosition, 0); - _animation_play(null); + if (stage != null && position != "NONE") { + if (stage.characterPoses.exists(stagePosition)) + stage.characterPoses[stagePosition].revertCharacter(character); + + stagePosition = position.toLowerCase(); + remove(character); + + if (stage.characterPoses.exists(stagePosition)) + stage.applyCharStuff(character, stagePosition, 0); + _animation_play(null); + } else + stagePosition = position.toLowerCase(); characterPropertiesWindow.testAsDropDown.index = characterPropertiesWindow.testAsDropDown.options.indexOf(stagePosition.toUpperCase()); characterPropertiesWindow.testAsDropDown.label.text = stagePosition.toUpperCase(); } public function changeCharacterDesginedAs(player:Bool) @:privateAccess { - if (stage == null) return; + if (stage == null) { + changeCharacterIsPlayer(player); + return; + } if (stage.characterPoses.exists(stagePosition)) stage.characterPoses[stagePosition].revertCharacter(character); From 9eadeb86fc72496f01284f4a73f1828fc18767dd Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:44:37 -0700 Subject: [PATCH 3/9] ctrl c and v offsets --- .../editors/character/CharacterEditor.hx | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index c62a1734..c1f487ad 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -282,7 +282,7 @@ class CharacterEditor extends UIState { changeStage("stage"); _view_focus_character(null); - + if(Framerate.isLoaded) { Framerate.fpsCounter.alpha = 0.4; Framerate.memoryCounter.alpha = 0.4; @@ -295,6 +295,7 @@ class CharacterEditor extends UIState { override function destroy() { _point.put(); draggingOffset.put(); + clipboard.put(); super.destroy(); if(Framerate.isLoaded) { @@ -429,8 +430,13 @@ class CharacterEditor extends UIState { return "\n" + Printer.print(charXML, true); } - function _edit_copy_offset(_) {} - function _edit_paste_offset(_) {} + var clipboard:FlxPoint = FlxPoint.get(); + function _edit_copy_offset(_) { + clipboard.copyFrom(character.animOffsets[character.getAnimName()]); + } + function _edit_paste_offset(_) { + _set_offset(clipboard.x, clipboard.y); + } function _edit_undo(_) {} function _edit_redo(_) {} @@ -454,9 +460,15 @@ class CharacterEditor extends UIState { } function _change_offset(x:Float, y:Float) { + _set_offset( + character.animOffsets[character.getAnimName()].x - x, + character.animOffsets[character.getAnimName()].y - y + ); + } + + function _set_offset(x:Float, y:Float) { characterAnimsWindow.animButtons.get(character.getAnimName()).changeOffset( - FlxMath.roundDecimal(character.animOffsets[character.getAnimName()].x - x, 2), - FlxMath.roundDecimal(character.animOffsets[character.getAnimName()].y - y, 2) + FlxMath.roundDecimal(x, 2), FlxMath.roundDecimal(y, 2) ); } From 2b659d688fae5a826127e875d9f2dc88f5304596 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 16:07:58 -0700 Subject: [PATCH 4/9] W and S works --- .../editors/character/CharacterAnimsWindow.hx | 7 ++----- .../funkin/editors/character/CharacterEditor.hx | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/source/funkin/editors/character/CharacterAnimsWindow.hx b/source/funkin/editors/character/CharacterAnimsWindow.hx index caf959f1..d9bca67c 100644 --- a/source/funkin/editors/character/CharacterAnimsWindow.hx +++ b/source/funkin/editors/character/CharacterAnimsWindow.hx @@ -16,6 +16,7 @@ class CharacterAnimsWindow extends UIButtonList { public var displayAnimsFramesList:Map = []; public var animButtons:Map = []; + public var animsList:Array = []; public function new(x:Float, y:Float, character:CharacterGhost) { super(x, y, Std.int(500-16), 419, "", FlxPoint.get(Std.int(500-16-32), 208)); @@ -50,11 +51,7 @@ class CharacterAnimsWindow extends UIButtonList { public override function update(elapsed:Float) { super.update(elapsed); - // if (CharacterEditor.instance.draggingCharacter && ghosts[0] != character.getAnimName()) { - // if (ghosts.indexOf(character.getAnimName()) != -1) - // ghosts.remove(character.getAnimName()); - // ghosts.insert(0, character.getAnimName()); - // } + animsList = [for (button in buttons) button.anim]; character.ghosts = ghosts; } diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index c1f487ad..38d96aa0 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -658,8 +658,21 @@ class CharacterEditor extends UIState { character.stopAnimation(); } - function _animation_up(_) {} - function _animation_down(_) {} + function _animation_up(_) + playAnimation( + characterAnimsWindow.animsList[ + FlxMath.wrap( + characterAnimsWindow.animsList.indexOf(character.getAnimName()) - 1, + 0, characterAnimsWindow.animsList.length-1 + )] + ); + function _animation_down(_) + playAnimation( + characterAnimsWindow.animsList[FlxMath.wrap( + characterAnimsWindow.animsList.indexOf(character.getAnimName()) + 1, + 0, characterAnimsWindow.animsList.length-1 + )] + ); public function playAnimation(anim:String) { character.playAnim(anim, true); From d56748a405bd574d8ee2d168f6bd2841ebb49fb4 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 16:34:04 -0700 Subject: [PATCH 5/9] deleting anims (hold on i needa edit flixel) --- .../editors/character/CharacterAnimButton.hx | 2 +- .../editors/character/CharacterAnimsWindow.hx | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/source/funkin/editors/character/CharacterAnimButton.hx b/source/funkin/editors/character/CharacterAnimButton.hx index 6a73ddf8..8e36642a 100644 --- a/source/funkin/editors/character/CharacterAnimButton.hx +++ b/source/funkin/editors/character/CharacterAnimButton.hx @@ -136,7 +136,7 @@ class CharacterAnimButton extends UIButton { playIcon.antialiasing = false; members.push(playIcon); - deleteButton = new UIButton(0, 0, "", null, 28*2,24); + deleteButton = new UIButton(0, 0, "", () -> {parent.deleteAnimation(this);}, 28*2,24); deleteButton.frames = Paths.getFrames("editors/ui/grayscale-button"); deleteButton.color = 0xFFAC3D3D; members.push(deleteButton); diff --git a/source/funkin/editors/character/CharacterAnimsWindow.hx b/source/funkin/editors/character/CharacterAnimsWindow.hx index d9bca67c..0a2a52c4 100644 --- a/source/funkin/editors/character/CharacterAnimsWindow.hx +++ b/source/funkin/editors/character/CharacterAnimsWindow.hx @@ -1,5 +1,6 @@ package funkin.editors.character; +import funkin.backend.utils.XMLUtil.AnimData; import flixel.animation.FlxAnimation; import flixel.graphics.FlxGraphic; import openfl.geom.Rectangle; @@ -64,4 +65,23 @@ class CharacterAnimsWindow extends UIButtonList { displayAnimsFramesList.set(name, {frame: anim.frames.getDefault([0])[0], scale: 104/animBounds.height, animBounds: animBounds}); } + + public function deleteAnimation(button:CharacterAnimButton) { + if (buttons.members.length <= 1) return; + if (character.getAnimName() == button.anim) + @:privateAccess CharacterEditor.instance._animation_down(null); + + character.removeAnimation(button.anim); + if (character.animOffsets.exists(button.anim)) character.animOffsets.remove(button.anim); + if (character.animDatas.exists(button.anim)) character.animDatas.remove(button.anim); + + remove(button); button.destroy(); + } + + // public function createAnimation() { + // var animData:AnimData = { + // name: "New Animation" + // x: 0, y: 0, + // } + // } } \ No newline at end of file From 34a6d6a29b72cfa82879c1df455f5b54e92f2103 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:28:30 -0700 Subject: [PATCH 6/9] creating anims --- .../editors/character/CharacterAnimButton.hx | 5 ++ .../editors/character/CharacterAnimsWindow.hx | 50 +++++++++++++------ 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/source/funkin/editors/character/CharacterAnimButton.hx b/source/funkin/editors/character/CharacterAnimButton.hx index 8e36642a..6e8f30e0 100644 --- a/source/funkin/editors/character/CharacterAnimButton.hx +++ b/source/funkin/editors/character/CharacterAnimButton.hx @@ -215,6 +215,11 @@ class CharacterAnimButton extends UIButton { public function changeName(newName:String) @:privateAccess { if (newName == anim) return; + if (parent.character.getNameList().indexOf(newName) != -1) { + nameTextBox.label.text = anim; + return; + } + if (parent.character.animateAtlas != null) { var animSymbol:SymbolStuff = parent.character.animateAtlas.anim.animsMap[anim]; diff --git a/source/funkin/editors/character/CharacterAnimsWindow.hx b/source/funkin/editors/character/CharacterAnimsWindow.hx index 0a2a52c4..af9be287 100644 --- a/source/funkin/editors/character/CharacterAnimsWindow.hx +++ b/source/funkin/editors/character/CharacterAnimsWindow.hx @@ -21,6 +21,7 @@ class CharacterAnimsWindow extends UIButtonList { public function new(x:Float, y:Float, character:CharacterGhost) { super(x, y, Std.int(500-16), 419, "", FlxPoint.get(Std.int(500-16-32), 208)); + this.character = character; cameraSpacing = 0; frames = Paths.getFrames('editors/ui/inputbox'); @@ -37,15 +38,9 @@ class CharacterAnimsWindow extends UIButtonList { alpha = 0.7; - @:privateAccess - for (name => anim in displayWindowSprite.animation._animations) - buildAnimDisplay(name, anim); - - for (anim in character.getAnimOrder()) { - var button:CharacterAnimButton = new CharacterAnimButton(0, 0, character.animDatas.get(anim), this); - add(button); animButtons.set(anim, button); - } - this.character = character; + for (anim in character.getAnimOrder()) + addAnimation(character.animDatas.get(anim)); + addButton.callback = generateAnimation; } public var ghosts:Array = []; @@ -78,10 +73,35 @@ class CharacterAnimsWindow extends UIButtonList { remove(button); button.destroy(); } - // public function createAnimation() { - // var animData:AnimData = { - // name: "New Animation" - // x: 0, y: 0, - // } - // } + public function generateAnimation() { + var animName:String = "New Anim"; + var animNames:Array = character.getNameList(); + + var newAnimCount:Int = 0; + while (animNames.indexOf(animName) != -1) { + newAnimCount++; + animName = 'New Anim - $newAnimCount'; + } + + var animData:AnimData = { + name: animName, + anim: character.frames.getByIndex(0).name, + fps: 24, loop: false, + x: 0, y: 0, + indices: [], + animType: NONE, + }; + addAnimation(animData); + } + + public function addAnimation(animData:AnimData, animID:Int = -1) @:privateAccess { + XMLUtil.addAnimToSprite(character, animData); + buildAnimDisplay(animData.name, character.animation._animations[animData.name]); + + var newButton:CharacterAnimButton = new CharacterAnimButton(0, 0, animData, this); + newButton.alpha = 0.25; animButtons.set(animData.name, newButton); + + if (animID == -1) add(newButton); + else insert(newButton, animID); + } } \ No newline at end of file From cfad473544525a4f1032549f44ff8d54161bdd10 Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:33:39 -0700 Subject: [PATCH 7/9] oopsers --- source/funkin/editors/character/CharacterEditor.hx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index 38d96aa0..340da63d 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -422,6 +422,9 @@ class CharacterEditor extends UIState { } function buildCharacter():String { + if (character.extra.exists(StageEditor.exID("bounds"))) + character.extra.remove(StageEditor.exID("bounds")); + var charXML:Xml = character.buildXML([ for (button in characterAnimsWindow.buttons.members) button.anim From fcd86c736442b63bc696bca0533aa3de94ead42b Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Mon, 22 Jul 2024 23:12:57 -0700 Subject: [PATCH 8/9] change default to false+cleabn --- source/funkin/editors/character/CharacterPropertiesWindow.hx | 1 - source/funkin/options/Options.hx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/source/funkin/editors/character/CharacterPropertiesWindow.hx b/source/funkin/editors/character/CharacterPropertiesWindow.hx index 1ee0b171..4349bab4 100644 --- a/source/funkin/editors/character/CharacterPropertiesWindow.hx +++ b/source/funkin/editors/character/CharacterPropertiesWindow.hx @@ -50,7 +50,6 @@ class CharacterPropertiesWindow extends UISliceSprite { editCharacterButton = new UIButton(scaleStepper.x + 90 -32 + 26, scaleStepper.y, "Edit Info", null); members.push(editCharacterButton); - addLabelOn(editCharacterButton, "Character"); flipXCheckbox = new UICheckbox(scaleStepper.x+22, scaleStepper.y+32+14, "Flipped?", character.isPlayer ? !character.__baseFlipped : character.__baseFlipped); flipXCheckbox.onChecked = (checked:Bool) -> {this.changeFlipX(checked);}; diff --git a/source/funkin/options/Options.hx b/source/funkin/options/Options.hx index f85ff711..f1b0c464 100644 --- a/source/funkin/options/Options.hx +++ b/source/funkin/options/Options.hx @@ -75,7 +75,7 @@ class Options public static var characterHitbox:Bool = true; public static var characterCamera:Bool = true; public static var characterAxis:Bool = true; - public static var characterDragging:Bool = true; + public static var characterDragging:Bool = false; /** * PLAYER 1 CONTROLS From 36f77a3d65d776889db1aa12d833e57eff63dd8e Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:29:49 -0700 Subject: [PATCH 9/9] for windows peeps --- source/funkin/editors/character/CharacterEditor.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/funkin/editors/character/CharacterEditor.hx b/source/funkin/editors/character/CharacterEditor.hx index 340da63d..19d281a7 100644 --- a/source/funkin/editors/character/CharacterEditor.hx +++ b/source/funkin/editors/character/CharacterEditor.hx @@ -356,7 +356,7 @@ class CharacterEditor extends UIState { inline function handleMouseOffsets() { if (draggingCharacter) { - cameraHoverDummy.cursor = #if (mac) DRAG; #elseif (linux) DRAG; #else MOVE; #end + cameraHoverDummy.cursor = #if (mac) DRAG; #elseif (linux) DRAG; #else BUTTON; #end if (FlxG.mouse.justReleased) { draggingOffset.x /= character.scale.x;