rotate corner

idk if i should show the dot or not
This commit is contained in:
SrtHero278
2024-04-26 22:13:48 -07:00
parent ca79021413
commit c0bb9dd840
2 changed files with 20 additions and 10 deletions
+1 -7
View File
@@ -296,9 +296,6 @@ function SKEW_RIGHT(sprite, relative) {
postRotBullshit(sprite, relative);
}
/*var storedCenter = FlxPoint.get();
var storedRelative = FlxPoint.get();*/
function ROTATE(sprite, relative) {
var buttonBoxes:Array<FlxPoint> = sprite.extra.get(exID("buttonBoxes"));
var p:FlxPoint = buttonBoxes[8];
@@ -307,12 +304,9 @@ function ROTATE(sprite, relative) {
var dx:Float = _point.x - p.x;
var dy:Float = _point.y - p.y;
var angle = FlxAngle.angleFromOrigin(dx, dy, true) + 90;
var angle = FlxAngle.angleFromOrigin(dx, dy, true) + angleOffset;
if(FlxG.keys.pressed.SHIFT) angle = Std.int(angle / 45) * 45;
sprite.angle = angle;
//storedCenter.set(p.x, p.y);
//storedRelative.set(_point.x, _point.y);
}
+19 -3
View File
@@ -53,6 +53,7 @@ class StageEditor extends UIState {
public var storedScale:FlxPoint = new FlxPoint();
public var storedSkew:FlxPoint = new FlxPoint();
public var storedAngle:Float = 0;
public var angleOffset:Float = 0;
public var showCharacters:Bool = true;
@@ -1002,6 +1003,7 @@ class StageEditor extends UIState {
sprite.updateHitbox();
sprite.offset.copyFrom(oldOffset);
sprite.origin.copyFrom(oldOrigin);
@:privateAccess sprite.updateTrig();
var corners = sprite.getMatrixPosition([
// corners
@@ -1017,8 +1019,13 @@ class StageEditor extends UIState {
// center
FlxPoint.get(0.5, 0.5),
//FlxPoint.get(0.5, -100/sprite.frameHeight) // angle
FlxPoint.get(0.5, -0.5) // angle
FlxPoint.get(0.5, -0.5), // angle
FlxPoint.get(1, 0) // rotate corner
], sprite.camera, sprite.frameWidth, sprite.frameHeight);
@:privateAccess corners[corners.length - 1].add(
dotCheckSize * 0.35 * sprite._cosAngle + dotCheckSize * 0.35 * sprite._sinAngle,
-dotCheckSize * 0.35 * sprite._cosAngle + dotCheckSize * 0.35 * sprite._sinAngle
);
//Logs.trace("Guide at " + corners[0].x + ", " + corners[0].y + " sprite at " + sprite.x + ", " + sprite.y);
@@ -1057,6 +1064,7 @@ class StageEditor extends UIState {
CENTER_CIRCLE, //FlxPoint.get(0.5, -0.5)
ROTATE_CIRCLE, //FlxPoint.get(0.5, -0.5)
ROTATE_CORNER
];
function tryUpdateHitbox(sprite:FunkinSprite) {
@@ -1098,7 +1106,12 @@ class StageEditor extends UIState {
case BOTTOM_MIDDLE: SCALE_BOTTOM;
case BOTTOM_RIGHT: SCALE_BOTTOM_RIGHT;
case CENTER_CIRCLE: MOVE_CENTER;
case ROTATE_CIRCLE: ROTATE;
case ROTATE_CIRCLE:
angleOffset = 90;
ROTATE;
case ROTATE_CORNER:
angleOffset = Math.atan(sprite.height / sprite.width) * FlxAngle.TO_DEG;
ROTATE;
default: NONE;
}
Logs.trace("Clicked Dot: " + mouseMode.toString());
@@ -1138,7 +1151,7 @@ class StageEditor extends UIState {
//case TOP_RIGHT | BOTTOM_LEFT: MouseCursor.RESIZE_NESW;
//case MIDDLE_LEFT | MIDDLE_RIGHT: MouseCursor.RESIZE_WE;
case ROTATE_CIRCLE: FlxG.mouse.pressed ? DRAG : #if mac DRAG_OPEN #else CLICK #end;
case ROTATE_CIRCLE | ROTATE_CORNER: FlxG.mouse.pressed ? DRAG : #if mac DRAG_OPEN #else CLICK #end;
default: ARROW;
}
break;
@@ -1338,6 +1351,7 @@ enum abstract StageEditorEdge(Int) {
var CENTER_CIRCLE;
var ROTATE_CIRCLE;
var ROTATE_CORNER;
public function toString():String {
return switch(cast this) {
@@ -1353,6 +1367,7 @@ enum abstract StageEditorEdge(Int) {
case BOTTOM_RIGHT: "BOTTOM_RIGHT";
case CENTER_CIRCLE: "CENTER_CIRCLE";
case ROTATE_CIRCLE: "ROTATE_CIRCLE";
case ROTATE_CORNER: "ROTATE_CORNER";
}
}
@@ -1370,6 +1385,7 @@ enum abstract StageEditorEdge(Int) {
case BOTTOM_RIGHT: 7;
case CENTER_CIRCLE: 8;
case ROTATE_CIRCLE: 9;
case ROTATE_CORNER: 10;
}
}
}