@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.
- package/dist/web/origin-engine.js +4 -4
- package/dist/web/origin-engine_bg.wasm +0 -0
- package/dist/web-publish/origin-engine-lanes.js +6 -6
- package/dist/web-publish/origin-engine-lanes_bg.wasm +0 -0
- package/dist/web-publish/origin-engine.js +4 -4
- package/dist/web-publish/origin-engine_bg.wasm +0 -0
- package/dist/web-publish-2d/origin-engine-lanes.js +6 -6
- package/dist/web-publish-2d/origin-engine-lanes_bg.wasm +0 -0
- package/dist/web-publish-2d/origin-engine.js +4 -4
- package/dist/web-publish-2d/origin-engine_bg.wasm +0 -0
- package/knowledge/package.json +4 -4
- package/knowledge/scaffold/origin-engine.json +2 -2
- package/knowledge/scaffold/template/gitignore +8 -0
- package/knowledge/scaffold/template/package.json +1 -1
- package/knowledge/scaffold/template/project.ogt +1 -1
- package/knowledge/scripts/lib.ts +5 -1
- package/knowledge/scripts/pack.ts +2 -1
- package/knowledge/scripts/validate.ts +2 -1
- package/knowledge/skills/og-build/SKILL.md +17 -1
- package/knowledge/skills/og-feel/SKILL.md +8 -1
- package/knowledge/skills/og-game/SKILL.md +117 -13
- package/knowledge/skills/og-i18n/SKILL.md +12 -3
- package/knowledge/skills/og-platform-sdk/SKILL.md +3 -1
- package/knowledge/skills/og-ui/SKILL.md +19 -6
- package/knowledge/wiki/ai.md +20 -20
- package/knowledge/wiki/anim.md +41 -41
- package/knowledge/wiki/atmosphere.md +13 -13
- package/knowledge/wiki/audio.md +18 -18
- package/knowledge/wiki/camera.md +13 -13
- package/knowledge/wiki/commands.md +11 -11
- package/knowledge/wiki/game.md +8 -8
- package/knowledge/wiki/i18n.md +7 -7
- package/knowledge/wiki/index.md +4 -1
- package/knowledge/wiki/input.md +47 -47
- package/knowledge/wiki/load.md +45 -45
- package/knowledge/wiki/math.md +7 -7
- package/knowledge/wiki/nav.md +34 -34
- package/knowledge/wiki/physics.md +124 -106
- package/knowledge/wiki/platform.md +31 -31
- package/knowledge/wiki/probe.md +66 -66
- package/knowledge/wiki/reflect.md +15 -15
- package/knowledge/wiki/render.md +99 -89
- package/knowledge/wiki/rng.md +14 -14
- package/knowledge/wiki/stream.md +15 -15
- package/knowledge/wiki/system.md +8 -8
- package/knowledge/wiki/systems.md +2 -2
- package/knowledge/wiki/terrain.md +19 -19
- package/knowledge/wiki/tilemap.md +19 -15
- package/knowledge/wiki/time.md +4 -4
- package/knowledge/wiki/transform.md +8 -8
- package/knowledge/wiki/tween.md +17 -17
- package/knowledge/wiki/ui.md +289 -245
- package/knowledge/wiki/world.md +67 -37
- package/package.json +6 -6
- package/schema/api.schema.json +134 -9
- package/src/index.ts +1 -0
- package/src/node/polish.ts +2 -1
- package/src/node/run.ts +5 -1
- package/src/runtime.ts +2 -0
- package/src/ui-kit/huds.ts +18 -14
- package/types/bindings.json +61 -26
- package/types/index.d.ts +144 -13
package/types/bindings.json
CHANGED
|
@@ -1006,7 +1006,7 @@
|
|
|
1006
1006
|
{
|
|
1007
1007
|
"name": "startTick",
|
|
1008
1008
|
"column": "u32",
|
|
1009
|
-
"default":
|
|
1009
|
+
"default": 4294967295
|
|
1010
1010
|
},
|
|
1011
1011
|
{
|
|
1012
1012
|
"name": "stopTick",
|
|
@@ -1837,6 +1837,12 @@
|
|
|
1837
1837
|
"column": "bool",
|
|
1838
1838
|
"default": true
|
|
1839
1839
|
},
|
|
1840
|
+
{
|
|
1841
|
+
"name": "pushStrength",
|
|
1842
|
+
"column": "f32",
|
|
1843
|
+
"default": 1000,
|
|
1844
|
+
"tunable": true
|
|
1845
|
+
},
|
|
1840
1846
|
{
|
|
1841
1847
|
"name": "grounded",
|
|
1842
1848
|
"column": "bool",
|
|
@@ -2061,6 +2067,17 @@
|
|
|
2061
2067
|
"column": "f32",
|
|
2062
2068
|
"default": 0.01
|
|
2063
2069
|
},
|
|
2070
|
+
{
|
|
2071
|
+
"name": "pushBodies",
|
|
2072
|
+
"column": "bool",
|
|
2073
|
+
"default": true
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
"name": "pushStrength",
|
|
2077
|
+
"column": "f32",
|
|
2078
|
+
"default": 1000,
|
|
2079
|
+
"tunable": true
|
|
2080
|
+
},
|
|
2064
2081
|
{
|
|
2065
2082
|
"name": "grounded",
|
|
2066
2083
|
"column": "bool",
|
|
@@ -6341,6 +6358,24 @@
|
|
|
6341
6358
|
"events": [
|
|
6342
6359
|
{
|
|
6343
6360
|
"id": 0,
|
|
6361
|
+
"name": "WorldRestored",
|
|
6362
|
+
"schema": "og.WorldRestored",
|
|
6363
|
+
"module": "world",
|
|
6364
|
+
"fields": [
|
|
6365
|
+
{
|
|
6366
|
+
"name": "from",
|
|
6367
|
+
"type": "u32",
|
|
6368
|
+
"default": 0
|
|
6369
|
+
},
|
|
6370
|
+
{
|
|
6371
|
+
"name": "tick",
|
|
6372
|
+
"type": "u32",
|
|
6373
|
+
"default": 0
|
|
6374
|
+
}
|
|
6375
|
+
]
|
|
6376
|
+
},
|
|
6377
|
+
{
|
|
6378
|
+
"id": 1,
|
|
6344
6379
|
"name": "KeyDown",
|
|
6345
6380
|
"schema": "og.KeyDown",
|
|
6346
6381
|
"module": "input",
|
|
@@ -6363,7 +6398,7 @@
|
|
|
6363
6398
|
]
|
|
6364
6399
|
},
|
|
6365
6400
|
{
|
|
6366
|
-
"id":
|
|
6401
|
+
"id": 2,
|
|
6367
6402
|
"name": "TextInput",
|
|
6368
6403
|
"schema": "og.TextInput",
|
|
6369
6404
|
"module": "input",
|
|
@@ -6386,7 +6421,7 @@
|
|
|
6386
6421
|
]
|
|
6387
6422
|
},
|
|
6388
6423
|
{
|
|
6389
|
-
"id":
|
|
6424
|
+
"id": 3,
|
|
6390
6425
|
"name": "KeyUp",
|
|
6391
6426
|
"schema": "og.KeyUp",
|
|
6392
6427
|
"module": "input",
|
|
@@ -6404,7 +6439,7 @@
|
|
|
6404
6439
|
]
|
|
6405
6440
|
},
|
|
6406
6441
|
{
|
|
6407
|
-
"id":
|
|
6442
|
+
"id": 4,
|
|
6408
6443
|
"name": "PointerDown",
|
|
6409
6444
|
"schema": "og.PointerDown",
|
|
6410
6445
|
"module": "input",
|
|
@@ -6437,7 +6472,7 @@
|
|
|
6437
6472
|
]
|
|
6438
6473
|
},
|
|
6439
6474
|
{
|
|
6440
|
-
"id":
|
|
6475
|
+
"id": 5,
|
|
6441
6476
|
"name": "PointerUp",
|
|
6442
6477
|
"schema": "og.PointerUp",
|
|
6443
6478
|
"module": "input",
|
|
@@ -6470,7 +6505,7 @@
|
|
|
6470
6505
|
]
|
|
6471
6506
|
},
|
|
6472
6507
|
{
|
|
6473
|
-
"id":
|
|
6508
|
+
"id": 6,
|
|
6474
6509
|
"name": "PointerMove",
|
|
6475
6510
|
"schema": "og.PointerMove",
|
|
6476
6511
|
"module": "input",
|
|
@@ -6493,7 +6528,7 @@
|
|
|
6493
6528
|
]
|
|
6494
6529
|
},
|
|
6495
6530
|
{
|
|
6496
|
-
"id":
|
|
6531
|
+
"id": 7,
|
|
6497
6532
|
"name": "Wheel",
|
|
6498
6533
|
"schema": "og.Wheel",
|
|
6499
6534
|
"module": "input",
|
|
@@ -6511,7 +6546,7 @@
|
|
|
6511
6546
|
]
|
|
6512
6547
|
},
|
|
6513
6548
|
{
|
|
6514
|
-
"id":
|
|
6549
|
+
"id": 8,
|
|
6515
6550
|
"name": "A11yAction",
|
|
6516
6551
|
"schema": "og.A11yAction",
|
|
6517
6552
|
"module": "input",
|
|
@@ -6529,7 +6564,7 @@
|
|
|
6529
6564
|
]
|
|
6530
6565
|
},
|
|
6531
6566
|
{
|
|
6532
|
-
"id":
|
|
6567
|
+
"id": 9,
|
|
6533
6568
|
"name": "AssetReady",
|
|
6534
6569
|
"schema": "og.AssetReady",
|
|
6535
6570
|
"module": "load",
|
|
@@ -6547,7 +6582,7 @@
|
|
|
6547
6582
|
]
|
|
6548
6583
|
},
|
|
6549
6584
|
{
|
|
6550
|
-
"id":
|
|
6585
|
+
"id": 10,
|
|
6551
6586
|
"name": "AssetFailed",
|
|
6552
6587
|
"schema": "og.AssetFailed",
|
|
6553
6588
|
"module": "load",
|
|
@@ -6570,7 +6605,7 @@
|
|
|
6570
6605
|
]
|
|
6571
6606
|
},
|
|
6572
6607
|
{
|
|
6573
|
-
"id":
|
|
6608
|
+
"id": 11,
|
|
6574
6609
|
"name": "CollisionStarted",
|
|
6575
6610
|
"schema": "og.CollisionStarted",
|
|
6576
6611
|
"module": "physics",
|
|
@@ -6606,7 +6641,7 @@
|
|
|
6606
6641
|
]
|
|
6607
6642
|
},
|
|
6608
6643
|
{
|
|
6609
|
-
"id":
|
|
6644
|
+
"id": 12,
|
|
6610
6645
|
"name": "CollisionEnded",
|
|
6611
6646
|
"schema": "og.CollisionEnded",
|
|
6612
6647
|
"module": "physics",
|
|
@@ -6624,7 +6659,7 @@
|
|
|
6624
6659
|
]
|
|
6625
6660
|
},
|
|
6626
6661
|
{
|
|
6627
|
-
"id":
|
|
6662
|
+
"id": 13,
|
|
6628
6663
|
"name": "SensorEntered",
|
|
6629
6664
|
"schema": "og.SensorEntered",
|
|
6630
6665
|
"module": "physics",
|
|
@@ -6642,7 +6677,7 @@
|
|
|
6642
6677
|
]
|
|
6643
6678
|
},
|
|
6644
6679
|
{
|
|
6645
|
-
"id":
|
|
6680
|
+
"id": 14,
|
|
6646
6681
|
"name": "SensorExited",
|
|
6647
6682
|
"schema": "og.SensorExited",
|
|
6648
6683
|
"module": "physics",
|
|
@@ -6660,7 +6695,7 @@
|
|
|
6660
6695
|
]
|
|
6661
6696
|
},
|
|
6662
6697
|
{
|
|
6663
|
-
"id":
|
|
6698
|
+
"id": 15,
|
|
6664
6699
|
"name": "Contact",
|
|
6665
6700
|
"schema": "og.Contact",
|
|
6666
6701
|
"module": "physics",
|
|
@@ -6683,7 +6718,7 @@
|
|
|
6683
6718
|
]
|
|
6684
6719
|
},
|
|
6685
6720
|
{
|
|
6686
|
-
"id":
|
|
6721
|
+
"id": 16,
|
|
6687
6722
|
"name": "CharacterEvent",
|
|
6688
6723
|
"schema": "og.CharacterEvent",
|
|
6689
6724
|
"module": "physics",
|
|
@@ -6706,7 +6741,7 @@
|
|
|
6706
6741
|
]
|
|
6707
6742
|
},
|
|
6708
6743
|
{
|
|
6709
|
-
"id":
|
|
6744
|
+
"id": 17,
|
|
6710
6745
|
"name": "Splash",
|
|
6711
6746
|
"schema": "og.Splash",
|
|
6712
6747
|
"module": "physics",
|
|
@@ -6738,7 +6773,7 @@
|
|
|
6738
6773
|
]
|
|
6739
6774
|
},
|
|
6740
6775
|
{
|
|
6741
|
-
"id":
|
|
6776
|
+
"id": 18,
|
|
6742
6777
|
"name": "AnimationEvent",
|
|
6743
6778
|
"schema": "og.AnimationEvent",
|
|
6744
6779
|
"module": "anim",
|
|
@@ -6771,7 +6806,7 @@
|
|
|
6771
6806
|
]
|
|
6772
6807
|
},
|
|
6773
6808
|
{
|
|
6774
|
-
"id":
|
|
6809
|
+
"id": 19,
|
|
6775
6810
|
"name": "FlipbookEvent",
|
|
6776
6811
|
"schema": "og.FlipbookEvent",
|
|
6777
6812
|
"module": "anim",
|
|
@@ -6799,7 +6834,7 @@
|
|
|
6799
6834
|
]
|
|
6800
6835
|
},
|
|
6801
6836
|
{
|
|
6802
|
-
"id":
|
|
6837
|
+
"id": 20,
|
|
6803
6838
|
"name": "TweenCompleted",
|
|
6804
6839
|
"schema": "og.TweenCompleted",
|
|
6805
6840
|
"module": "tween",
|
|
@@ -6822,7 +6857,7 @@
|
|
|
6822
6857
|
]
|
|
6823
6858
|
},
|
|
6824
6859
|
{
|
|
6825
|
-
"id":
|
|
6860
|
+
"id": 21,
|
|
6826
6861
|
"name": "MusicBeat",
|
|
6827
6862
|
"schema": "og.MusicBeat",
|
|
6828
6863
|
"module": "audio",
|
|
@@ -6850,7 +6885,7 @@
|
|
|
6850
6885
|
]
|
|
6851
6886
|
},
|
|
6852
6887
|
{
|
|
6853
|
-
"id":
|
|
6888
|
+
"id": 22,
|
|
6854
6889
|
"name": "SoundStarted",
|
|
6855
6890
|
"schema": "og.SoundStarted",
|
|
6856
6891
|
"module": "audio",
|
|
@@ -6873,7 +6908,7 @@
|
|
|
6873
6908
|
]
|
|
6874
6909
|
},
|
|
6875
6910
|
{
|
|
6876
|
-
"id":
|
|
6911
|
+
"id": 23,
|
|
6877
6912
|
"name": "SoundEnded",
|
|
6878
6913
|
"schema": "og.SoundEnded",
|
|
6879
6914
|
"module": "audio",
|
|
@@ -6901,7 +6936,7 @@
|
|
|
6901
6936
|
]
|
|
6902
6937
|
},
|
|
6903
6938
|
{
|
|
6904
|
-
"id":
|
|
6939
|
+
"id": 24,
|
|
6905
6940
|
"name": "AiChanged",
|
|
6906
6941
|
"schema": "og.AiChanged",
|
|
6907
6942
|
"module": "ai",
|
|
@@ -6929,7 +6964,7 @@
|
|
|
6929
6964
|
]
|
|
6930
6965
|
},
|
|
6931
6966
|
{
|
|
6932
|
-
"id":
|
|
6967
|
+
"id": 25,
|
|
6933
6968
|
"name": "PlatformAnswered",
|
|
6934
6969
|
"schema": "og.PlatformAnswered",
|
|
6935
6970
|
"module": "platform",
|
|
@@ -6947,7 +6982,7 @@
|
|
|
6947
6982
|
]
|
|
6948
6983
|
},
|
|
6949
6984
|
{
|
|
6950
|
-
"id":
|
|
6985
|
+
"id": 26,
|
|
6951
6986
|
"name": "StreamEvent",
|
|
6952
6987
|
"schema": "og.StreamEvent",
|
|
6953
6988
|
"module": "stream",
|
package/types/index.d.ts
CHANGED
|
@@ -500,6 +500,26 @@ export interface RestoreDesc {
|
|
|
500
500
|
readonly migrate?: boolean;
|
|
501
501
|
}
|
|
502
502
|
|
|
503
|
+
/**
|
|
504
|
+
* A world.restore applied: the tick after it (the first whole tick after a save taken mid-tick, whose next step completes the saved tick) delivers this, read through world.events like any event. Everything in the world came back as saved, request numbers and resources the session filled included; the session did not (og-game §17), so a system that reads this resets what belongs to the session: it forgets requests answered long ago, asks the store again for the settings and progress, and closes a menu the player had open. Sent as that tick starts, not when the restore applies, so the world between the two hashes as the save did.
|
|
505
|
+
*
|
|
506
|
+
* The payload of the `WorldRestored` event (token `og.WorldRestored`).
|
|
507
|
+
*/
|
|
508
|
+
export interface WorldRestored {
|
|
509
|
+
/**
|
|
510
|
+
* The tick the world was at when the restore applied.
|
|
511
|
+
*
|
|
512
|
+
* @unit ticks (fixed simulation steps)
|
|
513
|
+
*/
|
|
514
|
+
readonly from: number;
|
|
515
|
+
/**
|
|
516
|
+
* The saved tick: og.Time's tick right after the restore.
|
|
517
|
+
*
|
|
518
|
+
* @unit ticks (fixed simulation steps)
|
|
519
|
+
*/
|
|
520
|
+
readonly tick: number;
|
|
521
|
+
}
|
|
522
|
+
|
|
503
523
|
/**
|
|
504
524
|
* Which entities a query matches.
|
|
505
525
|
*
|
|
@@ -642,7 +662,7 @@ export interface World {
|
|
|
642
662
|
*/
|
|
643
663
|
snapshot(): Result<string>;
|
|
644
664
|
/**
|
|
645
|
-
* Replace the world with a save that world.snapshot wrote: entities, components, names, resources, events and the modules' state, so the restored world hashes as the saved one did, on either host. The session stays: input (og.Input, og.Pointers, og.Gamepad), the player's bus volumes (og.Audio), the UI's focus and hover, and what lives outside the world (the platform's calls and clock, the language, the loaded assets, the command channel's scheduled steps, which keep their remaining delays though og.Time takes the saved tick). Called in a system or a command it applies when the tick ends, after the last system; elsewhere (GameDesc.start, between ticks) at once. A save a system took mid-tick restores to that moment of its tick (og.Time reads its tick): the next step completes it (the systems after the saver, then the engine's), so the ticks after it are the saved run's. The meshes and height fields its colliders name must be loaded or registered first (a save naming one that is not is refused). A save holds only the world: progress kept in module variables is not in it, so keep it in components and resources.
|
|
665
|
+
* Replace the world with a save that world.snapshot wrote: entities, components, names, resources, events and the modules' state, so the restored world hashes as the saved one did, on either host. The session stays: input (og.Input, og.Pointers, og.Gamepad), the player's bus volumes (og.Audio), the UI's focus and hover, and what lives outside the world (the platform's calls and clock, the language, the loaded assets, the command channel's scheduled steps, which keep their remaining delays though og.Time takes the saved tick, so an `og run --commands` script goes on to its last step or `quit` whether the save is of a later tick or an earlier one). Called in a system or a command it applies when the tick ends, after the last system; elsewhere (GameDesc.start, between ticks) at once. Either way the tick after it delivers og.WorldRestored, for the systems that reset what lives in the session. A save a system took mid-tick restores to that moment of its tick (og.Time reads its tick): the next step completes it (the systems after the saver, then the engine's), so the ticks after it are the saved run's. The meshes and height fields its colliders name must be loaded or registered first (a save naming one that is not is refused). A save holds only the world: progress kept in module variables is not in it, so keep it in components and resources.
|
|
646
666
|
*
|
|
647
667
|
* @param save The text world.snapshot returned.
|
|
648
668
|
* @param desc Whether a type whose layout changed since the save is mapped field by field.
|
|
@@ -4466,6 +4486,11 @@ export interface Decal {
|
|
|
4466
4486
|
visible: boolean;
|
|
4467
4487
|
}
|
|
4468
4488
|
|
|
4489
|
+
/**
|
|
4490
|
+
* ParticleSystem.startTick's default: never written. A looping emitter emits as if started at tick 0; a one-shot (`looping false`) emits nothing until its startTick is written, so a burst spawned in `start` waits for its first use. Write it back to re-arm a one-shot without firing it.
|
|
4491
|
+
*/
|
|
4492
|
+
export declare const PARTICLES_ARMED: 4294967295;
|
|
4493
|
+
|
|
4469
4494
|
/**
|
|
4470
4495
|
* Emits particles from an og.load.emitter asset at the entity's MatrixWorld. Particles are simulated by the renderer from (seed, startTick, the tick), so they are deterministic and replay, and never feed back into the simulation: compute on the full tier, the CPU on WebGL2, identical either way.
|
|
4471
4496
|
*
|
|
@@ -4476,7 +4501,11 @@ export interface ParticleSystem {
|
|
|
4476
4501
|
emitter: ParticleEmitter;
|
|
4477
4502
|
/** The random seed: systems with different seeds differ. */
|
|
4478
4503
|
seed: number;
|
|
4479
|
-
/**
|
|
4504
|
+
/**
|
|
4505
|
+
* The tick emission started: write the tick (`time.tick`, `world.tick`) to fire a one-shot burst, or to restart one. Its default, PARTICLES_ARMED, is never written: a looping emitter emits as if started at tick 0, while a one-shot (`looping false`) stays armed and emits nothing until a tick is written, so effects spawned ahead of their first use wait.
|
|
4506
|
+
*
|
|
4507
|
+
* @default 4294967295
|
|
4508
|
+
*/
|
|
4480
4509
|
startTick: number;
|
|
4481
4510
|
/**
|
|
4482
4511
|
* The tick emission stops (the particles live out); 0 keeps emitting while the emitter loops.
|
|
@@ -6318,7 +6347,7 @@ export interface Joint {
|
|
|
6318
6347
|
}
|
|
6319
6348
|
|
|
6320
6349
|
/**
|
|
6321
|
-
* A kinematic character (3D, or top-down 2D): the entity's capsule (or any og.Collider) moved by `move` each tick, sliding along walls, climbing slopes up to `maxSlope` and steps up to `stepHeight`, snapped to the ground, carried by the moving platform it stands on and falling by gravity. It keeps `skin` off every surface, standing that far over the ground; a step is climbed when the ground beyond it is at most `stepHeight` over the ground it stands on. What blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider; the step makes it a kinematic body and pushes dynamic bodies it walks into.
|
|
6350
|
+
* A kinematic character (3D, or top-down 2D): the entity's capsule (or any og.Collider) moved by `move` each tick, sliding along walls, climbing slopes up to `maxSlope` and steps up to `stepHeight`, snapped to the ground, carried by the moving platform it stands on and falling by gravity. It keeps `skin` off every surface, standing that far over the ground; a step is climbed when the ground beyond it is at most `stepHeight` over the ground it stands on. What blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider; the step makes it a kinematic body and pushes the dynamic bodies it walks into (`pushBodies`) with at most `pushStrength`, so a light one is shoved and a heavy one holds.
|
|
6322
6351
|
*
|
|
6323
6352
|
* The value of the `CharacterController` component (token `og.CharacterController`).
|
|
6324
6353
|
*/
|
|
@@ -6404,11 +6433,20 @@ export interface CharacterController {
|
|
|
6404
6433
|
*/
|
|
6405
6434
|
maxFallSpeed: number;
|
|
6406
6435
|
/**
|
|
6407
|
-
* Push dynamic bodies it walks into
|
|
6436
|
+
* Push dynamic bodies it walks into, with at most `pushStrength`.
|
|
6408
6437
|
*
|
|
6409
6438
|
* @default true
|
|
6410
6439
|
*/
|
|
6411
6440
|
pushBodies: boolean;
|
|
6441
|
+
/**
|
|
6442
|
+
* The most force it pushes with: each tick the bodies it walks into share an impulse of at most this times the tick's length (mass times the speed it asks of them, capped), so a body of a few kilograms is shoved at its speed while one whose friction holds more (a tonne on the ground) does not move. 0 leaves every body where it is, as `pushBodies` false does.
|
|
6443
|
+
*
|
|
6444
|
+
* @default 1000
|
|
6445
|
+
* @range 0..
|
|
6446
|
+
* @unit newton (newtons: the force that gives a kilogram one metre per second squared)
|
|
6447
|
+
* @tunable
|
|
6448
|
+
*/
|
|
6449
|
+
pushStrength: number;
|
|
6412
6450
|
/**
|
|
6413
6451
|
* Written: standing on walkable ground after the step.
|
|
6414
6452
|
*
|
|
@@ -6455,7 +6493,7 @@ export interface CharacterController {
|
|
|
6455
6493
|
}
|
|
6456
6494
|
|
|
6457
6495
|
/**
|
|
6458
|
-
* A 2D platformer character (the 2D profile): run, jump and fall with designer units (jump height and time to apex, not gravity), coyote time, jump buffering, variable jump height (releasing jump while rising cuts the jump), apex hang, air jumps, wall slide and wall jump, one-way platforms (colliders on `oneWayLayers` are solid from above only; hold `down` to drop through), moving platforms (it rides what it stands on) and corner correction (a jump that clips a ceiling corner by less than `cornerCorrection` slides past it). It keeps `skin` off every surface; what blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider (a box or capsule); it becomes a kinematic body.
|
|
6496
|
+
* A 2D platformer character (the 2D profile): run, jump and fall with designer units (jump height and time to apex, not gravity), coyote time, jump buffering, variable jump height (releasing jump while rising cuts the jump), apex hang, air jumps, wall slide and wall jump, one-way platforms (colliders on `oneWayLayers` are solid from above only; hold `down` to drop through), moving platforms (it rides what it stands on) and corner correction (a jump that clips a ceiling corner by less than `cornerCorrection` slides past it). It keeps `skin` off every surface; what blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider (a box or capsule); it becomes a kinematic body and pushes the dynamic bodies it runs into (`pushBodies`) with at most `pushStrength`, so a crate's mass tells: a light one is shoved at the run speed, a heavy one holds (set its og.RigidBody `mass`).
|
|
6459
6497
|
*
|
|
6460
6498
|
* The value of the `PlatformerController` component (token `og.PlatformerController`).
|
|
6461
6499
|
*/
|
|
@@ -6674,6 +6712,21 @@ export interface PlatformerController {
|
|
|
6674
6712
|
* @unit m (metres)
|
|
6675
6713
|
*/
|
|
6676
6714
|
skin: number;
|
|
6715
|
+
/**
|
|
6716
|
+
* Push dynamic bodies it runs into, with at most `pushStrength`.
|
|
6717
|
+
*
|
|
6718
|
+
* @default true
|
|
6719
|
+
*/
|
|
6720
|
+
pushBodies: boolean;
|
|
6721
|
+
/**
|
|
6722
|
+
* The most force it pushes with: each tick the bodies it runs into share an impulse of at most this times the tick's length (mass times the speed it asks of them, capped), so a body of a few kilograms is shoved at its speed while one whose friction holds more (a tonne on the ground) does not move. 0 leaves every body where it is, as `pushBodies` false does.
|
|
6723
|
+
*
|
|
6724
|
+
* @default 1000
|
|
6725
|
+
* @range 0..
|
|
6726
|
+
* @unit newton (newtons: the force that gives a kilogram one metre per second squared)
|
|
6727
|
+
* @tunable
|
|
6728
|
+
*/
|
|
6729
|
+
pushStrength: number;
|
|
6677
6730
|
/**
|
|
6678
6731
|
* Written: standing on ground after the step.
|
|
6679
6732
|
*
|
|
@@ -6771,7 +6824,7 @@ export declare const CHARACTER_LEFT_GROUND: 5;
|
|
|
6771
6824
|
export declare const CHARACTER_BUMPED: 6;
|
|
6772
6825
|
|
|
6773
6826
|
/**
|
|
6774
|
-
* Something a CharacterController or PlatformerController did this step: the hooks for dust, squash, sounds and camera kicks. Read the next tick.
|
|
6827
|
+
* Something a CharacterController or PlatformerController did this step: the hooks for dust, squash, sounds and camera kicks. Read the next tick: the controllers move in the physics step, after the game's systems, so a jump pressed in tick T moves the character in T and its CHARACTER_JUMPED is read in T + 1 (og-feel §12 has the same-tick alternative).
|
|
6775
6828
|
*
|
|
6776
6829
|
* The payload of the `CharacterEvent` event (token `og.CharacterEvent`).
|
|
6777
6830
|
*/
|
|
@@ -9859,7 +9912,7 @@ export interface Tilemap {
|
|
|
9859
9912
|
*/
|
|
9860
9913
|
collision: boolean;
|
|
9861
9914
|
/**
|
|
9862
|
-
* The collision layers of those colliders, as bits (Collider.layers).
|
|
9915
|
+
* The collision layers of those colliders, as bits (Collider.layers), for every collision layer of the map that names none of its own (a map layer's `colliderLayers`, with its `colliderMask`, puts a layer of grates on a one-way layer while the walls stay here).
|
|
9863
9916
|
*
|
|
9864
9917
|
* @default 1
|
|
9865
9918
|
*/
|
|
@@ -9887,6 +9940,14 @@ export interface TileLayerInfo {
|
|
|
9887
9940
|
readonly parallax: Vector2;
|
|
9888
9941
|
/** Its solid tiles collide. */
|
|
9889
9942
|
readonly collision: boolean;
|
|
9943
|
+
/**
|
|
9944
|
+
* The collision layers (og.Collider.layers bits) of its colliders, from its `colliderLayers` line or Tiled int property; 0 (unset) takes Tilemap.colliderLayers.
|
|
9945
|
+
*/
|
|
9946
|
+
readonly colliderLayers: number;
|
|
9947
|
+
/**
|
|
9948
|
+
* The layers its colliders collide with (og.Collider.mask bits), from its `colliderMask` line or Tiled int property; 0 (unset) is every layer.
|
|
9949
|
+
*/
|
|
9950
|
+
readonly colliderMask: number;
|
|
9890
9951
|
/**
|
|
9891
9952
|
* The auto-tiling terrain of a terrain layer (its cells are 1 filled or 0 empty); empty for a tile layer.
|
|
9892
9953
|
*/
|
|
@@ -11729,7 +11790,7 @@ export interface PlatformResult {
|
|
|
11729
11790
|
/** The tick it was answered at. */
|
|
11730
11791
|
readonly tick: number;
|
|
11731
11792
|
/**
|
|
11732
|
-
* The host's clock when it answered, UTC milliseconds since 1970 (PlatformInfo.clock says whose); 0 when the host gave none.
|
|
11793
|
+
* The host's clock when it answered, UTC milliseconds since 1970 (PlatformInfo.clock says whose); 0 when the host gave none. A slot call (saveSlot, loadSlot) answers the time of the store answer that ended it.
|
|
11733
11794
|
*
|
|
11734
11795
|
* @unit ms (milliseconds)
|
|
11735
11796
|
*/
|
|
@@ -15005,6 +15066,18 @@ export interface PlatformerHudDesc {
|
|
|
15005
15066
|
* @default false
|
|
15006
15067
|
*/
|
|
15007
15068
|
readonly touch?: boolean;
|
|
15069
|
+
/**
|
|
15070
|
+
* The touch Jump button. Every word of the HUD is a field with its English default: a localised game passes its string table's (og.i18n.t).
|
|
15071
|
+
*
|
|
15072
|
+
* @default "Jump"
|
|
15073
|
+
*/
|
|
15074
|
+
readonly jumpLabel?: string;
|
|
15075
|
+
/**
|
|
15076
|
+
* The pause button's name (what a screen reader says; the button shows its icon).
|
|
15077
|
+
*
|
|
15078
|
+
* @default "Pause"
|
|
15079
|
+
*/
|
|
15080
|
+
readonly pauseLabel?: string;
|
|
15008
15081
|
}
|
|
15009
15082
|
|
|
15010
15083
|
/** What a HUD answered this tick. */
|
|
@@ -15107,6 +15180,24 @@ export interface ShooterHudDesc {
|
|
|
15107
15180
|
* @default false
|
|
15108
15181
|
*/
|
|
15109
15182
|
readonly touch?: boolean;
|
|
15183
|
+
/**
|
|
15184
|
+
* The word after the kill count. Every word of the HUD is a field with its English default: a localised game passes its string table's (og.i18n.t).
|
|
15185
|
+
*
|
|
15186
|
+
* @default "kills"
|
|
15187
|
+
*/
|
|
15188
|
+
readonly killsLabel?: string;
|
|
15189
|
+
/**
|
|
15190
|
+
* The touch Fire button.
|
|
15191
|
+
*
|
|
15192
|
+
* @default "Fire"
|
|
15193
|
+
*/
|
|
15194
|
+
readonly fireLabel?: string;
|
|
15195
|
+
/**
|
|
15196
|
+
* The pause button's name (what a screen reader says; the button shows its icon).
|
|
15197
|
+
*
|
|
15198
|
+
* @default "Pause"
|
|
15199
|
+
*/
|
|
15200
|
+
readonly pauseLabel?: string;
|
|
15110
15201
|
}
|
|
15111
15202
|
|
|
15112
15203
|
/**
|
|
@@ -15151,6 +15242,24 @@ export interface PuzzleHudDesc {
|
|
|
15151
15242
|
* @default null
|
|
15152
15243
|
*/
|
|
15153
15244
|
readonly timeLeft?: number | null;
|
|
15245
|
+
/**
|
|
15246
|
+
* The caption under the moves left. Every word of the HUD is a field with its English default: a localised game passes its string table's (og.i18n.t).
|
|
15247
|
+
*
|
|
15248
|
+
* @default "moves left"
|
|
15249
|
+
*/
|
|
15250
|
+
readonly movesLabel?: string;
|
|
15251
|
+
/**
|
|
15252
|
+
* The line beside the stars; `{target}` is replaced by the target, formatted (1,000). A localised game passes its string table's, with `{target}` in it.
|
|
15253
|
+
*
|
|
15254
|
+
* @default "Target {target}"
|
|
15255
|
+
*/
|
|
15256
|
+
readonly targetLabel?: string;
|
|
15257
|
+
/**
|
|
15258
|
+
* The pause button's name (what a screen reader says; the button shows its icon).
|
|
15259
|
+
*
|
|
15260
|
+
* @default "Pause"
|
|
15261
|
+
*/
|
|
15262
|
+
readonly pauseLabel?: string;
|
|
15154
15263
|
}
|
|
15155
15264
|
|
|
15156
15265
|
/**
|
|
@@ -15266,6 +15375,24 @@ export interface IdleHudDesc {
|
|
|
15266
15375
|
* @default "Tap"
|
|
15267
15376
|
*/
|
|
15268
15377
|
readonly tapLabel?: string;
|
|
15378
|
+
/**
|
|
15379
|
+
* A generator's level badge; `{level}` is replaced by its level. Every word of the HUD is a field with its English default: a localised game passes its string table's (og.i18n.t), with `{level}` in it.
|
|
15380
|
+
*
|
|
15381
|
+
* @default "Lv {level}"
|
|
15382
|
+
*/
|
|
15383
|
+
readonly levelLabel?: string;
|
|
15384
|
+
/**
|
|
15385
|
+
* A currency's rate; `{rate}` is replaced by its per-second amount, formatted (+12/s is `+{rate}/s`). A localised game passes its string table's, with `{rate}` in it.
|
|
15386
|
+
*
|
|
15387
|
+
* @default "+{rate}/s"
|
|
15388
|
+
*/
|
|
15389
|
+
readonly rateLabel?: string;
|
|
15390
|
+
/**
|
|
15391
|
+
* The pause button's name (what a screen reader says; the button shows its icon).
|
|
15392
|
+
*
|
|
15393
|
+
* @default "Pause"
|
|
15394
|
+
*/
|
|
15395
|
+
readonly pauseLabel?: string;
|
|
15269
15396
|
}
|
|
15270
15397
|
|
|
15271
15398
|
/**
|
|
@@ -17711,6 +17838,10 @@ export interface StreamBudget {
|
|
|
17711
17838
|
* namespace per module (`og.load`, `og.commands`).
|
|
17712
17839
|
*/
|
|
17713
17840
|
export declare namespace og {
|
|
17841
|
+
/**
|
|
17842
|
+
* A world.restore applied: the tick after it (the first whole tick after a save taken mid-tick, whose next step completes the saved tick) delivers this, read through world.events like any event. Everything in the world came back as saved, request numbers and resources the session filled included; the session did not (og-game §17), so a system that reads this resets what belongs to the session: it forgets requests answered long ago, asks the store again for the settings and progress, and closes a menu the player had open. Sent as that tick starts, not when the restore applies, so the world between the two hashes as the save did.
|
|
17843
|
+
*/
|
|
17844
|
+
const WorldRestored: EventType<WorldRestored>;
|
|
17714
17845
|
/**
|
|
17715
17846
|
* Declare the game. The bundle's default export is its result.
|
|
17716
17847
|
*
|
|
@@ -18340,15 +18471,15 @@ export declare namespace og {
|
|
|
18340
18471
|
*/
|
|
18341
18472
|
const Joint: ComponentType<{ readonly kind: FieldSpec<"u32">; readonly body: FieldSpec<"Entity">; readonly other: FieldSpec<"Entity">; readonly anchor: FieldSpec<"Vector3">; readonly otherAnchor: FieldSpec<"Vector3">; readonly axis: FieldSpec<"Vector3">; readonly limits: FieldSpec<"bool">; readonly min: FieldSpec<"f32">; readonly max: FieldSpec<"f32">; readonly motor: FieldSpec<"u32">; readonly motorTarget: FieldSpec<"f32">; readonly motorStiffness: FieldSpec<"f32">; readonly motorDamping: FieldSpec<"f32">; readonly motorMaxForce: FieldSpec<"f32">; readonly restLength: FieldSpec<"f32">; readonly stiffness: FieldSpec<"f32">; readonly damping: FieldSpec<"f32">; readonly length: FieldSpec<"f32">; readonly collide: FieldSpec<"bool">; readonly value: FieldSpec<"f32"> }, Joint>;
|
|
18342
18473
|
/**
|
|
18343
|
-
* A kinematic character (3D, or top-down 2D): the entity's capsule (or any og.Collider) moved by `move` each tick, sliding along walls, climbing slopes up to `maxSlope` and steps up to `stepHeight`, snapped to the ground, carried by the moving platform it stands on and falling by gravity. It keeps `skin` off every surface, standing that far over the ground; a step is climbed when the ground beyond it is at most `stepHeight` over the ground it stands on. What blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider; the step makes it a kinematic body and pushes dynamic bodies it walks into.
|
|
18474
|
+
* A kinematic character (3D, or top-down 2D): the entity's capsule (or any og.Collider) moved by `move` each tick, sliding along walls, climbing slopes up to `maxSlope` and steps up to `stepHeight`, snapped to the ground, carried by the moving platform it stands on and falling by gravity. It keeps `skin` off every surface, standing that far over the ground; a step is climbed when the ground beyond it is at most `stepHeight` over the ground it stands on. What blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider; the step makes it a kinematic body and pushes the dynamic bodies it walks into (`pushBodies`) with at most `pushStrength`, so a light one is shoved and a heavy one holds.
|
|
18344
18475
|
*/
|
|
18345
|
-
const CharacterController: ComponentType<{ readonly move: FieldSpec<"Vector3">; readonly jump: FieldSpec<"bool">; readonly jumpSpeed: FieldSpec<"f32">; readonly gravityScale: FieldSpec<"f32">; readonly maxSlope: FieldSpec<"f32">; readonly stepHeight: FieldSpec<"f32">; readonly snapDistance: FieldSpec<"f32">; readonly skin: FieldSpec<"f32">; readonly coyoteTime: FieldSpec<"f32">; readonly maxFallSpeed: FieldSpec<"f32">; readonly pushBodies: FieldSpec<"bool">; readonly grounded: FieldSpec<"bool">; readonly sliding: FieldSpec<"bool">; readonly velocity: FieldSpec<"Vector3">; readonly groundNormal: FieldSpec<"Vector3">; readonly coyote: FieldSpec<"f32">; readonly jumpWasHeld: FieldSpec<"bool">; readonly ground: FieldSpec<"Entity"> }, CharacterController>;
|
|
18476
|
+
const CharacterController: ComponentType<{ readonly move: FieldSpec<"Vector3">; readonly jump: FieldSpec<"bool">; readonly jumpSpeed: FieldSpec<"f32">; readonly gravityScale: FieldSpec<"f32">; readonly maxSlope: FieldSpec<"f32">; readonly stepHeight: FieldSpec<"f32">; readonly snapDistance: FieldSpec<"f32">; readonly skin: FieldSpec<"f32">; readonly coyoteTime: FieldSpec<"f32">; readonly maxFallSpeed: FieldSpec<"f32">; readonly pushBodies: FieldSpec<"bool">; readonly pushStrength: FieldSpec<"f32">; readonly grounded: FieldSpec<"bool">; readonly sliding: FieldSpec<"bool">; readonly velocity: FieldSpec<"Vector3">; readonly groundNormal: FieldSpec<"Vector3">; readonly coyote: FieldSpec<"f32">; readonly jumpWasHeld: FieldSpec<"bool">; readonly ground: FieldSpec<"Entity"> }, CharacterController>;
|
|
18346
18477
|
/**
|
|
18347
|
-
* A 2D platformer character (the 2D profile): run, jump and fall with designer units (jump height and time to apex, not gravity), coyote time, jump buffering, variable jump height (releasing jump while rising cuts the jump), apex hang, air jumps, wall slide and wall jump, one-way platforms (colliders on `oneWayLayers` are solid from above only; hold `down` to drop through), moving platforms (it rides what it stands on) and corner correction (a jump that clips a ceiling corner by less than `cornerCorrection` slides past it). It keeps `skin` off every surface; what blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider (a box or capsule); it becomes a kinematic body.
|
|
18478
|
+
* A 2D platformer character (the 2D profile): run, jump and fall with designer units (jump height and time to apex, not gravity), coyote time, jump buffering, variable jump height (releasing jump while rising cuts the jump), apex hang, air jumps, wall slide and wall jump, one-way platforms (colliders on `oneWayLayers` are solid from above only; hold `down` to drop through), moving platforms (it rides what it stands on) and corner correction (a jump that clips a ceiling corner by less than `cornerCorrection` slides past it). It keeps `skin` off every surface; what blocks it is every solid collider its og.Collider's `layers` and `mask` interact with (each one's layers meeting the other's mask), as for bodies. The entity needs an og.Transform and an og.Collider (a box or capsule); it becomes a kinematic body and pushes the dynamic bodies it runs into (`pushBodies`) with at most `pushStrength`, so a crate's mass tells: a light one is shoved at the run speed, a heavy one holds (set its og.RigidBody `mass`).
|
|
18348
18479
|
*/
|
|
18349
|
-
const PlatformerController: ComponentType<{ readonly moveX: FieldSpec<"f32">; readonly jump: FieldSpec<"bool">; readonly down: FieldSpec<"bool">; readonly impulse: FieldSpec<"Vector2">; readonly maxSpeed: FieldSpec<"f32">; readonly acceleration: FieldSpec<"f32">; readonly deceleration: FieldSpec<"f32">; readonly airAcceleration: FieldSpec<"f32">; readonly airDeceleration: FieldSpec<"f32">; readonly jumpHeight: FieldSpec<"f32">; readonly timeToApex: FieldSpec<"f32">; readonly fallGravity: FieldSpec<"f32">; readonly jumpCut: FieldSpec<"f32">; readonly apexGravity: FieldSpec<"f32">; readonly apexThreshold: FieldSpec<"f32">; readonly maxFallSpeed: FieldSpec<"f32">; readonly coyoteTime: FieldSpec<"f32">; readonly jumpBuffer: FieldSpec<"f32">; readonly airJumps: FieldSpec<"u32">; readonly wallJumps: FieldSpec<"bool">; readonly wallSlideSpeed: FieldSpec<"f32">; readonly wallJump: FieldSpec<"Vector2">; readonly wallJumpLock: FieldSpec<"f32">; readonly oneWayLayers: FieldSpec<"u32">; readonly cornerCorrection: FieldSpec<"f32">; readonly maxSlope: FieldSpec<"f32">; readonly snapDistance: FieldSpec<"f32">; readonly skin: FieldSpec<"f32">; readonly grounded: FieldSpec<"bool">; readonly onWall: FieldSpec<"i32">; readonly facing: FieldSpec<"i32">; readonly velocity: FieldSpec<"Vector3">; readonly jumping: FieldSpec<"bool">; readonly airJumpsLeft: FieldSpec<"u32">; readonly coyote: FieldSpec<"f32">; readonly buffer: FieldSpec<"f32">; readonly wallLock: FieldSpec<"f32">; readonly dropTime: FieldSpec<"f32">; readonly jumpWasHeld: FieldSpec<"bool">; readonly ground: FieldSpec<"Entity"> }, PlatformerController>;
|
|
18480
|
+
const PlatformerController: ComponentType<{ readonly moveX: FieldSpec<"f32">; readonly jump: FieldSpec<"bool">; readonly down: FieldSpec<"bool">; readonly impulse: FieldSpec<"Vector2">; readonly maxSpeed: FieldSpec<"f32">; readonly acceleration: FieldSpec<"f32">; readonly deceleration: FieldSpec<"f32">; readonly airAcceleration: FieldSpec<"f32">; readonly airDeceleration: FieldSpec<"f32">; readonly jumpHeight: FieldSpec<"f32">; readonly timeToApex: FieldSpec<"f32">; readonly fallGravity: FieldSpec<"f32">; readonly jumpCut: FieldSpec<"f32">; readonly apexGravity: FieldSpec<"f32">; readonly apexThreshold: FieldSpec<"f32">; readonly maxFallSpeed: FieldSpec<"f32">; readonly coyoteTime: FieldSpec<"f32">; readonly jumpBuffer: FieldSpec<"f32">; readonly airJumps: FieldSpec<"u32">; readonly wallJumps: FieldSpec<"bool">; readonly wallSlideSpeed: FieldSpec<"f32">; readonly wallJump: FieldSpec<"Vector2">; readonly wallJumpLock: FieldSpec<"f32">; readonly oneWayLayers: FieldSpec<"u32">; readonly cornerCorrection: FieldSpec<"f32">; readonly maxSlope: FieldSpec<"f32">; readonly snapDistance: FieldSpec<"f32">; readonly skin: FieldSpec<"f32">; readonly pushBodies: FieldSpec<"bool">; readonly pushStrength: FieldSpec<"f32">; readonly grounded: FieldSpec<"bool">; readonly onWall: FieldSpec<"i32">; readonly facing: FieldSpec<"i32">; readonly velocity: FieldSpec<"Vector3">; readonly jumping: FieldSpec<"bool">; readonly airJumpsLeft: FieldSpec<"u32">; readonly coyote: FieldSpec<"f32">; readonly buffer: FieldSpec<"f32">; readonly wallLock: FieldSpec<"f32">; readonly dropTime: FieldSpec<"f32">; readonly jumpWasHeld: FieldSpec<"bool">; readonly ground: FieldSpec<"Entity"> }, PlatformerController>;
|
|
18350
18481
|
/**
|
|
18351
|
-
* Something a CharacterController or PlatformerController did this step: the hooks for dust, squash, sounds and camera kicks. Read the next tick.
|
|
18482
|
+
* Something a CharacterController or PlatformerController did this step: the hooks for dust, squash, sounds and camera kicks. Read the next tick: the controllers move in the physics step, after the game's systems, so a jump pressed in tick T moves the character in T and its CHARACTER_JUMPED is read in T + 1 (og-feel §12 has the same-tick alternative).
|
|
18352
18483
|
*/
|
|
18353
18484
|
const CharacterEvent: EventType<CharacterEvent>;
|
|
18354
18485
|
/**
|