@origingame/engine 0.1.0 → 0.2.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 (62) hide show
  1. package/dist/web/origin-engine.js +4 -4
  2. package/dist/web/origin-engine_bg.wasm +0 -0
  3. package/dist/web-publish/origin-engine-lanes.js +6 -6
  4. package/dist/web-publish/origin-engine-lanes_bg.wasm +0 -0
  5. package/dist/web-publish/origin-engine.js +4 -4
  6. package/dist/web-publish/origin-engine_bg.wasm +0 -0
  7. package/dist/web-publish-2d/origin-engine-lanes.js +6 -6
  8. package/dist/web-publish-2d/origin-engine-lanes_bg.wasm +0 -0
  9. package/dist/web-publish-2d/origin-engine.js +4 -4
  10. package/dist/web-publish-2d/origin-engine_bg.wasm +0 -0
  11. package/knowledge/package.json +4 -4
  12. package/knowledge/scaffold/origin-engine.json +2 -2
  13. package/knowledge/scaffold/template/gitignore +8 -0
  14. package/knowledge/scaffold/template/package.json +1 -1
  15. package/knowledge/scaffold/template/project.ogt +1 -1
  16. package/knowledge/scripts/lib.ts +5 -1
  17. package/knowledge/scripts/pack.ts +2 -1
  18. package/knowledge/scripts/validate.ts +2 -1
  19. package/knowledge/skills/og-build/SKILL.md +17 -1
  20. package/knowledge/skills/og-feel/SKILL.md +8 -1
  21. package/knowledge/skills/og-game/SKILL.md +117 -13
  22. package/knowledge/skills/og-i18n/SKILL.md +12 -3
  23. package/knowledge/skills/og-platform-sdk/SKILL.md +3 -1
  24. package/knowledge/skills/og-ui/SKILL.md +19 -6
  25. package/knowledge/wiki/ai.md +20 -20
  26. package/knowledge/wiki/anim.md +41 -41
  27. package/knowledge/wiki/atmosphere.md +13 -13
  28. package/knowledge/wiki/audio.md +18 -18
  29. package/knowledge/wiki/camera.md +13 -13
  30. package/knowledge/wiki/commands.md +11 -11
  31. package/knowledge/wiki/game.md +8 -8
  32. package/knowledge/wiki/i18n.md +7 -7
  33. package/knowledge/wiki/index.md +4 -1
  34. package/knowledge/wiki/input.md +47 -47
  35. package/knowledge/wiki/load.md +45 -45
  36. package/knowledge/wiki/math.md +7 -7
  37. package/knowledge/wiki/nav.md +34 -34
  38. package/knowledge/wiki/physics.md +124 -106
  39. package/knowledge/wiki/platform.md +31 -31
  40. package/knowledge/wiki/probe.md +66 -66
  41. package/knowledge/wiki/reflect.md +15 -15
  42. package/knowledge/wiki/render.md +99 -89
  43. package/knowledge/wiki/rng.md +14 -14
  44. package/knowledge/wiki/stream.md +15 -15
  45. package/knowledge/wiki/system.md +8 -8
  46. package/knowledge/wiki/systems.md +2 -2
  47. package/knowledge/wiki/terrain.md +19 -19
  48. package/knowledge/wiki/tilemap.md +19 -15
  49. package/knowledge/wiki/time.md +4 -4
  50. package/knowledge/wiki/transform.md +8 -8
  51. package/knowledge/wiki/tween.md +17 -17
  52. package/knowledge/wiki/ui.md +289 -245
  53. package/knowledge/wiki/world.md +67 -37
  54. package/package.json +6 -6
  55. package/schema/api.schema.json +134 -9
  56. package/src/index.ts +1 -0
  57. package/src/node/polish.ts +2 -1
  58. package/src/node/run.ts +5 -1
  59. package/src/runtime.ts +2 -0
  60. package/src/ui-kit/huds.ts +18 -14
  61. package/types/bindings.json +61 -26
  62. package/types/index.d.ts +144 -13
@@ -57,10 +57,10 @@ and every style pack's screens on a phone `kit-skin-<pack>-phone.png`.
57
57
  | A title screen | `og.ui.mainMenu(id, { title, subtitle, items, footer, instant })` (`instant` while it is the screen the game opens on: §6) | `selected`: the item id |
