How it works
Sweep heel → tip
Slash progress is age over hitbox duration. The wedge grows from the heel, holds, then fades with the AttackFx volume — one node, not a volley of hitboxes.
Facing left mirrors sheet dest in place (negate width only). Godot abs()s size and does not move the origin — shifting the rect would draw into the player.
# draw_slash.gd — sweep reveal
var progress := clampf(age / duration, 0.0, 1.0)
var reveal := _ease_out(clampf(progress / 0.55, 0.0, 1.0))
var pts := _wedge_pts(box, fx, facing, reveal)
canvas.draw_colored_polygon(pts, fill)
# sheet_atlas.gd — flip in place
var dest := Rect2(center - sz * 0.5, sz)
if facing < 0:
dest.size.x = -sz.x