fix angle baking

This commit is contained in:
2022-08-13 02:31:01 +00:00
parent 6e7e413629
commit 83a2694e80
2 changed files with 9 additions and 11 deletions

View File

@@ -269,7 +269,7 @@
sourceRect (new Rectangle (/ jig.xy.x ros) (/ jig.xy.y ros) (/ jig.wh.x ros) (/ jig.wh.y ros))] sourceRect (new Rectangle (/ jig.xy.x ros) (/ jig.xy.y ros) (/ jig.wh.x ros) (/ jig.wh.y ros))]
(whenLet [origin (dictGet (the Map<Int,FlxPoint> save.data.storedOrigins) i)] (whenLet [origin (dictGet (the Map<Int,FlxPoint> save.data.storedOrigins) i)]
(s.origin.set origin.x origin.y)) (s.origin.set origin.x origin.y))
(set s.animation.frameIndex (Std.int (/ angle 90))) (set s.angle angle)
(set s.priorityID i) (set s.priorityID i)
(setNth spriteGrid jig.row jig.col s) (setNth spriteGrid jig.row jig.col s)
(setNth indexGrid jig.row jig.col i) (setNth indexGrid jig.row jig.col i)
@@ -311,7 +311,7 @@
(FlxSpriteUtil.alphaMask s source.pixels mask.pixels) (FlxSpriteUtil.alphaMask s source.pixels mask.pixels)
**(#when debug **(#when debug
(kiss_flixel.SpriteTools.writeOnSprite "$i" 32 s (object x (Percent 0.5) y (Percent 0.5)) FlxColor.RED)) (kiss_flixel.SpriteTools.writeOnSprite "$i" 32 s (object x (Percent 0.5) y (Percent 0.5)) FlxColor.RED))
(source.loadRotatedGraphic source.pixels 4) (s.loadRotatedGraphic s.pixels 4)
(set s.cameras [pieceCamera]) (set s.cameras [pieceCamera])

View File

@@ -32,21 +32,19 @@ class KissExtendedSprite extends flixel.addons.display.FlxExtendedSprite {
} }
function _rot(s:KissExtendedSprite, deg) { function _rot(s:KissExtendedSprite, deg) {
var angle = (s.angle + deg) % 360; var angle = (s.angle + deg) % 360;
if (angle % s.bakedRotationAngle == 0) { s.angle = angle;
s.animation.frameIndex = Std.int(angle / s.bakedRotationAngle); if (s != this) {
} else { var thisCenter = new FlxPoint(x + origin.x, y + origin.y);
s.angle = angle; var sCenter = new FlxPoint(s.x + s.origin.x, s.y + s.origin.y);
var offset = sCenter.subtractPoint(thisCenter);
s.origin.subtractPoint(offset);
//var newPosition = s.getScreenPosition(s.cameras[0]);
} }
} }
_rot(this, deg); _rot(this, deg);
for (c in connectedSprites) { for (c in connectedSprites) {
if (c != this) { if (c != this) {
_rot(c, deg); _rot(c, deg);
var thisCenter = new FlxPoint(x + origin.x, y + origin.y);
var cCenter = new FlxPoint(c.x + c.origin.x, c.y + c.origin.y);
var offset = cCenter.subtractPoint(thisCenter);
c.origin.subtractPoint(offset);
} }
} }
} }