Sprite pivot and other points

After playing for some time with Aseprite i noticed lack of the two things that I’d really appreciate.

  1. Sprite Pivot, already mentioned here: Defining "Sprite Pivot Point" and "Looping" for animations in games
  2. Points

Use case:

I’m making a platform game. In the code i treat the position of each NPC as the location where he’s standing. I draw the sprite so that NPC’s feet match it’s position. Additionaly, my NPCs can hold weapons in their hands and have hats on their heads.
To ensure the sprite is drawn correctly, I set the sprite pivot at NPC’s feet on each frame. To position weapons and hats correctly, I define points “weapon” and “hat” and set them on NPC’s hand and head respectively. To do that i have to lookup the position i want on each frame, and then manually update the sprite definition file.

Sprite pivot is not necessary if each frame has the same size, but there are some cases it would (greatly) reduce spritesheet’s size (especially when used with frame trimming). Right now i have animation of NPC pulling up onto ledge. With pivot set at ledge, each frame is as only big as NPC. Without it, I’d end with each frame being twice the height and width of NPC.
If in animation my NPC moves around the frame (bows, falls over, …), then locating hand and head gets difficult.

Possible implementation:

“Pivot tool”, described in the link above, seems fine. For other points, something like “point layer” would be nice: new type of layer, its name is the name of the point. You can’t draw on it, but clicking anywhere sets a point there (only one point per layer). Clicking outside of the canvas could remove the point from this frame.

Exporting to JSON would add a new entry in each frame: map with each point: “points”: {“weapon”: {“x”:32, “y”: 48}, “hat”: {…}}, and so on.