@ludic-labs/assembly 0.0.0-stage → 0.4.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/LICENSE +2 -0
  3. package/README.md +50 -2
  4. package/dist/bake.d.ts +80 -0
  5. package/dist/bake.js +214 -0
  6. package/dist/browser.d.ts +89 -0
  7. package/dist/browser.js +534 -0
  8. package/dist/compat.d.ts +17 -0
  9. package/dist/compat.js +153 -0
  10. package/dist/compiler.d.ts +18 -0
  11. package/dist/compiler.js +1264 -0
  12. package/dist/diagnostics.d.ts +5 -0
  13. package/dist/diagnostics.js +8 -0
  14. package/dist/export.d.ts +54 -0
  15. package/dist/export.js +272 -0
  16. package/dist/index.d.ts +4 -0
  17. package/dist/index.js +3 -0
  18. package/dist/legacy.d.ts +36 -0
  19. package/dist/legacy.js +180 -0
  20. package/dist/math.d.ts +16 -0
  21. package/dist/math.js +62 -0
  22. package/dist/mesh.d.ts +11 -0
  23. package/dist/mesh.js +153 -0
  24. package/dist/motion.d.ts +63 -0
  25. package/dist/motion.js +1476 -0
  26. package/dist/pixel.d.ts +268 -0
  27. package/dist/pixel.js +942 -0
  28. package/dist/required.d.ts +2 -0
  29. package/dist/required.js +6 -0
  30. package/dist/shapes.d.ts +71 -0
  31. package/dist/shapes.js +396 -0
  32. package/dist/sprite-brief.d.ts +5 -0
  33. package/dist/sprite-brief.js +47 -0
  34. package/dist/sprite-compiler.d.ts +62 -0
  35. package/dist/sprite-compiler.js +1745 -0
  36. package/dist/sprite-decompile.d.ts +68 -0
  37. package/dist/sprite-decompile.js +786 -0
  38. package/dist/sprite-format.d.ts +4 -0
  39. package/dist/sprite-format.js +155 -0
  40. package/dist/sprite-guide.d.ts +40 -0
  41. package/dist/sprite-guide.js +330 -0
  42. package/dist/sprite-scene.d.ts +277 -0
  43. package/dist/sprite-scene.js +664 -0
  44. package/dist/sprite-types.d.ts +110 -0
  45. package/dist/sprite-types.js +1 -0
  46. package/dist/sprite.d.ts +8 -0
  47. package/dist/sprite.js +8 -0
  48. package/dist/svg/schema.d.ts +71 -0
  49. package/dist/svg/schema.js +217 -0
  50. package/dist/svg/types.d.ts +148 -0
  51. package/dist/svg/types.js +1 -0
  52. package/dist/svg.d.ts +26 -0
  53. package/dist/svg.js +539 -0
  54. package/dist/text.d.ts +12 -0
  55. package/dist/text.js +75 -0
  56. package/dist/types.d.ts +478 -0
  57. package/dist/types.js +1 -0
  58. package/docs/svg/README.md +150 -0
  59. package/docs/svg/specification.md +108 -0
  60. package/examples/svg/arcane-shield.json +261 -0
  61. package/examples/svg/aurora-ribbon.json +158 -0
  62. package/examples/svg/bouncing-ember.json +76 -0
  63. package/examples/svg/ember-fountain.json +224 -0
  64. package/examples/svg/lantern-keeper.json +1159 -0
  65. package/examples/svg/night-workshop.json +1120 -0
  66. package/examples/svg/waygate-platform.json +64 -0
  67. package/examples/svg/waygate-spark.json +92 -0
  68. package/examples/svg/waygate-wisp.json +105 -0
  69. package/examples/svg/waygate.json +485 -0
  70. package/package.json +132 -4
  71. package/schemas/asset-assembly-0.1.schema.json +354 -0
  72. package/schemas/asset-assembly-0.2.schema.json +429 -0
  73. package/schemas/asset-assembly-0.3.schema.json +572 -0
  74. package/schemas/motion-set-0.1.schema.json +178 -0
  75. package/schemas/pixel-sprite-0.1.schema.json +892 -0
  76. package/schemas/pixel-sprite-scene-0.1.schema.json +149 -0
  77. package/schemas/svg-asset-0.1.schema.json +1157 -0
  78. package/tools/svg-asset.mjs +106 -0
