@adatechnology/game-shapes 0.0.0-stage → 0.1.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.
@@ -0,0 +1,703 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Andersonfrfilho/adatechnology-game-kit/packages/game-shapes/schema/shape.schema.json",
4
+ "title": "game-shapes shape",
5
+ "type": "object",
6
+ "required": [
7
+ "version",
8
+ "root"
9
+ ],
10
+ "additionalProperties": false,
11
+ "properties": {
12
+ "version": {
13
+ "const": 1
14
+ },
15
+ "name": {
16
+ "type": "string"
17
+ },
18
+ "materials": {
19
+ "type": "object",
20
+ "additionalProperties": {
21
+ "$ref": "#/$defs/material"
22
+ }
23
+ },
24
+ "root": {
25
+ "$ref": "#/$defs/node"
26
+ },
27
+ "lod": {
28
+ "type": "array",
29
+ "items": {
30
+ "$ref": "#/$defs/lodLevel"
31
+ }
32
+ },
33
+ "cullDistance": {
34
+ "type": "number",
35
+ "exclusiveMinimum": 0
36
+ }
37
+ },
38
+ "$defs": {
39
+ "number": {
40
+ "type": "number"
41
+ },
42
+ "count": {
43
+ "type": "integer",
44
+ "minimum": 0
45
+ },
46
+ "vec2": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "number"
50
+ },
51
+ "minItems": 2,
52
+ "maxItems": 2
53
+ },
54
+ "vec3": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "number"
58
+ },
59
+ "minItems": 3,
60
+ "maxItems": 3
61
+ },
62
+ "mat4": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "number"
66
+ },
67
+ "minItems": 16,
68
+ "maxItems": 16
69
+ },
70
+ "color": {
71
+ "oneOf": [
72
+ {
73
+ "type": "integer",
74
+ "minimum": 0,
75
+ "maximum": 16777215
76
+ },
77
+ {
78
+ "type": "string",
79
+ "pattern": "^#[0-9a-fA-F]{6}$"
80
+ }
81
+ ]
82
+ },
83
+ "uvRect": {
84
+ "type": "object",
85
+ "additionalProperties": false,
86
+ "required": [
87
+ "u0",
88
+ "v0",
89
+ "u1",
90
+ "v1"
91
+ ],
92
+ "properties": {
93
+ "u0": {
94
+ "type": "number"
95
+ },
96
+ "v0": {
97
+ "type": "number"
98
+ },
99
+ "u1": {
100
+ "type": "number"
101
+ },
102
+ "v1": {
103
+ "type": "number"
104
+ }
105
+ }
106
+ },
107
+ "rotationOrder": {
108
+ "enum": [
109
+ "XYZ",
110
+ "YXZ",
111
+ "ZXY",
112
+ "ZYX",
113
+ "YZX",
114
+ "XZY"
115
+ ]
116
+ },
117
+ "transform": {
118
+ "type": "object",
119
+ "properties": {
120
+ "position": {
121
+ "$ref": "#/$defs/vec3"
122
+ },
123
+ "rotation": {
124
+ "$ref": "#/$defs/vec3"
125
+ },
126
+ "rotationOrder": {
127
+ "$ref": "#/$defs/rotationOrder"
128
+ },
129
+ "scale": {
130
+ "oneOf": [
131
+ {
132
+ "type": "number"
133
+ },
134
+ {
135
+ "$ref": "#/$defs/vec3"
136
+ }
137
+ ]
138
+ },
139
+ "heading": {
140
+ "type": "number"
141
+ },
142
+ "matrix": {
143
+ "$ref": "#/$defs/mat4"
144
+ }
145
+ }
146
+ },
147
+ "instance": {
148
+ "allOf": [
149
+ {
150
+ "$ref": "#/$defs/transform"
151
+ }
152
+ ],
153
+ "properties": {
154
+ "position": true,
155
+ "rotation": true,
156
+ "rotationOrder": true,
157
+ "scale": true,
158
+ "heading": true,
159
+ "matrix": true,
160
+ "color": {
161
+ "$ref": "#/$defs/color"
162
+ }
163
+ },
164
+ "unevaluatedProperties": false
165
+ },
166
+ "material": {
167
+ "type": "object",
168
+ "additionalProperties": false,
169
+ "properties": {
170
+ "color": {
171
+ "$ref": "#/$defs/color"
172
+ },
173
+ "roughness": {
174
+ "type": "number",
175
+ "minimum": 0,
176
+ "maximum": 1
177
+ },
178
+ "metalness": {
179
+ "type": "number",
180
+ "minimum": 0,
181
+ "maximum": 1
182
+ },
183
+ "opacity": {
184
+ "type": "number",
185
+ "minimum": 0,
186
+ "maximum": 1
187
+ },
188
+ "transparent": {
189
+ "type": "boolean"
190
+ },
191
+ "emissive": {
192
+ "$ref": "#/$defs/color"
193
+ },
194
+ "emissiveIntensity": {
195
+ "type": "number",
196
+ "minimum": 0
197
+ },
198
+ "side": {
199
+ "enum": [
200
+ "front",
201
+ "back",
202
+ "double"
203
+ ]
204
+ },
205
+ "flatShading": {
206
+ "type": "boolean"
207
+ },
208
+ "vertexColors": {
209
+ "type": "boolean"
210
+ },
211
+ "depthWrite": {
212
+ "type": "boolean"
213
+ }
214
+ }
215
+ },
216
+ "lodLevel": {
217
+ "type": "object",
218
+ "additionalProperties": false,
219
+ "required": [
220
+ "distance",
221
+ "detail"
222
+ ],
223
+ "properties": {
224
+ "distance": {
225
+ "type": "number",
226
+ "minimum": 0
227
+ },
228
+ "detail": {
229
+ "type": "number",
230
+ "exclusiveMinimum": 0,
231
+ "maximum": 1
232
+ },
233
+ "minSize": {
234
+ "type": "number",
235
+ "minimum": 0
236
+ },
237
+ "minSegments": {
238
+ "type": "integer",
239
+ "minimum": 3
240
+ }
241
+ }
242
+ },
243
+ "common": {
244
+ "allOf": [
245
+ {
246
+ "$ref": "#/$defs/transform"
247
+ }
248
+ ],
249
+ "properties": {
250
+ "kind": {
251
+ "type": "string"
252
+ },
253
+ "name": {
254
+ "type": "string"
255
+ },
256
+ "part": {
257
+ "type": "string"
258
+ },
259
+ "material": {
260
+ "type": "string"
261
+ },
262
+ "color": {
263
+ "$ref": "#/$defs/color"
264
+ },
265
+ "uv": {
266
+ "$ref": "#/$defs/uvRect"
267
+ },
268
+ "instances": {
269
+ "type": "array",
270
+ "items": {
271
+ "$ref": "#/$defs/instance"
272
+ }
273
+ },
274
+ "minDetail": {
275
+ "type": "number",
276
+ "exclusiveMinimum": 0,
277
+ "maximum": 1
278
+ },
279
+ "tags": {
280
+ "type": "array",
281
+ "items": {
282
+ "type": "string"
283
+ }
284
+ }
285
+ }
286
+ },
287
+ "node": {
288
+ "type": "object",
289
+ "required": [
290
+ "kind"
291
+ ],
292
+ "allOf": [
293
+ {
294
+ "$ref": "#/$defs/common"
295
+ }
296
+ ],
297
+ "oneOf": [
298
+ {
299
+ "properties": {
300
+ "kind": {
301
+ "const": "group"
302
+ },
303
+ "children": {
304
+ "type": "array",
305
+ "items": {
306
+ "$ref": "#/$defs/node"
307
+ }
308
+ }
309
+ }
310
+ },
311
+ {
312
+ "properties": {
313
+ "kind": {
314
+ "const": "box"
315
+ },
316
+ "size": {
317
+ "$ref": "#/$defs/vec3"
318
+ },
319
+ "segments": {
320
+ "type": "array",
321
+ "items": {
322
+ "type": "integer",
323
+ "minimum": 1
324
+ },
325
+ "minItems": 3,
326
+ "maxItems": 3
327
+ }
328
+ }
329
+ },
330
+ {
331
+ "properties": {
332
+ "kind": {
333
+ "const": "cylinder"
334
+ },
335
+ "radiusTop": {
336
+ "type": "number"
337
+ },
338
+ "radiusBottom": {
339
+ "type": "number"
340
+ },
341
+ "height": {
342
+ "type": "number"
343
+ },
344
+ "radialSegments": {
345
+ "type": "integer",
346
+ "minimum": 1
347
+ },
348
+ "heightSegments": {
349
+ "type": "integer",
350
+ "minimum": 1
351
+ },
352
+ "openEnded": {
353
+ "type": "boolean"
354
+ },
355
+ "thetaStart": {
356
+ "type": "number"
357
+ },
358
+ "thetaLength": {
359
+ "type": "number"
360
+ }
361
+ }
362
+ },
363
+ {
364
+ "properties": {
365
+ "kind": {
366
+ "const": "cone"
367
+ },
368
+ "radius": {
369
+ "type": "number"
370
+ },
371
+ "height": {
372
+ "type": "number"
373
+ },
374
+ "radialSegments": {
375
+ "type": "integer",
376
+ "minimum": 1
377
+ },
378
+ "heightSegments": {
379
+ "type": "integer",
380
+ "minimum": 1
381
+ },
382
+ "openEnded": {
383
+ "type": "boolean"
384
+ },
385
+ "thetaStart": {
386
+ "type": "number"
387
+ },
388
+ "thetaLength": {
389
+ "type": "number"
390
+ }
391
+ }
392
+ },
393
+ {
394
+ "properties": {
395
+ "kind": {
396
+ "const": "sphere"
397
+ },
398
+ "radius": {
399
+ "type": "number"
400
+ },
401
+ "widthSegments": {
402
+ "type": "integer",
403
+ "minimum": 3
404
+ },
405
+ "heightSegments": {
406
+ "type": "integer",
407
+ "minimum": 2
408
+ },
409
+ "phiStart": {
410
+ "type": "number"
411
+ },
412
+ "phiLength": {
413
+ "type": "number"
414
+ },
415
+ "thetaStart": {
416
+ "type": "number"
417
+ },
418
+ "thetaLength": {
419
+ "type": "number"
420
+ }
421
+ }
422
+ },
423
+ {
424
+ "properties": {
425
+ "kind": {
426
+ "const": "plane"
427
+ },
428
+ "width": {
429
+ "type": "number"
430
+ },
431
+ "height": {
432
+ "type": "number"
433
+ },
434
+ "widthSegments": {
435
+ "type": "integer",
436
+ "minimum": 1
437
+ },
438
+ "heightSegments": {
439
+ "type": "integer",
440
+ "minimum": 1
441
+ }
442
+ }
443
+ },
444
+ {
445
+ "properties": {
446
+ "kind": {
447
+ "const": "circle"
448
+ },
449
+ "radius": {
450
+ "type": "number"
451
+ },
452
+ "segments": {
453
+ "type": "integer",
454
+ "minimum": 3
455
+ },
456
+ "thetaStart": {
457
+ "type": "number"
458
+ },
459
+ "thetaLength": {
460
+ "type": "number"
461
+ }
462
+ }
463
+ },
464
+ {
465
+ "properties": {
466
+ "kind": {
467
+ "const": "ring"
468
+ },
469
+ "innerRadius": {
470
+ "type": "number"
471
+ },
472
+ "outerRadius": {
473
+ "type": "number"
474
+ },
475
+ "thetaSegments": {
476
+ "type": "integer",
477
+ "minimum": 3
478
+ },
479
+ "phiSegments": {
480
+ "type": "integer",
481
+ "minimum": 1
482
+ },
483
+ "thetaStart": {
484
+ "type": "number"
485
+ },
486
+ "thetaLength": {
487
+ "type": "number"
488
+ }
489
+ }
490
+ },
491
+ {
492
+ "required": [
493
+ "points"
494
+ ],
495
+ "properties": {
496
+ "kind": {
497
+ "const": "lathe"
498
+ },
499
+ "points": {
500
+ "type": "array",
501
+ "items": {
502
+ "$ref": "#/$defs/vec2"
503
+ },
504
+ "minItems": 2
505
+ },
506
+ "segments": {
507
+ "type": "integer",
508
+ "minimum": 1
509
+ },
510
+ "phiStart": {
511
+ "type": "number"
512
+ },
513
+ "phiLength": {
514
+ "type": "number"
515
+ }
516
+ }
517
+ },
518
+ {
519
+ "properties": {
520
+ "kind": {
521
+ "const": "torus"
522
+ },
523
+ "radius": {
524
+ "type": "number"
525
+ },
526
+ "tube": {
527
+ "type": "number"
528
+ },
529
+ "radialSegments": {
530
+ "type": "integer",
531
+ "minimum": 1
532
+ },
533
+ "tubularSegments": {
534
+ "type": "integer",
535
+ "minimum": 1
536
+ },
537
+ "arc": {
538
+ "type": "number"
539
+ }
540
+ }
541
+ },
542
+ {
543
+ "required": [
544
+ "shape"
545
+ ],
546
+ "properties": {
547
+ "kind": {
548
+ "const": "extrude"
549
+ },
550
+ "shape": {
551
+ "type": "object",
552
+ "required": [
553
+ "outer"
554
+ ],
555
+ "additionalProperties": false,
556
+ "properties": {
557
+ "outer": {
558
+ "type": "array",
559
+ "items": {
560
+ "$ref": "#/$defs/vec2"
561
+ },
562
+ "minItems": 3
563
+ },
564
+ "holes": {
565
+ "type": "array",
566
+ "items": {
567
+ "type": "array",
568
+ "items": {
569
+ "$ref": "#/$defs/vec2"
570
+ },
571
+ "minItems": 3
572
+ }
573
+ }
574
+ }
575
+ },
576
+ "depth": {
577
+ "type": "number"
578
+ },
579
+ "steps": {
580
+ "type": "integer",
581
+ "minimum": 1
582
+ },
583
+ "bevel": {
584
+ "oneOf": [
585
+ {
586
+ "const": false
587
+ },
588
+ {
589
+ "type": "object",
590
+ "additionalProperties": false,
591
+ "properties": {
592
+ "thickness": {
593
+ "type": "number"
594
+ },
595
+ "size": {
596
+ "type": "number"
597
+ },
598
+ "offset": {
599
+ "type": "number"
600
+ },
601
+ "segments": {
602
+ "type": "integer",
603
+ "minimum": 1
604
+ }
605
+ }
606
+ }
607
+ ]
608
+ }
609
+ }
610
+ },
611
+ {
612
+ "required": [
613
+ "size",
614
+ "subtract"
615
+ ],
616
+ "properties": {
617
+ "kind": {
618
+ "const": "difference"
619
+ },
620
+ "size": {
621
+ "$ref": "#/$defs/vec3"
622
+ },
623
+ "subtract": {
624
+ "type": "array",
625
+ "items": {
626
+ "type": "object",
627
+ "required": [
628
+ "min",
629
+ "max"
630
+ ],
631
+ "additionalProperties": false,
632
+ "properties": {
633
+ "min": {
634
+ "$ref": "#/$defs/vec2"
635
+ },
636
+ "max": {
637
+ "$ref": "#/$defs/vec2"
638
+ }
639
+ }
640
+ }
641
+ }
642
+ }
643
+ },
644
+ {
645
+ "required": [
646
+ "positions"
647
+ ],
648
+ "properties": {
649
+ "kind": {
650
+ "const": "mesh"
651
+ },
652
+ "positions": {
653
+ "type": "array",
654
+ "items": {
655
+ "type": "number"
656
+ }
657
+ },
658
+ "normals": {
659
+ "type": "array",
660
+ "items": {
661
+ "type": "number"
662
+ }
663
+ },
664
+ "uvs": {
665
+ "type": "array",
666
+ "items": {
667
+ "type": "number"
668
+ }
669
+ },
670
+ "indices": {
671
+ "type": "array",
672
+ "items": {
673
+ "$ref": "#/$defs/count"
674
+ }
675
+ }
676
+ }
677
+ },
678
+ {
679
+ "properties": {
680
+ "kind": {
681
+ "const": "point"
682
+ },
683
+ "data": {}
684
+ }
685
+ },
686
+ {
687
+ "required": [
688
+ "generator"
689
+ ],
690
+ "properties": {
691
+ "kind": {
692
+ "const": "custom"
693
+ },
694
+ "generator": {
695
+ "type": "string"
696
+ },
697
+ "params": {}
698
+ }
699
+ }
700
+ ]
701
+ }
702
+ }
703
+ }