{
  "schemaVersion": 1,
  "fps": 24,
  "frameSize": [
    512,
    384
  ],
  "pivot": {
    "x": 224,
    "y": 321
  },
  "actions": {
    "idle": {
      "source": "idle",
      "startFrame": 22,
      "endFrameExclusive": 57,
      "offsetX": -2,
      "offsetY": 3,
      "loop": true
    },
    "run": {
      "source": "run",
      "startFrame": 44,
      "endFrameExclusive": 60,
      "offsetX": -24,
      "offsetY": 3,
      "loop": true
    },
    "punch": {
      "source": "attacks",
      "startFrame": 9,
      "endFrameExclusive": 45,
      "offsetX": 0,
      "offsetY": 0,
      "loop": false
    },
    "kick": {
      "source": "attacks",
      "startFrame": 58,
      "endFrameExclusive": 89,
      "offsetX": 0,
      "offsetY": 0,
      "loop": false
    }
  },
  "normalization": "Contain each full frame in 512x384, then apply the listed fixed translation to the whole clip. No per-frame crop, motion interpolation or generated transition.",
  "loopSelection": "Contiguous source ranges, exclusive end. Endpoint image difference used to shortlist; playback checked visually."
}