@@ -0,0 +1,1159 @@
1
+ {
2
+ "schema": "svg-asset/0.1",
3
+ "name": "Ember, the lantern keeper",
4
+ "viewBox": [0, 0, 480, 480],
5
+ "seed": 17,
6
+ "palette": {
7
+ "ink": "#283940",
8
+ "cream": "#ffe8bd",
9
+ "gold": "#edb95f",
10
+ "teal": "#347a77"
11
+ },
12
+ "params": {
13
+ "bob": {
14
+ "default": 0,
15
+ "min": -10,
16
+ "max": 10
17
+ },
18
+ "tail": {
19
+ "default": 0,
20
+ "min": -20,
21
+ "max": 20
22
+ },
23
+ "blink": {
24
+ "default": 1,
25
+ "min": 0.08,
26
+ "max": 1
27
+ },
28
+ "swing": {
29
+ "default": 0,
30
+ "min": -30,
31
+ "max": 30
32
+ },
33
+ "stride": {
34
+ "default": 0,
35
+ "min": -25,
36
+ "max": 25
37
+ },
38
+ "breath": {
39
+ "default": 1,
40
+ "min": 0.95,
41
+ "max": 1.05
42
+ },
43
+ "ear": {
44
+ "default": 0,
45
+ "min": -8,
46
+ "max": 8
47
+ }
48
+ },
49
+ "gradients": {
50
+ "fur": {
51
+ "kind": "linear",
52
+ "from": [170, 160],
53
+ "to": [300, 300],
54
+ "stops": [
55
+ {
56
+ "offset": 0.0,
57
+ "color": "#f5b46b"
58
+ },
59
+ {
60
+ "offset": 0.5,
61
+ "color": "#d77542"
62
+ },
63
+ {
64
+ "offset": 1.0,
65
+ "color": "#9f493a"
66
+ }
67
+ ]
68
+ },
69
+ "coat": {
70
+ "kind": "linear",
71
+ "from": [185, 260],
72
+ "to": [282, 350],
73
+ "stops": [
74
+ {
75
+ "offset": 0.0,
76
+ "color": "#4d9990"
77
+ },
78
+ {
79
+ "offset": 1.0,
80
+ "color": "#1c555a"
81
+ }
82
+ ]
83
+ },
84
+ "light": {
85
+ "kind": "radial",
86
+ "center": [0, 0],
87
+ "radius": 52,
88
+ "stops": [
89
+ {
90
+ "offset": 0,
91
+ "color": "#ffe2a0",
92
+ "opacity": 0.75
93
+ },
94
+ {
95
+ "offset": 1,
96
+ "color": "#ffe2a0",
97
+ "opacity": 0
98
+ }
99
+ ]
100
+ }
101
+ },
102
+ "symbols": {
103
+ "eye": {
104
+ "children": [
105
+ {
106
+ "id": "socket",
107
+ "kind": "ellipse",
108
+ "cx": 0,
109
+ "cy": 0,
110
+ "rx": 9,
111
+ "ry": 11,
112
+ "style": {
113
+ "fill": "#b95d3b"
114
+ }
115
+ },
116
+ {
117
+ "id": "white",
118
+ "kind": "ellipse",
119
+ "cx": 0,
120
+ "cy": 0,
121
+ "rx": 7,
122
+ "ry": 9,
123
+ "style": {
124
+ "fill": "@cream"
125
+ }
126
+ },
127
+ {
128
+ "id": "iris",
129
+ "kind": "ellipse",
130
+ "cx": 1,
131
+ "cy": 0,
132
+ "rx": 4,
133
+ "ry": 7,
134
+ "style": {
135
+ "fill": "@ink"
136
+ }
137
+ },
138
+ {
139
+ "id": "shine",
140
+ "kind": "ellipse",
141
+ "cx": 2,
142
+ "cy": -3,
143
+ "rx": 1.5,
144
+ "ry": 2,
145
+ "style": {
146
+ "fill": "#ffffff"
147
+ }
148
+ }
149
+ ]
150
+ },
151
+ "boot": {
152
+ "children": [
153
+ {
154
+ "id": "leather",
155
+ "kind": "path",
156
+ "d": [
157
+ ["M", -14, 0],
158
+ ["L", 13, 0],
159
+ ["L", 16, 30],
160
+ ["Q", 29, 36, 22, 44],
161
+ ["L", -19, 44],
162
+ ["Q", -23, 32, -15, 27],
163
+ ["Z"]
164
+ ],
165
+ "style": {
166
+ "fill": "#283940"
167
+ }
168
+ },
169
+ {
170
+ "id": "sole",
171
+ "kind": "path",
172
+ "d": [
173
+ ["M", -19, 40],
174
+ ["L", 22, 40]
175
+ ],
176
+ "style": {
177
+ "fill": "none",
178
+ "stroke": "#758d85",
179
+ "strokeWidth": 3,
180
+ "linecap": "round",
181
+ "linejoin": "round"
182
+ }
183
+ },
184
+ {
185
+ "id": "cuff",
186
+ "kind": "rect",
187
+ "x": -16,
188
+ "y": -2,
189
+ "width": 32,
190
+ "height": 10,
191
+ "radius": 3,
192
+ "style": {
193
+ "fill": "#526c65"
194
+ }
195
+ }
196
+ ]
197
+ }
198
+ },
199
+ "animations": {
200
+ "idle": {
201
+ "duration": 3,
202
+ "loop": true,
203
+ "tracks": {
204
+ "bob": [
205
+ {
206
+ "time": 0,
207
+ "value": 0,
208
+ "ease": "smooth"
209
+ },
210
+ {
211
+ "time": 1.5,
212
+ "value": -3,
213
+ "ease": "smooth"
214
+ },
215
+ {
216
+ "time": 3,
217
+ "value": 0,
218
+ "ease": "smooth"
219
+ }
220
+ ],
221
+ "breath": [
222
+ {
223
+ "time": 0,
224
+ "value": 1,
225
+ "ease": "smooth"
226
+ },
227
+ {
228
+ "time": 1.5,
229
+ "value": 1.025,
230
+ "ease": "smooth"
231
+ },
232
+ {
233
+ "time": 3,
234
+ "value": 1,
235
+ "ease": "smooth"
236
+ }
237
+ ],
238
+ "tail": [
239
+ {
240
+ "time": 0,
241
+ "value": -6,
242
+ "ease": "smooth"
243
+ },
244
+ {
245
+ "time": 1.5,
246
+ "value": 8,
247
+ "ease": "smooth"
248
+ },
249
+ {
250
+ "time": 3,
251
+ "value": -6,
252
+ "ease": "smooth"
253
+ }
254
+ ],
255
+ "blink": [
256
+ {
257
+ "time": 0,
258
+ "value": 1,
259
+ "ease": "smooth"
260
+ },
261
+ {
262
+ "time": 2.2,
263
+ "value": 1,
264
+ "ease": "smooth"
265
+ },
266
+ {
267
+ "time": 2.32,
268
+ "value": 0.08,
269
+ "ease": "smooth"
270
+ },
271
+ {
272
+ "time": 2.46,
273
+ "value": 1,
274
+ "ease": "smooth"
275
+ },
276
+ {
277
+ "time": 3,
278
+ "value": 1,
279
+ "ease": "smooth"
280
+ }
281
+ ],
282
+ "swing": [
283
+ {
284
+ "time": 0,
285
+ "value": -4,
286
+ "ease": "smooth"
287
+ },
288
+ {
289
+ "time": 1.5,
290
+ "value": 5,
291
+ "ease": "smooth"
292
+ },
293
+ {
294
+ "time": 3,
295
+ "value": -4,
296
+ "ease": "smooth"
297
+ }
298
+ ],
299
+ "ear": [
300
+ {
301
+ "time": 0,
302
+ "value": 0,
303
+ "ease": "smooth"
304
+ },
305
+ {
306
+ "time": 1.6,
307
+ "value": 0,
308
+ "ease": "smooth"
309
+ },
310
+ {
311
+ "time": 1.85,
312
+ "value": 5,
313
+ "ease": "smooth"
314
+ },
315
+ {
316
+ "time": 2.1,
317
+ "value": 0,
318
+ "ease": "smooth"
319
+ },
320
+ {
321
+ "time": 3,
322
+ "value": 0,
323
+ "ease": "smooth"
324
+ }
325
+ ]
326
+ }
327
+ },
328
+ "walk": {
329
+ "duration": 1.2,
330
+ "loop": true,
331
+ "tracks": {
332
+ "bob": [
333
+ {
334
+ "time": 0,
335
+ "value": -2,
336
+ "ease": "smooth"
337
+ },
338
+ {
339
+ "time": 0.3,
340
+ "value": 3,
341
+ "ease": "smooth"
342
+ },
343
+ {
344
+ "time": 0.6,
345
+ "value": -2,
346
+ "ease": "smooth"
347
+ },
348
+ {
349
+ "time": 0.9,
350
+ "value": 3,
351
+ "ease": "smooth"
352
+ },
353
+ {
354
+ "time": 1.2,
355
+ "value": -2,
356
+ "ease": "smooth"
357
+ }
358
+ ],
359
+ "stride": [
360
+ {
361
+ "time": 0,
362
+ "value": -17,
363
+ "ease": "smooth"
364
+ },
365
+ {
366
+ "time": 0.6,
367
+ "value": 17,
368
+ "ease": "smooth"
369
+ },
370
+ {
371
+ "time": 1.2,
372
+ "value": -17,
373
+ "ease": "smooth"
374
+ }
375
+ ],
376
+ "swing": [
377
+ {
378
+ "time": 0,
379
+ "value": 13,
380
+ "ease": "smooth"
381
+ },
382
+ {
383
+ "time": 0.6,
384
+ "value": -13,
385
+ "ease": "smooth"
386
+ },
387
+ {
388
+ "time": 1.2,
389
+ "value": 13,
390
+ "ease": "smooth"
391
+ }
392
+ ],
393
+ "tail": [
394
+ {
395
+ "time": 0,
396
+ "value": -10,
397
+ "ease": "smooth"
398
+ },
399
+ {
400
+ "time": 0.6,
401
+ "value": 12,
402
+ "ease": "smooth"
403
+ },
404
+ {
405
+ "time": 1.2,
406
+ "value": -10,
407
+ "ease": "smooth"
408
+ }
409
+ ]
410
+ }
411
+ }
412
+ },
413
+ "defaultAnimation": "idle",
414
+ "nodes": [
415
+ {
416
+ "id": "ground-shadow",
417
+ "kind": "ellipse",
418
+ "cx": 242,
419
+ "cy": 420,
420
+ "rx": 118,
421
+ "ry": 14,
422
+ "style": {
423
+ "fill": "#172e3a"
424
+ },
425
+ "opacity": 0.18
426
+ },
427
+ {
428
+ "id": "keeper",
429
+ "kind": "group",
430
+ "children": [
431
+ {
432
+ "id": "tail",
433
+ "kind": "group",
434
+ "children": [
435
+ {
436
+ "id": "silhouette",
437
+ "kind": "path",
438
+ "d": [
439
+ ["M", 272, 336],
440
+ ["C", 336, 337, 370, 268, 338, 226],
441
+ ["C", 415, 256, 411, 378, 299, 391],
442
+ ["Q", 270, 382, 272, 336],
443
+ ["Z"]
444
+ ],
445
+ "style": {
446
+ "fill": {
447
+ "gradient": "fur"
448
+ }
449
+ }
450
+ },
451
+ {
452
+ "id": "tip",
453
+ "kind": "path",
454
+ "d": [
455
+ ["M", 338, 226],
456
+ ["C", 378, 242, 397, 288, 386, 321],
457
+ ["L", 371, 300],
458
+ ["L", 368, 322],
459
+ ["L", 356, 291],
460
+ ["L", 349, 305],
461
+ ["C", 356, 276, 352, 248, 338, 226],
462
+ ["Z"]
463
+ ],
464
+ "style": {
465
+ "fill": "@cream"
466
+ }
467
+ },
468
+ {
469
+ "id": "accent",
470
+ "kind": "path",
471
+ "d": [
472
+ ["M", 307, 367],
473
+ ["Q", 350, 355, 366, 328]
474
+ ],
475
+ "style": {
476
+ "fill": "none",
477
+ "stroke": "#e9a361",
478
+ "strokeWidth": 3,
479
+ "linecap": "round",
480
+ "linejoin": "round"
481
+ }
482
+ }
483
+ ],
484
+ "transform": {
485
+ "pivot": [280, 350],
486
+ "rotate": "$tail"
487
+ }
488
+ },
489
+ {
490
+ "id": "left-leg",
491
+ "kind": "group",
492
+ "children": [
493
+ {
494
+ "id": "trouser",
495
+ "kind": "rect",
496
+ "x": 193,
497
+ "y": 329,
498
+ "width": 34,
499
+ "height": 47,
500
+ "radius": 8,
501
+ "style": {
502
+ "fill": "#736554"
503
+ }
504
+ },
505
+ {
506
+ "id": "boot",
507
+ "kind": "use",
508
+ "symbol": "boot",
509
+ "transform": {
510
+ "translate": [210, 371]
511
+ }
512
+ }
513
+ ],
514
+ "transform": {
515
+ "pivot": [210, 333],
516
+ "rotate": "$stride"
517
+ }
518
+ },
519
+ {
520
+ "id": "right-leg",
521
+ "kind": "group",
522
+ "children": [
523
+ {
524
+ "id": "trouser",
525
+ "kind": "rect",
526
+ "x": 249,
527
+ "y": 329,
528
+ "width": 34,
529
+ "height": 47,
530
+ "radius": 8,
531
+ "style": {
532
+ "fill": "#615b50"
533
+ }
534
+ },
535
+ {
536
+ "id": "boot",
537
+ "kind": "use",
538
+ "symbol": "boot",
539
+ "transform": {
540
+ "translate": [266, 371]
541
+ }
542
+ }
543
+ ],
544
+ "transform": {
545
+ "pivot": [266, 333],
546
+ "rotate": ["mul", -1, "$stride"]
547
+ }
548
+ },
549
+ {
550
+ "id": "body",
551
+ "kind": "group",
552
+ "children": [
553
+ {
554
+ "id": "coat",
555
+ "kind": "path",
556
+ "d": [
557
+ ["M", 199, 253],
558
+ ["Q", 235, 238, 276, 256],
559
+ ["L", 291, 339],
560
+ ["Q", 241, 360, 185, 339],
561
+ ["Z"]
562
+ ],
563
+ "style": {
564
+ "fill": {
565
+ "gradient": "coat"
566
+ },
567
+ "stroke": "@ink",
568
+ "strokeWidth": 3,
569
+ "linecap": "round",
570
+ "linejoin": "round"
571
+ }
572
+ },
573
+ {
574
+ "id": "lapel-left",
575
+ "kind": "path",
576
+ "d": [["M", 202, 255], ["L", 233, 275], ["L", 217, 302], ["L", 190, 272], ["Z"]],
577
+ "style": {
578
+ "fill": "#69aaa0"
579
+ }
580
+ },
581
+ {
582
+ "id": "lapel-right",
583
+ "kind": "path",
584
+ "d": [["M", 268, 254], ["L", 238, 276], ["L", 252, 303], ["L", 282, 270], ["Z"]],
585
+ "style": {
586
+ "fill": "#448880"
587
+ }
588
+ },
589
+ {
590
+ "id": "seam",
591
+ "kind": "path",
592
+ "d": [
593
+ ["M", 237, 278],
594
+ ["L", 237, 344]
595
+ ],
596
+ "style": {
597
+ "fill": "none",
598
+ "stroke": "#183f45",
599
+ "strokeWidth": 2,
600
+ "linecap": "round",
601
+ "linejoin": "round"
602
+ }
603
+ },
604
+ {
605
+ "id": "belt",
606
+ "kind": "rect",
607
+ "x": 185,
608
+ "y": 318,
609
+ "width": 104,
610
+ "height": 12,
611
+ "radius": 3,
612
+ "style": {
613
+ "fill": "#82583f"
614
+ }
615
+ },
616
+ {
617
+ "id": "buckle",
618
+ "kind": "rect",
619
+ "x": 232,
620
+ "y": 315,
621
+ "width": 17,
622
+ "height": 18,
623
+ "radius": 3,
624
+ "style": {
625
+ "fill": "@gold"
626
+ }
627
+ },
628
+ {
629
+ "id": "buckle-hole",
630
+ "kind": "rect",
631
+ "x": 237,
632
+ "y": 320,
633
+ "width": 7,
634
+ "height": 8,
635
+ "radius": 1,
636
+ "style": {
637
+ "fill": "#754c36"
638
+ }
639
+ },
640
+ {
641
+ "id": "pocket",
642
+ "kind": "rect",
643
+ "x": 260,
644
+ "y": 291,
645
+ "width": 19,
646
+ "height": 17,
647
+ "radius": 3,
648
+ "style": {
649
+ "fill": "#255e61"
650
+ }
651
+ },
652
+ {
653
+ "id": "pocket-stitch",
654
+ "kind": "path",
655
+ "d": [
656
+ ["M", 264, 294],
657
+ ["L", 264, 303],
658
+ ["L", 275, 303]
659
+ ],
660
+ "style": {
661
+ "fill": "none",
662
+ "stroke": "#86aea0",
663
+ "strokeWidth": 1,
664
+ "linecap": "round",
665
+ "linejoin": "round"
666
+ }
667
+ },
668
+ {
669
+ "id": "scarf",
670
+ "kind": "path",
671
+ "d": [
672
+ ["M", 203, 243],
673
+ ["Q", 238, 259, 276, 241],
674
+ ["L", 271, 263],
675
+ ["Q", 239, 276, 203, 263],
676
+ ["Z"]
677
+ ],
678
+ "style": {
679
+ "fill": "#d6aa62"
680
+ }
681
+ },
682
+ {
683
+ "id": "scarf-end",
684
+ "kind": "path",
685
+ "d": [["M", 215, 261], ["L", 230, 267], ["L", 220, 306], ["L", 202, 298], ["Z"]],
686
+ "style": {
687
+ "fill": "#eac17f"
688
+ }
689
+ }
690
+ ],
691
+ "transform": {
692
+ "pivot": [237, 340],
693
+ "scale": [1, "$breath"]
694
+ }
695
+ },
696
+ {
697
+ "id": "left-arm",
698
+ "kind": "group",
699
+ "children": [
700
+ {
701
+ "id": "sleeve",
702
+ "kind": "path",
703
+ "d": [["M", 195, 267], ["Q", 174, 266, 170, 313], ["L", 189, 318], ["L", 208, 279], ["Z"]],
704
+ "style": {
705
+ "fill": "#397e78",
706
+ "stroke": "@ink",
707
+ "strokeWidth": 2,
708
+ "linecap": "round",
709
+ "linejoin": "round"
710
+ }
711
+ },
712
+ {
713
+ "id": "paw",
714
+ "kind": "ellipse",
715
+ "cx": 178,
716
+ "cy": 320,
717
+ "rx": 11,
718
+ "ry": 15,
719
+ "style": {
720
+ "fill": "#cf7949"
721
+ }
722
+ },
723
+ {
724
+ "id": "fingers",
725
+ "kind": "path",
726
+ "d": [
727
+ ["M", 172, 320],
728
+ ["L", 174, 327],
729
+ ["M", 178, 320],
730
+ ["L", 180, 328]
731
+ ],
732
+ "style": {
733
+ "fill": "none",
734
+ "stroke": "#9e513b",
735
+ "strokeWidth": 1.5,
736
+ "linecap": "round",
737
+ "linejoin": "round"
738
+ }
739
+ }
740
+ ],
741
+ "transform": {
742
+ "pivot": [198, 269],
743
+ "rotate": ["mul", -0.5, "$swing"]
744
+ }
745
+ },
746
+ {
747
+ "id": "lantern-arm",
748
+ "kind": "group",
749
+ "children": [
750
+ {
751
+ "id": "sleeve",
752
+ "kind": "path",
753
+ "d": [["M", 274, 268], ["Q", 303, 268, 313, 307], ["L", 294, 318], ["L", 264, 284], ["Z"]],
754
+ "style": {
755
+ "fill": "#2c6969",
756
+ "stroke": "@ink",
757
+ "strokeWidth": 2,
758
+ "linecap": "round",
759
+ "linejoin": "round"
760
+ }
761
+ },
762
+ {
763
+ "id": "paw",
764
+ "kind": "ellipse",
765
+ "cx": 307,
766
+ "cy": 313,
767
+ "rx": 12,
768
+ "ry": 14,
769
+ "style": {
770
+ "fill": "#df9153"
771
+ }
772
+ },
773
+ {
774
+ "id": "lantern",
775
+ "kind": "group",
776
+ "children": [
777
+ {
778
+ "id": "glow",
779
+ "kind": "ellipse",
780
+ "cx": 0,
781
+ "cy": 0,
782
+ "rx": 52,
783
+ "ry": 52,
784
+ "style": {
785
+ "fill": {
786
+ "gradient": "light"
787
+ }
788
+ }
789
+ },
790
+ {
791
+ "id": "handle",
792
+ "kind": "path",
793
+ "d": [
794
+ ["M", -8, -29],
795
+ ["L", -8, -39],
796
+ ["Q", 0, -48, 8, -39],
797
+ ["L", 8, -29]
798
+ ],
799
+ "style": {
800
+ "fill": "none",
801
+ "stroke": "@ink",
802
+ "strokeWidth": 3,
803
+ "linecap": "round",
804
+ "linejoin": "round"
805
+ }
806
+ },
807
+ {
808
+ "id": "glass",
809
+ "kind": "rect",
810
+ "x": -16,
811
+ "y": -24,
812
+ "width": 32,
813
+ "height": 43,
814
+ "radius": 5,
815
+ "style": {
816
+ "fill": "#f4c76e"
817
+ }
818
+ },
819
+ {
820
+ "id": "inner",
821
+ "kind": "rect",
822
+ "x": -11,
823
+ "y": -20,
824
+ "width": 22,
825
+ "height": 34,
826
+ "radius": 4,
827
+ "style": {
828
+ "fill": "#ffe7a7"
829
+ }
830
+ },
831
+ {
832
+ "id": "flame",
833
+ "kind": "path",
834
+ "d": [["M", 0, 12], ["C", -15, 0, -2, -10, 1, -15], ["C", 0, -3, 14, 4, 0, 12], ["Z"]],
835
+ "style": {
836
+ "fill": "#ee9751"
837
+ }
838
+ },
839
+ {
840
+ "id": "frame",
841
+ "kind": "path",
842
+ "d": [
843
+ ["M", -16, -24],
844
+ ["L", -11, 19],
845
+ ["M", 16, -24],
846
+ ["L", 11, 19]
847
+ ],
848
+ "style": {
849
+ "fill": "none",
850
+ "stroke": "@ink",
851
+ "strokeWidth": 3,
852
+ "linecap": "round",
853
+ "linejoin": "round"
854
+ }
855
+ },
856
+ {
857
+ "id": "cap",
858
+ "kind": "rect",
859
+ "x": -20,
860
+ "y": -29,
861
+ "width": 40,
862
+ "height": 8,
863
+ "radius": 3,
864
+ "style": {
865
+ "fill": "@ink"
866
+ }
867
+ },
868
+ {
869
+ "id": "base",
870
+ "kind": "rect",
871
+ "x": -19,
872
+ "y": 18,
873
+ "width": 38,
874
+ "height": 8,
875
+ "radius": 3,
876
+ "style": {
877
+ "fill": "@ink"
878
+ }
879
+ }
880
+ ],
881
+ "transform": {
882
+ "translate": [313, 368],
883
+ "rotate": ["mul", -0.7, "$swing"]
884
+ }
885
+ }
886
+ ],
887
+ "transform": {
888
+ "pivot": [274, 273],
889
+ "rotate": "$swing"
890
+ }
891
+ },
892
+ {
893
+ "id": "head",
894
+ "kind": "group",
895
+ "children": [
896
+ {
897
+ "id": "left-ear",
898
+ "kind": "group",
899
+ "children": [
900
+ {
901
+ "id": "ear",
902
+ "kind": "path",
903
+ "d": [["M", 182, 188], ["L", 163, 111], ["Q", 200, 114, 220, 173], ["Z"]],
904
+ "style": {
905
+ "fill": {
906
+ "gradient": "fur"
907
+ },
908
+ "stroke": "@ink",
909
+ "strokeWidth": 3,
910
+ "linecap": "round",
911
+ "linejoin": "round"
912
+ }
913
+ },
914
+ {
915
+ "id": "inner",
916
+ "kind": "path",
917
+ "d": [["M", 181, 170], ["L", 176, 130], ["Q", 197, 142, 203, 166], ["Z"]],
918
+ "style": {
919
+ "fill": "#754c43"
920
+ }
921
+ }
922
+ ],
923
+ "transform": {
924
+ "pivot": [198, 181],
925
+ "rotate": "$ear"
926
+ }
927
+ },
928
+ {
929
+ "id": "right-ear",
930
+ "kind": "group",
931
+ "children": [
932
+ {
933
+ "id": "ear",
934
+ "kind": "path",
935
+ "d": [["M", 256, 170], ["Q", 278, 117, 309, 112], ["L", 294, 192], ["Z"]],
936
+ "style": {
937
+ "fill": {
938
+ "gradient": "fur"
939
+ },
940
+ "stroke": "@ink",
941
+ "strokeWidth": 3,
942
+ "linecap": "round",
943
+ "linejoin": "round"
944
+ }
945
+ },
946
+ {
947
+ "id": "inner",
948
+ "kind": "path",
949
+ "d": [["M", 275, 171], ["Q", 284, 142, 297, 133], ["L", 289, 178], ["Z"]],
950
+ "style": {
951
+ "fill": "#754c43"
952
+ }
953
+ }
954
+ ],
955
+ "transform": {
956
+ "pivot": [280, 182],
957
+ "rotate": ["mul", -1, "$ear"]
958
+ }
959
+ },
960
+ {
961
+ "id": "face",
962
+ "kind": "path",
963
+ "d": [
964
+ ["M", 180, 177],
965
+ ["Q", 237, 145, 294, 177],
966
+ ["L", 310, 215],
967
+ ["L", 298, 215],
968
+ ["L", 309, 230],
969
+ ["L", 292, 229],
970
+ ["Q", 274, 264, 238, 267],
971
+ ["Q", 200, 260, 182, 232],
972
+ ["L", 168, 234],
973
+ ["L", 177, 218],
974
+ ["L", 166, 217],
975
+ ["Z"]
976
+ ],
977
+ "style": {
978
+ "fill": {
979
+ "gradient": "fur"
980
+ },
981
+ "stroke": "@ink",
982
+ "strokeWidth": 3,
983
+ "linecap": "round",
984
+ "linejoin": "round"
985
+ }
986
+ },
987
+ {
988
+ "id": "mask-left",
989
+ "kind": "path",
990
+ "d": [
991
+ ["M", 175, 211],
992
+ ["Q", 197, 206, 232, 241],
993
+ ["L", 238, 259],
994
+ ["Q", 202, 262, 181, 231],
995
+ ["L", 168, 234],
996
+ ["L", 177, 218],
997
+ ["Z"]
998
+ ],
999
+ "style": {
1000
+ "fill": "@cream"
1001
+ }
1002
+ },
1003
+ {
1004
+ "id": "mask-right",
1005
+ "kind": "path",
1006
+ "d": [
1007
+ ["M", 300, 211],
1008
+ ["Q", 278, 206, 244, 241],
1009
+ ["L", 238, 259],
1010
+ ["Q", 276, 261, 294, 231],
1011
+ ["L", 309, 230],
1012
+ ["L", 298, 215],
1013
+ ["Z"]
1014
+ ],
1015
+ "style": {
1016
+ "fill": "@cream"
1017
+ }
1018
+ },
1019
+ {
1020
+ "id": "left-eye",
1021
+ "kind": "use",
1022
+ "symbol": "eye",
1023
+ "transform": {
1024
+ "translate": [211, 209],
1025
+ "scale": [1, "$blink"]
1026
+ }
1027
+ },
1028
+ {
1029
+ "id": "right-eye",
1030
+ "kind": "use",
1031
+ "symbol": "eye",
1032
+ "transform": {
1033
+ "translate": [267, 209],
1034
+ "scale": [1, "$blink"]
1035
+ }
1036
+ },
1037
+ {
1038
+ "id": "brow-left",
1039
+ "kind": "path",
1040
+ "d": [
1041
+ ["M", 202, 192],
1042
+ ["Q", 211, 187, 219, 192]
1043
+ ],
1044
+ "style": {
1045
+ "fill": "none",
1046
+ "stroke": "#6c493a",
1047
+ "strokeWidth": 3,
1048
+ "linecap": "round",
1049
+ "linejoin": "round"
1050
+ }
1051
+ },
1052
+ {
1053
+ "id": "brow-right",
1054
+ "kind": "path",
1055
+ "d": [
1056
+ ["M", 259, 192],
1057
+ ["Q", 267, 188, 276, 193]
1058
+ ],
1059
+ "style": {
1060
+ "fill": "none",
1061
+ "stroke": "#6c493a",
1062
+ "strokeWidth": 3,
1063
+ "linecap": "round",
1064
+ "linejoin": "round"
1065
+ }
1066
+ },
1067
+ {
1068
+ "id": "nose",
1069
+ "kind": "path",
1070
+ "d": [
1071
+ ["M", 226, 235],
1072
+ ["Q", 238, 229, 251, 235],
1073
+ ["Q", 245, 248, 238, 246],
1074
+ ["Q", 230, 246, 226, 235],
1075
+ ["Z"]
1076
+ ],
1077
+ "style": {
1078
+ "fill": "@ink"
1079
+ }
1080
+ },
1081
+ {
1082
+ "id": "nose-shine",
1083
+ "kind": "ellipse",
1084
+ "cx": 234,
1085
+ "cy": 235,
1086
+ "rx": 4,
1087
+ "ry": 1.5,
1088
+ "style": {
1089
+ "fill": "#68817e"
1090
+ }
1091
+ },
1092
+ {
1093
+ "id": "smile",
1094
+ "kind": "path",
1095
+ "d": [
1096
+ ["M", 238, 246],
1097
+ ["L", 238, 252],
1098
+ ["Q", 248, 260, 255, 249],
1099
+ ["M", 238, 252],
1100
+ ["Q", 228, 259, 223, 250]
1101
+ ],
1102
+ "style": {
1103
+ "fill": "none",
1104
+ "stroke": "#825945",
1105
+ "strokeWidth": 2,
1106
+ "linecap": "round",
1107
+ "linejoin": "round"
1108
+ }
1109
+ },
1110
+ {
1111
+ "id": "tuft",
1112
+ "kind": "path",
1113
+ "d": [
1114
+ ["M", 221, 168],
1115
+ ["L", 233, 157],
1116
+ ["L", 232, 171],
1117
+ ["L", 249, 163]
1118
+ ],
1119
+ "style": {
1120
+ "fill": "none",
1121
+ "stroke": "#ffd18a",
1122
+ "strokeWidth": 3,
1123
+ "linecap": "round",
1124
+ "linejoin": "round"
1125
+ }
1126
+ },
1127
+ {
1128
+ "id": "freckles",
1129
+ "kind": "path",
1130
+ "d": [
1131
+ ["M", 196, 228],
1132
+ ["L", 197, 228],
1133
+ ["M", 201, 234],
1134
+ ["L", 202, 234],
1135
+ ["M", 280, 228],
1136
+ ["L", 281, 228],
1137
+ ["M", 274, 234],
1138
+ ["L", 275, 234]
1139
+ ],
1140
+ "style": {
1141
+ "fill": "none",
1142
+ "stroke": "#ad754f",
1143
+ "strokeWidth": 2,
1144
+ "linecap": "round",
1145
+ "linejoin": "round"
1146
+ }
1147
+ }
1148
+ ],
1149
+ "transform": {
1150
+ "translate": [0, ["mul", 0.35, "$bob"]]
1151
+ }
1152
+ }
1153
+ ],
1154
+ "transform": {
1155
+ "translate": [0, "$bob"]
1156
+ }
1157
+ }
1158
+ ]
1159
+ }