58
58
  | Pause | `og.ui.pauseMenu(id, { open, items })` (Resume, Settings, Quit by default) | `selected`; Back answers `resume` |
59
59
  | Settings | `og.ui.settingsScreen(id, { open, settings, languages, onChange, onSave })` | the new `GameSettings`, `changed`, `closed` |
60
- | A platformer HUD | `og.ui.platformerHud(id, { lives, maxLives, coins, score, level, timeLeft, touch })` (what it is not given it does not draw: `maxLives: 0` no hearts, no `coins` or `score` no capsule for them) | `paused`, `moveX`, `action: "jump"` |
61
- | A shooter HUD | `og.ui.shooterHud(id, { health, armor, ammo, reserve, abilities, map, touch })` | `paused`, `action` (ability id, `fire`), stick |
62
- | A puzzle HUD | `og.ui.puzzleHud(id, { level, score, target, stars, moves, timeLeft })` | `paused` |
63
- | An idle or incremental HUD | `og.ui.idleHud(id, { currencies, generators, tapLabel })` | `action: "tap"` or `"buy:<id>"` |
60
+ | A platformer HUD | `og.ui.platformerHud(id, { lives, maxLives, coins, score, level, timeLeft, touch })` (what it is not given it does not draw: `maxLives: 0` no hearts, no `coins` or `score` no capsule for them; the words `pauseLabel`, `jumpLabel` from the string table, og-i18n §2) | `paused`, `moveX`, `action: "jump"` |
61
+ | A shooter HUD | `og.ui.shooterHud(id, { health, armor, ammo, reserve, abilities, map, touch })` (the words `killsLabel`, `fireLabel`, `pauseLabel`) | `paused`, `action` (ability id, `fire`), stick |
62
+ | A puzzle HUD | `og.ui.puzzleHud(id, { level, score, target, stars, moves, timeLeft })` (the words `movesLabel`, `targetLabel` with `{target}`, `pauseLabel`) | `paused` |
63
+ | An idle or incremental HUD | `og.ui.idleHud(id, { currencies, generators })` (the words `tapLabel`, `levelLabel` with `{level}`, `rateLabel` with `{rate}`, `pauseLabel`) | `action: "tap"` or `"buy:<id>"` |
64
64
  | A racing HUD | `og.ui.racingHud(id, { speed, gear, lap, laps, position, racers, time, delta, best, splits, boost, map, touch })` (a time trial: `racers: 0` hides the place, `boostMeter: false` the meter, `delta` and `splits: [{ label, time, delta }]` show its sectors; the words `lapLabel`, `bestLabel`, `pauseLabel`, `boostLabel`, `brakeLabel`, `leftLabel`, `rightLabel`, `unit` from the string table, og-i18n §2) | `paused`, steering, `held` |
65
65
  | Dialogue or a cutscene | `og.ui.cutscene(id, { open, lines, index })` | the next `index`, `finished`, `skipped` |
66
66
  | A shop | `og.ui.shopScreen(id, { balance, currency, items, categories })` | `bought`, `refused` (Buy pressed short of the price: it shook with the error sound), `closed` |
@@ -212,8 +212,13 @@ through). A gameplay HUD whose keys
212
212
  move the player calls `og.ui.setNavigation(false)` (the HUD templates do);
213
213
  dialogs turn navigation back on while open. What opens takes the focus:
214
214
  a dialog (every modal template: pause, settings, shop, results, confirm)
215
- its first control, a dialogue box or cutscene the box, so Enter, Space and
216
- A answer it at once without a Tab first. The UI reads pad 0 from
215
+ its first control, a dialogue box or cutscene the box, without a Tab first.
216
+ An entering panel is inert until its entrance finishes: Enter, Space, A
217
+ and pointer presses during that motion are ignored, not buffered. Its
218
+ controls answer once the panel arrives, even if their stagger continues.
219
+ Use `instant: true` on a `mainMenu` or `anchor` to skip its entrance when
220
+ immediate input is needed (for example under a screen wipe, §6).
221
+ The UI reads pad 0 from
217
222
  `og.Gamepad` itself (d-pad, A, B, the left stick); for a custom binding,
218
223
  queue intents with `og.ui.navigate(world, intent)`. A focus move plays the
