@spritebuddy/core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { FORMAT, VERSION } from './types.js';
2
- export type { AnimationDef, AnimationFrameDef, FrameDef, LayerDef, LoopMode, Point, Rect, SpriteBuddyFile, Trim, } from './types.js';
2
+ export type { AnimationDef, AnimationFrameDef, FrameDef, LayerDef, LightDef, LoopMode, Point, Rect, SpriteBuddyFile, Trim, } from './types.js';
3
3
  export { DEFAULT_DURATION, FormatError, parseFile } from './parse.js';
4
4
  export { cycleDuration, cycleOrder, eventsBetween, frameAt, type FrameEvent, type PlaybackPosition, } from './timing.js';
5
5
  export { boundsOf, partsOf, type Part } from './resolve.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAY7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,OAAO,GAGR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAa7C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,OAAO,GAGR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC"}
package/dist/parse.js CHANGED
@@ -136,8 +136,29 @@ function animationDef(v, path, count) {
136
136
  name: string(o.name, `${path}.name`),
137
137
  loop,
138
138
  frames: array(o.frames, `${path}.frames`).map((f, i) => animationFrameDef(f, `${path}.frames[${i}]`, count, duration)),
139
+ light: lightDef(o.lighting),
139
140
  };
140
141
  }
142
+ const LIGHT_NUMBERS = ['angle', 'height', 'size', 'brightness', 'ambient', 'opacity', 'bands'];
143
+ /**
144
+ * Picks the editor's light out of an animation's `lighting`. Runtimes don't need it to play the
145
+ * file, so a field of the wrong type is dropped rather than refused.
146
+ */
147
+ function lightDef(lighting) {
148
+ const light = isObject(lighting) ? lighting.light : undefined;
149
+ if (!isObject(light))
150
+ return null;
151
+ const out = {};
152
+ for (const key of LIGHT_NUMBERS) {
153
+ const v = light[key];
154
+ if (typeof v === 'number' && Number.isFinite(v))
155
+ out[key] = v;
156
+ }
157
+ if (typeof light.color === 'string' && /^#[0-9a-f]{6}$/i.test(light.color)) {
158
+ out.color = light.color;
159
+ }
160
+ return out;
161
+ }
141
162
  /**
142
163
  * Reads a SpriteBuddy runtime file (`.anims.json`, version 3) from parsed JSON, filling in every
143
164
  * default. Unknown fields are ignored so newer minor additions still load. Throws
@@ -168,6 +189,7 @@ export function parseFile(json) {
168
189
  return {
169
190
  version,
170
191
  image: string(o.image, 'image'),
192
+ normals: opt(o.normals, null, (n) => string(n, 'normals')),
171
193
  width,
172
194
  height,
173
195
  scale: opt(o.scale, 1, (s) => number(s, 'scale', 1e-6, 1e6)),
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -65,16 +65,43 @@ export interface AnimationFrameDef {
65
65
  */
66
66
  readonly events: readonly string[];
67
67
  }
68
+ /**
69
+ * The light SpriteBuddy Pro lit an animation with (its `lighting.light`), so a runtime that lights
70
+ * in real time can match the editor. Only the fields the file sets are here; see the format docs
71
+ * for their defaults.
72
+ */
73
+ export interface LightDef {
74
+ /** Where the light comes from, in degrees clockwise from the top of the screen. */
75
+ readonly angle?: number;
76
+ /** Elevation in degrees: 90 shines from the viewer, below 0 from behind. */
77
+ readonly height?: number;
78
+ /** How far the light wraps round the shape, 0 to 1. */
79
+ readonly size?: number;
80
+ /** `"#rrggbb"`. */
81
+ readonly color?: string;
82
+ readonly brightness?: number;
83
+ readonly ambient?: number;
84
+ readonly opacity?: number;
85
+ /** Cel shading levels (2, 3 or 4), or 0 for smooth. */
86
+ readonly bands?: number;
87
+ }
68
88
  export interface AnimationDef {
69
89
  readonly name: string;
70
90
  readonly loop: LoopMode;
71
91
  readonly frames: readonly AnimationFrameDef[];
92
+ /** The editor's light for this animation, or null when it has none. */
93
+ readonly light: LightDef | null;
72
94
  }
