@almadar/core 10.47.0 → 10.49.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.
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  // src/patterns/patterns-registry.json
4
4
  var patterns_registry_default = {
5
5
  version: "1.0.0",
6
- exportedAt: "2026-07-31T07:15:07.239Z",
6
+ exportedAt: "2026-08-01T09:06:41.875Z",
7
7
  patterns: {
8
8
  "entity-table": {
9
9
  type: "entity-table",
@@ -41197,6 +41197,18 @@ var patterns_registry_default = {
41197
41197
  }
41198
41198
  }
41199
41199
  },
41200
+ lighting: {
41201
+ types: [
41202
+ "object"
41203
+ ],
41204
+ description: "3D scene light rig as data \u2014 ambient/directional/hemisphere/point lights + optional 'room' environment for PBR reflections. Omitted \u2192 the standard fixed rig."
41205
+ },
41206
+ post: {
41207
+ types: [
41208
+ "object"
41209
+ ],
41210
+ description: "3D post-processing stack \u2014 bloom (emissive glow / neon) and vignette. Omitted \u2192 no post pass."
41211
+ },
41200
41212
  tileClickEvent: {
41201
41213
  types: [
41202
41214
  "string"
@@ -41801,6 +41813,126 @@ var patterns_registry_default = {
41801
41813
  ],
41802
41814
  description: "Rotation in radians (painter units)."
41803
41815
  },
41816
+ rotation: {
41817
+ types: [
41818
+ "array"
41819
+ ],
41820
+ description: "Euler rotation `[x, y, z]` in radians (world axes) \u2014 per-axis joint rotation for the 3D backend; a group placed at a joint with children authored joint-local IS a bone. The 2D painter applies only the in-plane `z` component, after `rotate`.",
41821
+ items: {
41822
+ types: [
41823
+ "number"
41824
+ ]
41825
+ }
41826
+ },
41827
+ bone: {
41828
+ types: [
41829
+ "string"
41830
+ ],
41831
+ description: "Skeleton bone name. A named group is addressable by a `draw-mesh` `skin` block (smooth skinning): the skinned mesh deforms with this group's animated transform. Names resolve within the nearest enclosing `skeleton: true` group (falling back to the canvas), so multiple instances of one rig never collide. Distinct from `id` (the hit-test handle)."
41832
+ },
41833
+ skeleton: {
41834
+ types: [
41835
+ "boolean"
41836
+ ],
41837
+ description: "Marks this group as a skeleton SCOPE: `bone` names and `skin` bindings in its subtree resolve against each other only \u2014 one scope per rig instance."
41838
+ },
41839
+ animation: {
41840
+ types: [
41841
+ "object"
41842
+ ],
41843
+ description: "Keyframe animation over the group TRANSFORM tracks (`offsetX/Y/Z` in cells, `rotateX/Y/Z` in radians, `scale`; the 2D painter also honors `opacity`) \u2014 children inherit it, so nested animated groups form a joint chain. Material tracks belong on leaf meshes.",
41844
+ properties: {
41845
+ durationMs: {
41846
+ types: [
41847
+ "number"
41848
+ ]
41849
+ },
41850
+ loop: {
41851
+ types: [
41852
+ "boolean"
41853
+ ]
41854
+ },
41855
+ keyframes: {
41856
+ types: [
41857
+ "array"
41858
+ ],
41859
+ items: {
41860
+ types: [
41861
+ "object"
41862
+ ],
41863
+ properties: {
41864
+ at: {
41865
+ types: [
41866
+ "number"
41867
+ ]
41868
+ },
41869
+ offsetX: {
41870
+ types: [
41871
+ "number"
41872
+ ]
41873
+ },
41874
+ offsetY: {
41875
+ types: [
41876
+ "number"
41877
+ ]
41878
+ },
41879
+ offsetZ: {
41880
+ types: [
41881
+ "number"
41882
+ ]
41883
+ },
41884
+ rotateX: {
41885
+ types: [
41886
+ "number"
41887
+ ]
41888
+ },
41889
+ rotateY: {
41890
+ types: [
41891
+ "number"
41892
+ ]
41893
+ },
41894
+ rotateZ: {
41895
+ types: [
41896
+ "number"
41897
+ ]
41898
+ },
41899
+ scale: {
41900
+ types: [
41901
+ "number"
41902
+ ]
41903
+ },
41904
+ opacity: {
41905
+ types: [
41906
+ "number"
41907
+ ]
41908
+ },
41909
+ emissiveIntensity: {
41910
+ types: [
41911
+ "number"
41912
+ ]
41913
+ },
41914
+ color: {
41915
+ types: [
41916
+ "string"
41917
+ ]
41918
+ },
41919
+ emissive: {
41920
+ types: [
41921
+ "string"
41922
+ ]
41923
+ }
41924
+ },
41925
+ required: [
41926
+ "at"
41927
+ ]
41928
+ }
41929
+ }
41930
+ },
41931
+ propertyRequired: [
41932
+ "durationMs",
41933
+ "keyframes"
41934
+ ]
41935
+ },
41804
41936
  opacity: {
41805
41937
  types: [
41806
41938
  "number"
@@ -41883,6 +42015,459 @@ var patterns_registry_default = {
41883
42015
  description: "Additional CSS classes applied to the trigger button"
41884
42016
  }
41885
42017
  }
42018
+ },
42019
+ "draw-mesh": {
42020
+ type: "draw-mesh",
42021
+ category: "game",
42022
+ tier: "atoms",
42023
+ family: "game",
42024
+ description: "DrawMesh component",
42025
+ suggestedFor: [
42026
+ "draw",
42027
+ "mesh",
42028
+ "draw mesh"
42029
+ ],
42030
+ typicalSize: "small",
42031
+ propsSchema: {
42032
+ id: {
42033
+ types: [
42034
+ "string"
42035
+ ],
42036
+ description: "Optional source-tagged hit-test handle \u2014 the host indexes the drawable's ScenePos\u2192id so a pointer/raycast at that cell resolves to this id (unit/entity click). No id \u2192 the host emits only the coordinate (tile click)."
42037
+ },
42038
+ type: {
42039
+ types: [
42040
+ "unknown"
42041
+ ],
42042
+ description: "type prop",
42043
+ required: true
42044
+ },
42045
+ shape: {
42046
+ types: [
42047
+ "string"
42048
+ ],
42049
+ description: "shape prop",
42050
+ required: true,
42051
+ enumValues: [
42052
+ "box",
42053
+ "sphere",
42054
+ "capsule",
42055
+ "cylinder",
42056
+ "cone",
42057
+ "torus",
42058
+ "plane",
42059
+ "circle",
42060
+ "polyhedron"
42061
+ ]
42062
+ },
42063
+ position: {
42064
+ types: [
42065
+ "object"
42066
+ ],
42067
+ description: "Logical scene position; `z` is height in cells (projected to world Y).",
42068
+ required: true,
42069
+ properties: {
42070
+ x: {
42071
+ types: [
42072
+ "number"
42073
+ ]
42074
+ },
42075
+ y: {
42076
+ types: [
42077
+ "number"
42078
+ ]
42079
+ },
42080
+ z: {
42081
+ types: [
42082
+ "number"
42083
+ ]
42084
+ }
42085
+ },
42086
+ propertyRequired: [
42087
+ "x",
42088
+ "y"
42089
+ ],
42090
+ scenePos: true
42091
+ },
42092
+ width: {
42093
+ types: [
42094
+ "number"
42095
+ ],
42096
+ description: "Box/plane X extent in cells (default 1)."
42097
+ },
42098
+ height: {
42099
+ types: [
42100
+ "number"
42101
+ ],
42102
+ description: "Box Y (height) extent / capsule-cylinder-cone length in cells (default 1)."
42103
+ },
42104
+ depth: {
42105
+ types: [
42106
+ "number"
42107
+ ],
42108
+ description: "Box/plane Z extent in cells (default `width`)."
42109
+ },
42110
+ radius: {
42111
+ types: [
42112
+ "number"
42113
+ ],
42114
+ description: "Sphere/capsule/cone/torus/circle radius in cells (default 0.4)."
42115
+ },
42116
+ radiusTop: {
42117
+ types: [
42118
+ "number"
42119
+ ],
42120
+ description: "Cylinder top radius (default `radius`)."
42121
+ },
42122
+ radiusBottom: {
42123
+ types: [
42124
+ "number"
42125
+ ],
42126
+ description: "Cylinder bottom radius (default `radius`)."
42127
+ },
42128
+ tube: {
42129
+ types: [
42130
+ "number"
42131
+ ],
42132
+ description: "Torus tube radius in cells (default `radius` / 3)."
42133
+ },
42134
+ segments: {
42135
+ types: [
42136
+ "number"
42137
+ ],
42138
+ description: "Curved-surface tessellation, clamped 3..64 (default 24). 4\u20138 + `flatShading` = low-poly."
42139
+ },
42140
+ vertices: {
42141
+ types: [
42142
+ "array"
42143
+ ],
42144
+ description: "`polyhedron` only: raw vertices as scene-frame `[x, y, z]` triples in cells, `z` = up.",
42145
+ items: {
42146
+ types: [
42147
+ "array"
42148
+ ],
42149
+ items: {
42150
+ types: [
42151
+ "number"
42152
+ ]
42153
+ }
42154
+ }
42155
+ },
42156
+ faces: {
42157
+ types: [
42158
+ "array"
42159
+ ],
42160
+ description: "`polyhedron` only: triangle index triples into `vertices`, wound counter-clockwise seen from OUTSIDE in the scene frame.",
42161
+ items: {
42162
+ types: [
42163
+ "array"
42164
+ ],
42165
+ items: {
42166
+ types: [
42167
+ "number"
42168
+ ]
42169
+ }
42170
+ }
42171
+ },
42172
+ skin: {
42173
+ types: [
42174
+ "object"
42175
+ ],
42176
+ description: "`polyhedron` only: smooth-skinning weights binding the vertices to named bone groups. Vertices must then be authored in BIND POSE model space; the bones' animated transforms deform them.",
42177
+ properties: {
42178
+ bones: {
42179
+ types: [
42180
+ "array"
42181
+ ],
42182
+ items: {
42183
+ types: [
42184
+ "string"
42185
+ ]
42186
+ }
42187
+ },
42188
+ inverseBindMatrices: {
42189
+ types: [
42190
+ "array"
42191
+ ],
42192
+ items: {
42193
+ types: [
42194
+ "array"
42195
+ ],
42196
+ items: {
42197
+ types: [
42198
+ "number"
42199
+ ]
42200
+ }
42201
+ }
42202
+ },
42203
+ indices: {
42204
+ types: [
42205
+ "array"
42206
+ ],
42207
+ items: {
42208
+ types: [
42209
+ "array"
42210
+ ],
42211
+ items: {
42212
+ types: [
42213
+ "number"
42214
+ ]
42215
+ }
42216
+ }
42217
+ },
42218
+ weights: {
42219
+ types: [
42220
+ "array"
42221
+ ],
42222
+ items: {
42223
+ types: [
42224
+ "array"
42225
+ ],
42226
+ items: {
42227
+ types: [
42228
+ "number"
42229
+ ]
42230
+ }
42231
+ }
42232
+ }
42233
+ },
42234
+ propertyRequired: [
42235
+ "bones",
42236
+ "inverseBindMatrices",
42237
+ "indices",
42238
+ "weights"
42239
+ ]
42240
+ },
42241
+ rotation: {
42242
+ types: [
42243
+ "array"
42244
+ ],
42245
+ description: "Euler rotation `[x, y, z]` in radians.",
42246
+ items: {
42247
+ types: [
42248
+ "number"
42249
+ ]
42250
+ }
42251
+ },
42252
+ pivot: {
42253
+ types: [
42254
+ "string"
42255
+ ],
42256
+ description: "`bottom` (default) rests the mesh on its position's ground plane; `center` centers it there. For `polyhedron`, `bottom` lifts by \u2212min(z) and `center` applies no offset \u2014 the vertices are authoritative.",
42257
+ enumValues: [
42258
+ "bottom",
42259
+ "center"
42260
+ ]
42261
+ },
42262
+ material: {
42263
+ types: [
42264
+ "object"
42265
+ ],
42266
+ description: "material prop",
42267
+ properties: {
42268
+ kind: {
42269
+ types: [
42270
+ "string"
42271
+ ],
42272
+ enumValues: [
42273
+ "standard",
42274
+ "physical",
42275
+ "toon",
42276
+ "basic"
42277
+ ]
42278
+ },
42279
+ color: {
42280
+ types: [
42281
+ "string"
42282
+ ]
42283
+ },
42284
+ metalness: {
42285
+ types: [
42286
+ "number"
42287
+ ]
42288
+ },
42289
+ roughness: {
42290
+ types: [
42291
+ "number"
42292
+ ]
42293
+ },
42294
+ emissive: {
42295
+ types: [
42296
+ "string"
42297
+ ]
42298
+ },
42299
+ emissiveIntensity: {
42300
+ types: [
42301
+ "number"
42302
+ ]
42303
+ },
42304
+ opacity: {
42305
+ types: [
42306
+ "number"
42307
+ ]
42308
+ },
42309
+ transmission: {
42310
+ types: [
42311
+ "number"
42312
+ ]
42313
+ },
42314
+ ior: {
42315
+ types: [
42316
+ "number"
42317
+ ]
42318
+ },
42319
+ flatShading: {
42320
+ types: [
42321
+ "boolean"
42322
+ ]
42323
+ },
42324
+ side: {
42325
+ types: [
42326
+ "string"
42327
+ ],
42328
+ enumValues: [
42329
+ "front",
42330
+ "back",
42331
+ "double"
42332
+ ]
42333
+ }
42334
+ }
42335
+ },
42336
+ outline: {
42337
+ types: [
42338
+ "object"
42339
+ ],
42340
+ description: "outline prop",
42341
+ properties: {
42342
+ color: {
42343
+ types: [
42344
+ "string"
42345
+ ]
42346
+ },
42347
+ width: {
42348
+ types: [
42349
+ "number"
42350
+ ]
42351
+ }
42352
+ }
42353
+ },
42354
+ castShadow: {
42355
+ types: [
42356
+ "boolean"
42357
+ ],
42358
+ description: "castShadow prop"
42359
+ },
42360
+ receiveShadow: {
42361
+ types: [
42362
+ "boolean"
42363
+ ],
42364
+ description: "receiveShadow prop"
42365
+ },
42366
+ animation: {
42367
+ types: [
42368
+ "object"
42369
+ ],
42370
+ description: "Keyframe animation over transform/material tracks; the 3D host runs it per frame.",
42371
+ properties: {
42372
+ durationMs: {
42373
+ types: [
42374
+ "number"
42375
+ ]
42376
+ },
42377
+ loop: {
42378
+ types: [
42379
+ "boolean"
42380
+ ]
42381
+ },
42382
+ keyframes: {
42383
+ types: [
42384
+ "array"
42385
+ ],
42386
+ items: {
42387
+ types: [
42388
+ "object"
42389
+ ],
42390
+ properties: {
42391
+ at: {
42392
+ types: [
42393
+ "number"
42394
+ ]
42395
+ },
42396
+ offsetX: {
42397
+ types: [
42398
+ "number"
42399
+ ]
42400
+ },
42401
+ offsetY: {
42402
+ types: [
42403
+ "number"
42404
+ ]
42405
+ },
42406
+ offsetZ: {
42407
+ types: [
42408
+ "number"
42409
+ ]
42410
+ },
42411
+ rotateX: {
42412
+ types: [
42413
+ "number"
42414
+ ]
42415
+ },
42416
+ rotateY: {
42417
+ types: [
42418
+ "number"
42419
+ ]
42420
+ },
42421
+ rotateZ: {
42422
+ types: [
42423
+ "number"
42424
+ ]
42425
+ },
42426
+ scale: {
42427
+ types: [
42428
+ "number"
42429
+ ]
42430
+ },
42431
+ opacity: {
42432
+ types: [
42433
+ "number"
42434
+ ]
42435
+ },
42436
+ emissiveIntensity: {
42437
+ types: [
42438
+ "number"
42439
+ ]
42440
+ },
42441
+ color: {
42442
+ types: [
42443
+ "string"
42444
+ ]
42445
+ },
42446
+ emissive: {
42447
+ types: [
42448
+ "string"
42449
+ ]
42450
+ }
42451
+ },
42452
+ required: [
42453
+ "at"
42454
+ ]
42455
+ }
42456
+ }
42457
+ },
42458
+ propertyRequired: [
42459
+ "durationMs",
42460
+ "keyframes"
42461
+ ]
42462
+ },
42463
+ opacity: {
42464
+ types: [
42465
+ "number"
42466
+ ],
42467
+ description: "0..1 opacity; multiplies the material and enclosing group opacity."
42468
+ }
42469
+ },
42470
+ drawable: true
41886
42471
  }
41887
42472
  },
41888
42473
  categories: [
@@ -42804,7 +43389,7 @@ var integrators_registry_default = {
42804
43389
  // src/patterns/component-mapping.json
42805
43390
  var component_mapping_default = {
42806
43391
  version: "1.0.0",
42807
- exportedAt: "2026-07-31T07:15:07.239Z",
43392
+ exportedAt: "2026-08-01T09:06:41.875Z",
42808
43393
  mappings: {
42809
43394
  "page-header": {
42810
43395
  component: "PageHeader",
@@ -44187,6 +44772,11 @@ var component_mapping_default = {
44187
44772
  component: "EmojiPicker",
44188
44773
  importPath: "@/components/core/molecules/EmojiPicker",
44189
44774
  category: "component"
44775
+ },
44776
+ "draw-mesh": {
44777
+ component: "DrawMesh",
44778
+ importPath: "@/components/game/atoms/DrawMesh",
44779
+ category: "game"
44190
44780
  }
44191
44781
  }
44192
44782
  };
@@ -44194,7 +44784,7 @@ var component_mapping_default = {
44194
44784
  // src/patterns/event-contracts.json
44195
44785
  var event_contracts_default = {
44196
44786
  version: "1.0.0",
44197
- exportedAt: "2026-07-31T07:15:07.239Z",
44787
+ exportedAt: "2026-08-01T09:06:41.875Z",
44198
44788
  contracts: {
44199
44789
  form: {
44200
44790
  emits: [
@@ -45425,6 +46015,7 @@ var PATTERN_TYPES = [
45425
46015
  "doc-toc",
45426
46016
  "document-viewer",
45427
46017
  "draw-group",
46018
+ "draw-mesh",
45428
46019
  "draw-shape",
45429
46020
  "draw-shape-layer",
45430
46021
  "draw-sprite",