219
224
  `hover` sound and Enter, Space or A the `press` sound, as the pointer does
@@ -356,6 +361,14 @@ Motion and juice, all by the tick and in the UI state:
356
361
  | A change of game screen | `const s = og.ui.screenTransition("Screens", state.screen, { kind: "iris" }).shown;` then build `s` (`fade`, `wipe`, `iris`, `dissolve`, `slide`; a colour or a texture) |
357
362
  | A wrong answer, a locked door, a refused purchase | `og.ui.shake({ sound: true })` right after the element, once, on the tick it happens: it swings three times and comes to rest by itself (the skin's `motion.shake`, else 6 px), with the `error` sound |
358
363
 
364
+ `screenTransition` keeps the previous screen in `shown` for the closing
365
+ half of its duration, switches at full cover, then reveals the new one.
366
+ Build `shown`, not the requested screen; `dump_ui` therefore lists the old
367
+ screen until the midpoint. The cover itself does not block input. A new
368
+ panel's own skin entrance starts when that panel is first built, and
369
+ ignores presses until it arrives (§4): the closing half of a wipe plus
370
+ that entrance explains why a press just after the switch can be lost.
371
+
359
372
  Skins add the rest themselves: dialog and panel entrances with staggered
360
373
  controls, hover lift and press squash on springs (the `hoverSpring 1 350` and `pressSpring 0.55 120` lines of a
361
374
  skin's `motion` block: damping ratio and response in ms; below 1 bounces), eased progress bars, toasts flying in,
@@ -18,7 +18,7 @@ module ai {
18
18
  # declarations follow, each quoted below
19
19
  ```
20
20
 
21
- <sub>`api.ogt` line 7262</sub>
21
+ <sub>`api.ogt` line 7294</sub>
22
22
 
23
23
  ## Contents
24
24
 
@@ -74,7 +74,7 @@ fn load {
74
74
  }
75
75
  ```
76
76
 
77
- <sub>`api.ogt` line 7434</sub>
77
+ <sub>`api.ogt` line 7466</sub>
78
78
 
79
79
  <a id="fn-parse"></a>
80
80
 
@@ -104,7 +104,7 @@ fn parse {
104
104
  }
105
105
  ```
106
106
 
107
- <sub>`api.ogt` line 7441</sub>
107
+ <sub>`api.ogt` line 7473</sub>
108
108
 
109
109
  <a id="fn-get"></a>
110
110
 
@@ -136,7 +136,7 @@ fn get {
136
136
  }
137
137
  ```
138
138
 
139
- <sub>`api.ogt` line 7448</sub>
139
+ <sub>`api.ogt` line 7480</sub>
140
140
 
141
141
  <a id="fn-set"></a>
142
142
 
@@ -170,7 +170,7 @@ fn set {
170
170
  }
171
171
  ```
172
172
 
173
- <sub>`api.ogt` line 7456</sub>
173
+ <sub>`api.ogt` line 7488</sub>
174
174
 
175
175
  <a id="fn-restart"></a>
176
176
 
@@ -200,7 +200,7 @@ fn restart {
200
200
  }
201
201
  ```
202
202
 
203
- <sub>`api.ogt` line 7465</sub>
203
+ <sub>`api.ogt` line 7497</sub>
204
204
 
205
205
  <a id="fn-noise"></a>
206
206
 
@@ -230,7 +230,7 @@ fn noise {
230
230
  }
231
231
  ```
232
232
 
233
- <sub>`api.ogt` line 7472</sub>
233
+ <sub>`api.ogt` line 7504</sub>
234
234
 
235
235
  <a id="fn-describe"></a>
236
236
 
@@ -260,7 +260,7 @@ fn describe {
260
260
  }
261
261
  ```
262
262
 
263
- <sub>`api.ogt` line 7479</sub>
263
+ <sub>`api.ogt` line 7511</sub>
264
264
 
265
265
  ## Components, resources and events
266
266
 
@@ -310,7 +310,7 @@ component AiAgent {
310
310
  }
311
311
  ```
312
312
 
313
- <sub>`api.ogt` line 7281</sub>
313
+ <sub>`api.ogt` line 7313</sub>
314
314
 
315
315
  <a id="record-Perception"></a>
316
316
 
@@ -411,7 +411,7 @@ component Perception {
411
411
  }
412
412
  ```
413
413
 
414
- <sub>`api.ogt` line 7307</sub>
414
+ <sub>`api.ogt` line 7339</sub>
415
415
 
416
416
  <a id="record-Perceivable"></a>
417
417
 
@@ -440,7 +440,7 @@ component Perceivable {
440
440
  }
441
441
  ```
442
442
 
443
- <sub>`api.ogt` line 7377</sub>
443
+ <sub>`api.ogt` line 7409</sub>
444
444
 
445
445
  <a id="record-AiChanged"></a>
446
446
 
@@ -467,7 +467,7 @@ event AiChanged {
467
467
  }
468
468
  ```
469
469
 
470
- <sub>`api.ogt` line 7389</sub>
470
+ <sub>`api.ogt` line 7421</sub>
471
471
 
472
472
  ## Types
473
473
 
@@ -483,7 +483,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
483
483
  handle Behaviour "A loaded behaviour tree or state machine."
484
484
  ```
485
485
 
486
- <sub>`api.ogt` line 7268</sub>
486
+ <sub>`api.ogt` line 7300</sub>
487
487
 
488
488
  <a id="type-BehaviourInfo"></a>
489
489
 
@@ -512,7 +512,7 @@ struct BehaviourInfo {
512
512
  }
513
513
  ```
514
514
 
515
- <sub>`api.ogt` line 7397</sub>
515
+ <sub>`api.ogt` line 7429</sub>
516
516
 
517
517
  <a id="type-NoiseDesc"></a>
518
518
 
@@ -544,7 +544,7 @@ struct NoiseDesc {
544
544
  }
545
545
  ```
546
546
 
547
- <sub>`api.ogt` line 7407</sub>
547
+ <sub>`api.ogt` line 7439</sub>
548
548
 
549
549
  <a id="type-AiDescription"></a>
550
550
 
@@ -579,7 +579,7 @@ struct AiDescription {
579
579
  }
580
580
  ```
581
581
 
582
- <sub>`api.ogt` line 7421</sub>
582
+ <sub>`api.ogt` line 7453</sub>
583
583
 
584
584
  ## Column kinds
585
585
 
@@ -598,7 +598,7 @@ column Behaviour {
598
598
  }
599
599
  ```
600
600
 
601
- <sub>`api.ogt` line 7270</sub>
601
+ <sub>`api.ogt` line 7302</sub>
602
602
 
603
603
  ## Constants
604
604
 
@@ -612,16 +612,16 @@ column Behaviour {
612
612
  const AI_RUNNING u32 1 "AiAgent.status: the tree or state is still running."
613
613
  ```
614
614
 
615
- <sub>`api.ogt` line 7277</sub>
615
+ <sub>`api.ogt` line 7309</sub>
616
616
 
617
617
  ```ogt
618
618
  const AI_SUCCESS u32 2 "AiAgent.status: the tree succeeded on the last think."
619
619
  ```
620
620
 
621
- <sub>`api.ogt` line 7278</sub>
621
+ <sub>`api.ogt` line 7310</sub>
622
622
 
623
623
  ```ogt
624
624
  const AI_FAILURE u32 3 "AiAgent.status: the tree failed on the last think."
625
625
  ```
626
626
 
627
- <sub>`api.ogt` line 7279</sub>
627
+ <sub>`api.ogt` line 7311</sub>
@@ -18,7 +18,7 @@ module anim {
18
18
  # declarations follow, each quoted below
19
19
  ```
20
20
 
21
- <sub>`api.ogt` line 5606</sub>
21
+ <sub>`api.ogt` line 5636</sub>
22
22
 
23
23
  ## Contents
24
24
 
@@ -95,7 +95,7 @@ fn graph {
95
95
  }
96
96
  ```
97
97
 
98
- <sub>`api.ogt` line 5921</sub>
98
+ <sub>`api.ogt` line 5951</sub>
99
99
 
100
100
  <a id="fn-humanoid"></a>
101
101
 
@@ -125,7 +125,7 @@ fn humanoid {
125
125
  }
126
126
  ```
127
127
 
128
- <sub>`api.ogt` line 5949</sub>
128
+ <sub>`api.ogt` line 5979</sub>
129
129
 
130
130
  <a id="fn-retarget"></a>
131
131
 
@@ -155,7 +155,7 @@ fn retarget {
155
155
  }
156
156
  ```
157
157
 
158
- <sub>`api.ogt` line 5969</sub>
158
+ <sub>`api.ogt` line 5999</sub>
159
159
 
160
160
  <a id="fn-clip"></a>
161
161
 
@@ -186,7 +186,7 @@ fn clip {
186
186
  }
187
187
  ```
188
188
 
189
- <sub>`api.ogt` line 6054</sub>
189
+ <sub>`api.ogt` line 6084</sub>
190
190
 
191
191
  <a id="fn-clip-2"></a>
192
192
 
@@ -217,7 +217,7 @@ fn clip {
217
217
  }
218
218
  ```
219
219
 
220
- <sub>`api.ogt` line 6062</sub>
220
+ <sub>`api.ogt` line 6092</sub>
221
221
 
222
222
  ## Components, resources and events
223
223
 
@@ -254,7 +254,7 @@ component Skeleton {
254
254
  }
255
255
  ```
256
256
 
257
- <sub>`api.ogt` line 5690</sub>
257
+ <sub>`api.ogt` line 5720</sub>
258
258
 
259
259
  <a id="record-AnimationPlayer"></a>
260
260
 
@@ -316,7 +316,7 @@ component AnimationPlayer {
316
316
  }
317
317
  ```
318
318
 
319
- <sub>`api.ogt` line 5705</sub>
319
+ <sub>`api.ogt` line 5735</sub>
320
320
 
321
321
  <a id="record-AnimationGraph"></a>
322
322
 
@@ -392,7 +392,7 @@ component AnimationGraph {
392
392
  }
393
393
  ```
394
394
 
395
- <sub>`api.ogt` line 5744</sub>
395
+ <sub>`api.ogt` line 5774</sub>
396
396
 
397
397
  <a id="record-Blendshapes"></a>
398
398
 
@@ -465,7 +465,7 @@ component Blendshapes {
465
465
  }
466
466
  ```
467
467
 
468
- <sub>`api.ogt` line 5792</sub>
468
+ <sub>`api.ogt` line 5822</sub>
469
469
 
470
470
  <a id="record-IkChain"></a>
471
471
 
@@ -536,7 +536,7 @@ component IkChain {
536
536
  }
537
537
  ```
538
538
 
539
- <sub>`api.ogt` line 5840</sub>
539
+ <sub>`api.ogt` line 5870</sub>
540
540
 
541
541
  <a id="record-AnimationEvent"></a>
542
542
 
@@ -567,7 +567,7 @@ event AnimationEvent {
567
567
  }
568
568
  ```
569
569
 
570
- <sub>`api.ogt` line 5884</sub>
570
+ <sub>`api.ogt` line 5914</sub>
571
571
 
572
572
  <a id="record-Flipbook"></a>
573
573
 
@@ -623,7 +623,7 @@ component Flipbook {
623
623
  }
624
624
  ```
625
625
 
626
- <sub>`api.ogt` line 5992</sub>
626
+ <sub>`api.ogt` line 6022</sub>
627
627
 
628
628
  <a id="record-FlipbookEvent"></a>
629
629
 
@@ -650,7 +650,7 @@ event FlipbookEvent {
650
650
  }
651
651
  ```
652
652
 
653
- <sub>`api.ogt` line 6023</sub>
653
+ <sub>`api.ogt` line 6053</sub>
654
654
 
655
655
  ## Types
656
656
 
@@ -666,7 +666,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
666
666
  handle SkeletonAsset "A rig: a glTF's nodes in topological order with their rest transforms, and its skins (joints and inverse bind matrices)."
667
667
  ```
668
668
 
669
- <sub>`api.ogt` line 5612</sub>
669
+ <sub>`api.ogt` line 5642</sub>
670
670
 
671
671
  <a id="type-ClipAsset"></a>
672
672
 
@@ -680,7 +680,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
680
680
  handle ClipAsset "An animation clip, resampled at the cook's rate, with its markers."
681
681
  ```
682
682
 
683
- <sub>`api.ogt` line 5613</sub>
683
+ <sub>`api.ogt` line 5643</sub>
684
684
 
685
685
  <a id="type-GraphAsset"></a>
686
686
 
@@ -694,7 +694,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
694
694
  handle GraphAsset "A blend-tree graph (`type animgraph`) whose clip references were resolved to clip handles."
695
695
  ```
696
696
 
697
- <sub>`api.ogt` line 5614</sub>
697
+ <sub>`api.ogt` line 5644</sub>
698
698
 
699
699
  <a id="type-RootMotion"></a>
700
700
 
@@ -719,7 +719,7 @@ enum RootMotion {
719
719
  }
720
720
  ```
721
721
 
722
- <sub>`api.ogt` line 5637</sub>
722
+ <sub>`api.ogt` line 5667</sub>
723
723
 
724
724
  <a id="type-BlendshapeSource"></a>
725
725
 
@@ -742,7 +742,7 @@ enum BlendshapeSource {
742
742
  }
743
743
  ```
744
744
 
745
- <sub>`api.ogt` line 5651</sub>
745
+ <sub>`api.ogt` line 5681</sub>
746
746
 
747
747
  <a id="type-IkSolver"></a>
748
748
 
@@ -765,7 +765,7 @@ enum IkSolver {
765
765
  }
766
766
  ```
767
767
 
768
- <sub>`api.ogt` line 5664</sub>
768
+ <sub>`api.ogt` line 5694</sub>
769
769
 
770
770
  <a id="type-IkSpace"></a>
771
771
 
@@ -788,7 +788,7 @@ enum IkSpace {
788
788
  }
789
789
  ```
790
790
 
791
- <sub>`api.ogt` line 5677</sub>
791
+ <sub>`api.ogt` line 5707</sub>
792
792
 
793
793
  <a id="type-ClipInfo"></a>
794
794
 
@@ -815,7 +815,7 @@ struct ClipInfo {
815
815
  }
816
816
  ```
817
817
 
818
- <sub>`api.ogt` line 5895</sub>
818
+ <sub>`api.ogt` line 5925</sub>
819
819
 
820
820
  <a id="type-Animation"></a>
821
821
 
@@ -842,7 +842,7 @@ struct Animation {
842
842
  }
843
843
  ```
844
844
 
845
- <sub>`api.ogt` line 5905</sub>
845
+ <sub>`api.ogt` line 5935</sub>
846
846
 
847
847
  <a id="type-GraphDesc"></a>
848
848
 
@@ -866,7 +866,7 @@ struct GraphDesc {
866
866
  }
867
867
  ```
868
868
 
869
- <sub>`api.ogt` line 5914</sub>
869
+ <sub>`api.ogt` line 5944</sub>
870
870
 
871
871
  <a id="type-Rig"></a>
872
872
 
@@ -880,7 +880,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
880
880
  handle Rig "A humanoid map from og.load.rig (a cooked `.ogt` of `type rig`): the naming scheme a skeleton's node names follow and the standard bones it names outright."
881
881
  ```
882
882
 
883
- <sub>`api.ogt` line 5928</sub>
883
+ <sub>`api.ogt` line 5958</sub>
884
884
 
885
885
  <a id="type-HumanBone"></a>
886
886
 
@@ -901,7 +901,7 @@ struct HumanBone {
901
901
  }
902
902
  ```
903
903
 
904
- <sub>`api.ogt` line 5930</sub>
904
+ <sub>`api.ogt` line 5960</sub>
905
905
 
906
906
  <a id="type-Humanoid"></a>
907
907
 
@@ -922,7 +922,7 @@ struct Humanoid {
922
922
  }
923
923
  ```
924
924
 
925
- <sub>`api.ogt` line 5936</sub>
925
+ <sub>`api.ogt` line 5966</sub>
926
926
 
927
927
  <a id="type-HumanoidDesc"></a>
928
928
 
@@ -946,7 +946,7 @@ struct HumanoidDesc {
946
946
  }
947
947
  ```
948
948
 
949
- <sub>`api.ogt` line 5942</sub>
949
+ <sub>`api.ogt` line 5972</sub>
950
950
 
951
951
  <a id="type-RetargetDesc"></a>
952
952
 
@@ -980,7 +980,7 @@ struct RetargetDesc {
980
980
  }
981
981
  ```
982
982
 
983
- <sub>`api.ogt` line 5956</sub>
983
+ <sub>`api.ogt` line 5986</sub>
984
984
 
985
985
  <a id="type-FlipbookSheet"></a>
986
986
 
@@ -994,7 +994,7 @@ A generational handle: a number the engine hands out. A dead handle is an error
994
994
  handle FlipbookSheet "A sprite sheet's frames and clips (a cooked `.ogt` of `type flipbook`), from og.load.flipbook."
995
995
  ```
996
996
 
997
- <sub>`api.ogt` line 5976</sub>
997
+ <sub>`api.ogt` line 6006</sub>
998
998
 
999
999
  <a id="type-FlipMode"></a>
1000
1000
 
@@ -1019,7 +1019,7 @@ enum FlipMode {
1019
1019
  }
1020
1020
  ```
1021
1021
 
1022
- <sub>`api.ogt` line 5985</sub>
1022
+ <sub>`api.ogt` line 6015</sub>
1023
1023
 
1024
1024
  <a id="type-FlipbookClipInfo"></a>
1025
1025
 
@@ -1050,7 +1050,7 @@ struct FlipbookClipInfo {
1050
1050
  }
1051
1051
  ```
1052
1052
 
1053
- <sub>`api.ogt` line 6031</sub>
1053
+ <sub>`api.ogt` line 6061</sub>
1054
1054
 
1055
1055
  <a id="type-FlipbookInfo"></a>
1056
1056
 
@@ -1081,7 +1081,7 @@ struct FlipbookInfo {
1081
1081
  }
1082
1082
  ```
1083
1083
 
1084
- <sub>`api.ogt` line 6043</sub>
1084
+ <sub>`api.ogt` line 6073</sub>
1085
1085
 
1086
1086
  ## Column kinds
1087
1087
 
@@ -1107,7 +1107,7 @@ column SkeletonAsset {
1107
1107
  }
1108
1108
  ```
1109
1109
 
1110
- <sub>`api.ogt` line 5616</sub>
1110
+ <sub>`api.ogt` line 5646</sub>
1111
1111
 
1112
1112
  ```ogt
1113
1113
  column ClipAsset {
@@ -1118,7 +1118,7 @@ column ClipAsset {
1118
1118
  }
1119
1119
  ```
1120
1120
 
1121
- <sub>`api.ogt` line 5623</sub>
1121
+ <sub>`api.ogt` line 5653</sub>
1122
1122
 
1123
1123
  ```ogt
1124
1124
  column GraphAsset {
@@ -1129,7 +1129,7 @@ column GraphAsset {
1129
1129
  }
1130
1130
  ```
1131
1131
 
1132
- <sub>`api.ogt` line 5630</sub>
1132
+ <sub>`api.ogt` line 5660</sub>
1133
1133
 
1134
1134
  ```ogt
1135
1135
  column RootMotion {
@@ -1140,7 +1140,7 @@ column RootMotion {
1140
1140
  }
1141
1141
  ```
1142
1142
 
1143
- <sub>`api.ogt` line 5644</sub>
1143
+ <sub>`api.ogt` line 5674</sub>
1144
1144
 
1145
1145
  ```ogt
1146
1146
  column BlendshapeSource {
@@ -1151,7 +1151,7 @@ column BlendshapeSource {
1151
1151
  }
1152
1152
  ```
1153
1153
 
1154
- <sub>`api.ogt` line 5657</sub>
1154
+ <sub>`api.ogt` line 5687</sub>
1155
1155
 
1156
1156
  ```ogt
1157
1157
  column IkSolver {
@@ -1162,7 +1162,7 @@ column IkSolver {
1162
1162
  }
1163
1163
  ```
1164
1164
 
1165
- <sub>`api.ogt` line 5670</sub>
1165
+ <sub>`api.ogt` line 5700</sub>
1166
1166
 
1167
1167
  ```ogt
1168
1168
  column IkSpace {
@@ -1173,7 +1173,7 @@ column IkSpace {
1173
1173
  }
1174
1174
  ```
1175
1175
 
1176
- <sub>`api.ogt` line 5683</sub>
1176
+ <sub>`api.ogt` line 5713</sub>
1177
1177
 
1178
1178
  ```ogt
1179
1179
  column FlipbookSheet {
@@ -1184,4 +1184,4 @@ column FlipbookSheet {
1184
1184
  }
1185
1185
  ```
1186
1186
 
1187
- <sub>`api.ogt` line 5978</sub>
1187
+ <sub>`api.ogt` line 6008</sub>
@@ -16,7 +16,7 @@ module atmosphere {
16
16
  # declarations follow, each quoted below
17
17
  ```
18
18
 
19
- <sub>`api.ogt` line 5220</sub>
19
+ <sub>`api.ogt` line 5250</sub>
20
20
 
21
21
  ## Contents
22
22
 
@@ -63,7 +63,7 @@ fn timeOfDay {
63
63
  }
64
64
  ```
65
65
 
66
- <sub>`api.ogt` line 5597</sub>
66
+ <sub>`api.ogt` line 5627</sub>
67
67
 
68
68
  ## Components, resources and events
69
69
 
@@ -154,7 +154,7 @@ resource Fog {
154
154
  }
155
155
  ```
156
156
 
157
- <sub>`api.ogt` line 5231</sub>
157
+ <sub>`api.ogt` line 5261</sub>
158
158
 
159
159
  <a id="record-Sky"></a>
160
160
 
@@ -261,7 +261,7 @@ resource Sky {
261
261
  }
262
262
  ```
263
263
 
264
- <sub>`api.ogt` line 5293</sub>
264
+ <sub>`api.ogt` line 5323</sub>
265
265
 
266
266
  <a id="record-DayNight"></a>
267
267
 
@@ -343,7 +343,7 @@ resource DayNight {
343
343
  }
344
344
  ```
345
345
 
346
- <sub>`api.ogt` line 5368</sub>
346
+ <sub>`api.ogt` line 5398</sub>
347
347
 
348
348
  <a id="record-Weather"></a>
349
349
 
@@ -405,7 +405,7 @@ resource Weather {
405
405
  }
406
406
  ```
407
407
 
408
- <sub>`api.ogt` line 5425</sub>
408
+ <sub>`api.ogt` line 5455</sub>
409
409
 
410
410
  <a id="record-Water"></a>
411
411
 
@@ -539,7 +539,7 @@ component Water {
539
539
  }
540
540
  ```
541
541
 
542
- <sub>`api.ogt` line 5465</sub>
542
+ <sub>`api.ogt` line 5495</sub>
543
543
 
544
544
  <a id="record-Water2D"></a>
545
545
 
@@ -593,7 +593,7 @@ component Water2D {
593
593
  }
594
594
  ```
595
595
 
596
- <sub>`api.ogt` line 5565</sub>
596
+ <sub>`api.ogt` line 5595</sub>
597
597
 
598
598
  ## Constants
599
599
 
@@ -609,28 +609,28 @@ component Water2D {
609
609
  const WEATHER_NONE u32 0 "Weather.kind: clear."
610
610
  ```
611
611
 
612
- <sub>`api.ogt` line 5225</sub>
612
+ <sub>`api.ogt` line 5255</sub>
613
613
 
614
614
  ```ogt
615
615
  const WEATHER_RAIN u32 1 "Weather.kind: rain streaks falling with the wind, the light dimmed and a grey distance fog."
616
616
  ```
617
617
 
618
- <sub>`api.ogt` line 5226</sub>
618
+ <sub>`api.ogt` line 5256</sub>
619
619
 
620
620
  ```ogt
621
621
  const WEATHER_SNOW u32 2 "Weather.kind: flakes drifting down on gusts, a pale fog."
622
622
  ```
623
623
 
624
- <sub>`api.ogt` line 5227</sub>
624
+ <sub>`api.ogt` line 5257</sub>
625
625
 
626
626
  ```ogt
627
627
  const WEATHER_DUST u32 3 "Weather.kind: dust blowing along the wind near the ground, a warm thick fog."
628
628
  ```
629
629
 
630
- <sub>`api.ogt` line 5228</sub>
630
+ <sub>`api.ogt` line 5258</sub>
631
631
 
632
632
  ```ogt
633
633
  const WEATHER_MIST u32 4 "Weather.kind: no particles, a dense low height fog."
634
634
  ```
635
635
 
636
- <sub>`api.ogt` line 5229</sub>
636
+ <sub>`api.ogt` line 5259</sub>