73
95
  /** A parsed runtime file, with every default filled in. */
74
96
  export interface SpriteBuddyFile {
75
97
  readonly version: number;
76
98
  /** The sheet image's file name, relative to the runtime file. */
77
99
  readonly image: string;
100
+ /**
101
+ * A normal-map image with the same size and frame layout as `image`, for real-time lighting,
102
+ * or null when the export has none. Relative to the runtime file.
103
+ */
104
+ readonly normals: string | null;
78
105
  readonly width: number;
79
106
  readonly height: number;
80
107
  /** Scale the sheet was exported at (1 = original pixels). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spritebuddy/core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Reads SpriteBuddy animation files and works out what to draw at any moment. No dependencies, any engine.",
5
5
  "license": "ISC",
6
6
  "author": "Patrick Hammond",
package/schema.json CHANGED
@@ -6,13 +6,22 @@
6
6
  "type": "object",
7
7
  "required": ["format", "version", "image", "size", "frames"],
8
8
  "properties": {
9
- "format": { "const": "spritebuddy-animations" },
10
- "version": { "const": 3 },
9
+ "format": {
10
+ "const": "spritebuddy-animations"
11
+ },
12
+ "version": {
13
+ "const": 3
14
+ },
11
15
  "image": {
12
16
  "type": "string",
13
17
  "minLength": 1,
14
18
  "description": "The sheet image, relative to this file."
15
19
  },
20
+ "normals": {
21
+ "type": "string",
22
+ "minLength": 1,
23
+ "description": "A normal-map image with the same size and frame layout as image, relative to this file. RGB holds the surface direction as (n + 1) / 2 with green pointing up (Y+). For real-time lighting; runtimes that don't light ignore it."
24
+ },
16
25
  "size": {
17
26
  "$ref": "#/$defs/size",
18
27
  "description": "Sheet size in pixels: [width, height]."
@@ -25,33 +34,66 @@
25
34
  },
26
35
  "frames": {
27
36
  "type": "array",
28
- "items": { "$ref": "#/$defs/frame" }
37
+ "items": {
38
+ "$ref": "#/$defs/frame"
39
+ }
29
40
  },
30
41
  "animations": {
31
42
  "type": "array",
32
43
  "default": [],
33
- "items": { "$ref": "#/$defs/animation" }
44
+ "items": {
45
+ "$ref": "#/$defs/animation"
46
+ }
34
47
  }
35
48
  },
36
49
  "$defs": {
37
- "int": { "type": "integer" },
38
- "count": { "type": "integer", "minimum": 0 },
39
- "positive": { "type": "integer", "minimum": 1 },
50
+ "int": {
51
+ "type": "integer"
52
+ },
53
+ "count": {
54
+ "type": "integer",
55
+ "minimum": 0
56
+ },
57
+ "positive": {
58
+ "type": "integer",
59
+ "minimum": 1
60
+ },
40
61
  "size": {
41
62
  "type": "array",
42
- "prefixItems": [{ "$ref": "#/$defs/positive" }, { "$ref": "#/$defs/positive" }],
63
+ "prefixItems": [
64
+ {
65
+ "$ref": "#/$defs/positive"
66
+ },
67
+ {
68
+ "$ref": "#/$defs/positive"
69
+ }
70
+ ],
43
71
  "minItems": 2,
44
72
  "maxItems": 2
45
73
  },
46
74
  "point": {
47
75
  "type": "array",
48
- "prefixItems": [{ "type": "number" }, { "type": "number" }],
76
+ "prefixItems": [
77
+ {
78
+ "type": "number"
79
+ },
80
+ {
81
+ "type": "number"
82
+ }
83
+ ],
49
84
  "minItems": 2,
50
85
  "maxItems": 2
51
86
  },
52
87
  "offset": {
53
88
  "type": "array",
54
- "prefixItems": [{ "$ref": "#/$defs/int" }, { "$ref": "#/$defs/int" }],
89
+ "prefixItems": [
90
+ {
91
+ "$ref": "#/$defs/int"
92
+ },
93
+ {
94
+ "$ref": "#/$defs/int"
95
+ }
96
+ ],
55
97
  "minItems": 2,
56
98
  "maxItems": 2
57
99
  },
@@ -59,15 +101,26 @@
59
101
  "type": "object",
60
102
  "required": ["name", "rect"],
61
103
  "properties": {
62
- "name": { "type": "string", "minLength": 1 },
104
+ "name": {
105
+ "type": "string",
106
+ "minLength": 1
107
+ },
63
108
  "rect": {
64
109
  "type": "array",
65
110
  "description": "[x, y, w, h]: where the pixels sit on the sheet, at their upright size.",
66
111
  "prefixItems": [
67
- { "$ref": "#/$defs/count" },
68
- { "$ref": "#/$defs/count" },
69
- { "$ref": "#/$defs/positive" },
70
- { "$ref": "#/$defs/positive" }
112
+ {
113
+ "$ref": "#/$defs/count"
114
+ },
115
+ {
116
+ "$ref": "#/$defs/count"
117
+ },
118
+ {
119
+ "$ref": "#/$defs/positive"
120
+ },
121
+ {
122
+ "$ref": "#/$defs/positive"
123
+ }
71
124
  ],
72
125
  "minItems": 4,
73
126
  "maxItems": 4
@@ -79,16 +132,24 @@
79
132
  "rotated": {
80
133
  "type": "boolean",
81
134
  "default": false,
82
- "description": "Stored turned 90° clockwise: covers h columns and w rows on the sheet."
135
+ "description": "Stored turned 90\u00b0 clockwise: covers h columns and w rows on the sheet."
83
136
  },
84
137
  "trim": {
85
138
  "type": "array",
86
139
  "description": "[x, y, fullWidth, fullHeight]: transparent edges were cut off; the pixels start at x, y inside a full frame of this size.",
87
140
  "prefixItems": [
88
- { "$ref": "#/$defs/count" },
89
- { "$ref": "#/$defs/count" },
90
- { "$ref": "#/$defs/positive" },
91
- { "$ref": "#/$defs/positive" }
141
+ {
142
+ "$ref": "#/$defs/count"
143
+ },
144
+ {
145
+ "$ref": "#/$defs/count"
146
+ },
147
+ {
148
+ "$ref": "#/$defs/positive"
149
+ },
150
+ {
151
+ "$ref": "#/$defs/positive"
152
+ }
92
153
  ],
93
154
  "minItems": 4,
94
155
  "maxItems": 4
@@ -99,7 +160,10 @@
99
160
  "type": "object",
100
161
  "required": ["frame"],
101
162
  "properties": {
102
- "frame": { "$ref": "#/$defs/count", "description": "Index into frames." },
163
+ "frame": {
164
+ "$ref": "#/$defs/count",
165
+ "description": "Index into frames."
166
+ },
103
167
  "x": {
104
168
  "$ref": "#/$defs/int",
105
169
  "default": 0,
@@ -115,29 +179,56 @@
115
179
  "default": 1,
116
180
  "description": "Draw order; the base frame is 0."
117
181
  },
118
- "opacity": { "type": "number", "minimum": 0, "maximum": 1, "default": 1 },
119
- "flipX": { "type": "boolean", "default": false },
120
- "flipY": { "type": "boolean", "default": false }
182
+ "opacity": {
183
+ "type": "number",
184
+ "minimum": 0,
185
+ "maximum": 1,
186
+ "default": 1
187
+ },
188
+ "flipX": {
189
+ "type": "boolean",
190
+ "default": false
191
+ },
192
+ "flipY": {
193
+ "type": "boolean",
194
+ "default": false
195
+ }
121
196
  }
122
197
  },
123
198
  "animationFrame": {
124
199
  "oneOf": [
125
- { "$ref": "#/$defs/count", "description": "A frame index, with the animation's duration." },
200
+ {
201
+ "$ref": "#/$defs/count",
202
+ "description": "A frame index, with the animation's duration."
203
+ },
126
204
  {
127
205
  "type": "object",
128
206
  "required": ["frame"],
129
207
  "properties": {
130
- "frame": { "$ref": "#/$defs/count" },
131
- "duration": { "$ref": "#/$defs/positive", "description": "Milliseconds." },
208
+ "frame": {
209
+ "$ref": "#/$defs/count"
210
+ },
211
+ "duration": {
212
+ "$ref": "#/$defs/positive",
213
+ "description": "Milliseconds."
214
+ },
132
215
  "offset": {
133
216
  "$ref": "#/$defs/offset",
134
217
  "description": "[x, y] nudge from where the pivot puts the frame; +x right, +y down."
135
218
  },
136
- "layers": { "type": "array", "items": { "$ref": "#/$defs/layer" } },
219
+ "layers": {
220
+ "type": "array",
221
+ "items": {
222
+ "$ref": "#/$defs/layer"
223
+ }
224
+ },
137
225
  "events": {
138
226
  "type": "array",
139
227
  "description": "Names fired when this frame starts showing, such as \"hit\" or \"step\".",
140
- "items": { "type": "string", "minLength": 1 }
228
+ "items": {
229
+ "type": "string",
230
+ "minLength": 1
231
+ }
141
232
  }
142
233
  }
143
234
  }
@@ -147,14 +238,104 @@
147
238
  "type": "object",
148
239
  "required": ["name", "frames"],
149
240
  "properties": {
150
- "name": { "type": "string", "minLength": 1 },
151
- "loop": { "enum": ["loop", "pingpong", "once"], "default": "loop" },
241
+ "name": {
242
+ "type": "string",
243
+ "minLength": 1
244
+ },
245
+ "loop": {
246
+ "enum": ["loop", "pingpong", "once"],
247
+ "default": "loop"
248
+ },
152
249
  "duration": {
153
250
  "$ref": "#/$defs/positive",
154
251
  "default": 100,
155
252
  "description": "Milliseconds for frames that don't give their own."
156
253
  },
157
- "frames": { "type": "array", "items": { "$ref": "#/$defs/animationFrame" } }
254
+ "frames": {
255
+ "type": "array",
256
+ "items": {
257
+ "$ref": "#/$defs/animationFrame"
258
+ }
259
+ },
260
+ "lighting": {
261
+ "$ref": "#/$defs/lighting"
262
+ }
263
+ }
264
+ },
265
+ "lighting": {
266
+ "type": "object",
267
+ "description": "SpriteBuddy Pro's lighting settings for the animation, kept so the editor can read them back. Runtimes ignore them. Missing values mean the editor's defaults.",
268
+ "properties": {
269
+ "light": {
270
+ "type": "object",
271
+ "properties": {
272
+ "angle": {
273
+ "type": "number",
274
+ "minimum": 0,
275
+ "exclusiveMaximum": 360,
276
+ "description": "Where the light comes from, in degrees clockwise from the top."
277
+ },
278
+ "height": {
279
+ "type": "number",
280
+ "minimum": -90,
281
+ "maximum": 90,
282
+ "description": "Elevation in degrees: 90 shines from the viewer, below 0 from behind."
283
+ },
284
+ "size": {
285
+ "type": "number",
286
+ "minimum": 0,
287
+ "maximum": 1
288
+ },
289
+ "color": {
290
+ "type": "string",
291
+ "pattern": "^#[0-9a-fA-F]{6}$"
292
+ },
293
+ "brightness": {
294
+ "type": "number",
295
+ "minimum": 0,
296
+ "maximum": 3
297
+ },
298
+ "ambient": {
299
+ "type": "number",
300
+ "minimum": 0,
301
+ "maximum": 1
302
+ },
303
+ "opacity": {
304
+ "type": "number",
305
+ "minimum": 0,
306
+ "maximum": 1
307
+ },
308
+ "bands": {
309
+ "enum": [0, 2, 3, 4]
310
+ },
311
+ "paletteSnap": {
312
+ "type": "boolean"
313
+ }
314
+ }
315
+ },
316
+ "normals": {
317
+ "type": "object",
318
+ "properties": {
319
+ "shape": {
320
+ "enum": ["pillow", "bevel"]
321
+ },
322
+ "depth": {
323
+ "type": "number",
324
+ "minimum": 0,
325
+ "maximum": 1
326
+ },
327
+ "softness": {
328
+ "type": "integer",
329
+ "minimum": 1,
330
+ "maximum": 32
331
+ },
332
+ "detail": {
333
+ "type": "number",
334
+ "minimum": 0,
335
+ "maximum": 1
336
+ }
337
+ }
338
+ }
158
339
  }
159
340
  }
160
341
  }