hytopia 0.3.0-dev.2 → 0.3.1

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 (108) hide show
  1. package/boilerplate/index.ts +17 -9
  2. package/docs/server.modelregistry.md +38 -0
  3. package/docs/server.modelregistry.optimize.md +13 -0
  4. package/docs/server.modelregistry.optimizeeverystart.md +13 -0
  5. package/docs/server.playerui.md +0 -19
  6. package/docs/server.playeruievent.md +14 -0
  7. package/docs/server.playeruieventpayloads._player_ui.data_.md +16 -0
  8. package/docs/server.playeruieventpayloads._player_ui.send_data_.md +2 -2
  9. package/docs/server.playeruieventpayloads.md +21 -2
  10. package/examples/custom-ui/index.ts +4 -3
  11. package/examples/payload-game/assets/models/.optimized/bullet/baseColor.png +0 -0
  12. package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.bin +0 -0
  13. package/examples/payload-game/assets/models/.optimized/bullet/bullet-named-nodes.gltf +308 -0
  14. package/examples/payload-game/assets/models/.optimized/bullet/bullet.bin +0 -0
  15. package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf +142 -0
  16. package/examples/payload-game/assets/models/.optimized/bullet/bullet.gltf.md5 +1 -0
  17. package/examples/payload-game/assets/models/.optimized/payload/baseColor.png +0 -0
  18. package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.bin +0 -0
  19. package/examples/payload-game/assets/models/.optimized/payload/payload-named-nodes.gltf +2868 -0
  20. package/examples/payload-game/assets/models/.optimized/payload/payload.bin +0 -0
  21. package/examples/payload-game/assets/models/.optimized/payload/payload.gltf +1109 -0
  22. package/examples/payload-game/assets/models/.optimized/payload/payload.gltf.md5 +1 -0
  23. package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_1.png +0 -0
  24. package/examples/payload-game/assets/models/.optimized/player-with-gun/baseColor_2.png +0 -0
  25. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.bin +0 -0
  26. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun-named-nodes.gltf +8572 -0
  27. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.bin +0 -0
  28. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf +7849 -0
  29. package/examples/payload-game/assets/models/.optimized/player-with-gun/player-with-gun.gltf.md5 +1 -0
  30. package/examples/payload-game/assets/models/.optimized/raygun/baseColor_1.png +0 -0
  31. package/examples/payload-game/assets/models/.optimized/raygun/baseColor_2.png +0 -0
  32. package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.bin +0 -0
  33. package/examples/payload-game/assets/models/.optimized/raygun/raygun-named-nodes.gltf +7752 -0
  34. package/examples/payload-game/assets/models/.optimized/raygun/raygun.bin +0 -0
  35. package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf +832 -0
  36. package/examples/payload-game/assets/models/.optimized/raygun/raygun.gltf.md5 +1 -0
  37. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_1.png +0 -0
  38. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_2.png +0 -0
  39. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_3.png +0 -0
  40. package/examples/payload-game/assets/models/.optimized/soldier-player/baseColor_4.png +0 -0
  41. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
  42. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
  43. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.bin +0 -0
  44. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf +7774 -0
  45. package/examples/payload-game/assets/models/.optimized/soldier-player/soldier-player.gltf.md5 +1 -0
  46. package/examples/payload-game/assets/models/raygun.gltf +1 -0
  47. package/examples/payload-game/assets/models/soldier-player.gltf +1 -0
  48. package/examples/payload-game/index.ts +23 -4
  49. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.bin +0 -0
  50. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence-named-nodes.gltf +806 -0
  51. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.bin +0 -0
  52. package/examples/zombies-fps/assets/models/environment/.optimized/barbedfence/barbedfence.gltf +15 -686
  53. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.bin +0 -0
  54. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars-named-nodes.gltf +1633 -0
  55. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.bin +0 -0
  56. package/examples/zombies-fps/assets/models/environment/.optimized/binoculars/binoculars.gltf +86 -1578
  57. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.bin +0 -0
  58. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox-named-nodes.gltf +2480 -0
  59. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.bin +0 -0
  60. package/examples/zombies-fps/assets/models/environment/.optimized/bombbox/bombbox.gltf +88 -2427
  61. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.bin +0 -0
  62. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole-named-nodes.gltf +136 -0
  63. package/examples/zombies-fps/assets/models/environment/.optimized/bullet-hole/bullet-hole.gltf +1 -1
  64. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.bin +0 -0
  65. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit-named-nodes.gltf +831 -0
  66. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.bin +0 -0
  67. package/examples/zombies-fps/assets/models/environment/.optimized/healthkit/healthkit.gltf +16 -706
  68. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.bin +0 -0
  69. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf-named-nodes.gltf +4025 -0
  70. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.bin +0 -0
  71. package/examples/zombies-fps/assets/models/environment/.optimized/metalshelf/metalshelf.gltf +136 -3944
  72. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.bin +0 -0
  73. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash-named-nodes.gltf +196 -0
  74. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.bin +0 -0
  75. package/examples/zombies-fps/assets/models/environment/.optimized/muzzle-flash/muzzle-flash.gltf +57 -28
  76. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.bin +0 -0
  77. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox-named-nodes.gltf +3412 -0
  78. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.bin +0 -0
  79. package/examples/zombies-fps/assets/models/environment/.optimized/weaponbox/weaponbox.gltf +133 -3323
  80. package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47-named-nodes.glb +0 -0
  81. package/examples/zombies-fps/assets/models/items/.optimized/ak-47/ak-47.glb +0 -0
  82. package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15-named-nodes.glb +0 -0
  83. package/examples/zombies-fps/assets/models/items/.optimized/ar-15/ar-15.glb +0 -0
  84. package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol-named-nodes.glb +0 -0
  85. package/examples/zombies-fps/assets/models/items/.optimized/auto-pistol/auto-pistol.glb +0 -0
  86. package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun-named-nodes.glb +0 -0
  87. package/examples/zombies-fps/assets/models/items/.optimized/auto-shotgun/auto-shotgun.glb +0 -0
  88. package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol-named-nodes.glb +0 -0
  89. package/examples/zombies-fps/assets/models/items/.optimized/pistol/pistol.glb +0 -0
  90. package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun-named-nodes.glb +0 -0
  91. package/examples/zombies-fps/assets/models/items/.optimized/shotgun/shotgun.glb +0 -0
  92. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.bin +0 -0
  93. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss-named-nodes.gltf +10037 -0
  94. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.bin +0 -0
  95. package/examples/zombies-fps/assets/models/npcs/.optimized/ripper-boss/ripper-boss.gltf +1262 -4533
  96. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.bin +0 -0
  97. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player-named-nodes.gltf +7679 -0
  98. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.bin +0 -0
  99. package/examples/zombies-fps/assets/models/players/.optimized/soldier-player/soldier-player.gltf +529 -434
  100. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.bin +0 -0
  101. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace-named-nodes.gltf +136 -0
  102. package/examples/zombies-fps/assets/models/projectiles/.optimized/bullet-trace/bullet-trace.gltf +1 -1
  103. package/package.json +5 -2
  104. package/server.api.json +148 -43
  105. package/server.d.ts +18 -15
  106. package/server.js +132 -90
  107. package/tsdoc-metadata.json +1 -1
  108. package/docs/server.playerui.ondata.md +0 -18
@@ -0,0 +1,136 @@
1
+ {
2
+ "asset": {
3
+ "generator": "glTF-Transform v4.1.2",
4
+ "version": "2.0"
5
+ },
6
+ "accessors": [
7
+ {
8
+ "type": "SCALAR",
9
+ "componentType": 5123,
10
+ "count": 36,
11
+ "bufferView": 0,
12
+ "byteOffset": 0
13
+ },
14
+ {
15
+ "type": "VEC3",
16
+ "componentType": 5126,
17
+ "count": 24,
18
+ "max": [
19
+ 0,
20
+ 0.0625,
21
+ 3.5625
22
+ ],
23
+ "min": [
24
+ -0.0625,
25
+ 0,
26
+ -0.0625
27
+ ],
28
+ "bufferView": 1,
29
+ "byteOffset": 0
30
+ },
31
+ {
32
+ "type": "VEC3",
33
+ "componentType": 5126,
34
+ "count": 24,
35
+ "bufferView": 1,
36
+ "byteOffset": 12
37
+ },
38
+ {
39
+ "type": "VEC2",
40
+ "componentType": 5126,
41
+ "count": 24,
42
+ "bufferView": 1,
43
+ "byteOffset": 24
44
+ }
45
+ ],
46
+ "bufferViews": [
47
+ {
48
+ "buffer": 0,
49
+ "byteOffset": 0,
50
+ "byteLength": 72,
51
+ "target": 34963
52
+ },
53
+ {
54
+ "buffer": 0,
55
+ "byteOffset": 72,
56
+ "byteLength": 768,
57
+ "byteStride": 32,
58
+ "target": 34962
59
+ }
60
+ ],
61
+ "samplers": [
62
+ {
63
+ "magFilter": 9728,
64
+ "minFilter": 9728,
65
+ "wrapS": 33071,
66
+ "wrapT": 33071
67
+ }
68
+ ],
69
+ "textures": [
70
+ {
71
+ "source": 0,
72
+ "sampler": 0
73
+ }
74
+ ],
75
+ "images": [
76
+ {
77
+ "mimeType": "image/png",
78
+ "uri": "baseColor.png"
79
+ }
80
+ ],
81
+ "buffers": [
82
+ {
83
+ "uri": "bullet-trace-named-nodes.bin",
84
+ "byteLength": 840
85
+ }
86
+ ],
87
+ "materials": [
88
+ {
89
+ "alphaMode": "MASK",
90
+ "alphaCutoff": 0.05,
91
+ "doubleSided": true,
92
+ "pbrMetallicRoughness": {
93
+ "metallicFactor": 0,
94
+ "baseColorTexture": {
95
+ "index": 0
96
+ }
97
+ }
98
+ }
99
+ ],
100
+ "meshes": [
101
+ {
102
+ "primitives": [
103
+ {
104
+ "attributes": {
105
+ "POSITION": 1,
106
+ "NORMAL": 2,
107
+ "TEXCOORD_0": 3
108
+ },
109
+ "mode": 4,
110
+ "material": 0,
111
+ "indices": 0
112
+ }
113
+ ]
114
+ }
115
+ ],
116
+ "nodes": [
117
+ {
118
+ "name": "cube",
119
+ "translation": [
120
+ 0,
121
+ 0,
122
+ -1.75
123
+ ],
124
+ "mesh": 0
125
+ }
126
+ ],
127
+ "scenes": [
128
+ {
129
+ "name": "blockbench_export",
130
+ "nodes": [
131
+ 0
132
+ ]
133
+ }
134
+ ],
135
+ "scene": 0
136
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "asset": {
3
- "generator": "glTF-Transform v4.1.1",
3
+ "generator": "glTF-Transform v4.1.2",
4
4
  "version": "2.0"
5
5
  },
6
6
  "accessors": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hytopia",
3
- "version": "0.3.0-dev.2",
3
+ "version": "0.3.1",
4
4
  "description": "The HYTOPIA SDK makes it easy for developers to create massively multiplayer games using JavaScript or TypeScript.",
5
5
  "main": "server.js",
6
6
  "bin": {
@@ -46,5 +46,8 @@
46
46
  "bugs": {
47
47
  "url": "https://github.com/hytopiagg/sdk/issues"
48
48
  },
49
- "homepage": "https://github.com/hytopiagg/sdk#readme"
49
+ "homepage": "https://github.com/hytopiagg/sdk#readme",
50
+ "dependencies": {
51
+ "@gltf-transform/cli": "4.1.1"
52
+ }
50
53
  }
package/server.api.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "toolPackage": "@microsoft/api-extractor",
4
- "toolVersion": "7.50.0",
4
+ "toolVersion": "7.51.0",
5
5
  "schemaVersion": 1011,
6
6
  "oldestForwardsCompatibleVersion": 1001,
7
7
  "tsdocConfig": {
@@ -22658,6 +22658,66 @@
22658
22658
  "isOptional": false,
22659
22659
  "isAbstract": false,
22660
22660
  "name": "modelHasNode"
22661
+ },
22662
+ {
22663
+ "kind": "Property",
22664
+ "canonicalReference": "server!ModelRegistry#optimize:member",
22665
+ "docComment": "/**\n * Whether to use optimized models when they are loaded.\n */\n",
22666
+ "excerptTokens": [
22667
+ {
22668
+ "kind": "Content",
22669
+ "text": "optimize: "
22670
+ },
22671
+ {
22672
+ "kind": "Content",
22673
+ "text": "boolean"
22674
+ },
22675
+ {
22676
+ "kind": "Content",
22677
+ "text": ";"
22678
+ }
22679
+ ],
22680
+ "isReadonly": false,
22681
+ "isOptional": false,
22682
+ "releaseTag": "Public",
22683
+ "name": "optimize",
22684
+ "propertyTypeTokenRange": {
22685
+ "startIndex": 1,
22686
+ "endIndex": 2
22687
+ },
22688
+ "isStatic": false,
22689
+ "isProtected": false,
22690
+ "isAbstract": false
22691
+ },
22692
+ {
22693
+ "kind": "Property",
22694
+ "canonicalReference": "server!ModelRegistry#optimizeEveryStart:member",
22695
+ "docComment": "/**\n * Whether to always run model optimization on server start.\n */\n",
22696
+ "excerptTokens": [
22697
+ {
22698
+ "kind": "Content",
22699
+ "text": "optimizeEveryStart: "
22700
+ },
22701
+ {
22702
+ "kind": "Content",
22703
+ "text": "boolean"
22704
+ },
22705
+ {
22706
+ "kind": "Content",
22707
+ "text": ";"
22708
+ }
22709
+ ],
22710
+ "isReadonly": false,
22711
+ "isOptional": false,
22712
+ "releaseTag": "Public",
22713
+ "name": "optimizeEveryStart",
22714
+ "propertyTypeTokenRange": {
22715
+ "startIndex": 1,
22716
+ "endIndex": 2
22717
+ },
22718
+ "isStatic": false,
22719
+ "isProtected": false,
22720
+ "isAbstract": false
22661
22721
  }
22662
22722
  ],
22663
22723
  "implementsTokenRanges": []
@@ -28011,45 +28071,6 @@
28011
28071
  "isAbstract": false,
28012
28072
  "name": "lockPointer"
28013
28073
  },
28014
- {
28015
- "kind": "Property",
28016
- "canonicalReference": "server!PlayerUI#onData:member",
28017
- "docComment": "/**\n * A function that is called when the player's client UI sends data to the server.\n *\n * @remarks\n *\n * Data sent is an object of any shape defined by you and controlled with invocations of `hytopia.ui.sendData()` from your loaded client UI files.\n *\n * @param playerUI - The PlayerUI instance that the data is from.\n *\n * @param data - The data sent from the client UI.\n */\n",
28018
- "excerptTokens": [
28019
- {
28020
- "kind": "Content",
28021
- "text": "onData?: "
28022
- },
28023
- {
28024
- "kind": "Content",
28025
- "text": "(playerUI: "
28026
- },
28027
- {
28028
- "kind": "Reference",
28029
- "text": "PlayerUI",
28030
- "canonicalReference": "server!PlayerUI:class"
28031
- },
28032
- {
28033
- "kind": "Content",
28034
- "text": ", data: object) => void"
28035
- },
28036
- {
28037
- "kind": "Content",
28038
- "text": ";"
28039
- }
28040
- ],
28041
- "isReadonly": false,
28042
- "isOptional": true,
28043
- "releaseTag": "Public",
28044
- "name": "onData",
28045
- "propertyTypeTokenRange": {
28046
- "startIndex": 1,
28047
- "endIndex": 4
28048
- },
28049
- "isStatic": false,
28050
- "isProtected": false,
28051
- "isAbstract": false
28052
- },
28053
28074
  {
28054
28075
  "kind": "Property",
28055
28076
  "canonicalReference": "server!PlayerUI#player:member",
@@ -28151,6 +28172,27 @@
28151
28172
  "name": "PlayerUIEvent",
28152
28173
  "preserveMemberOrder": false,
28153
28174
  "members": [
28175
+ {
28176
+ "kind": "EnumMember",
28177
+ "canonicalReference": "server!PlayerUIEvent.DATA:member",
28178
+ "docComment": "",
28179
+ "excerptTokens": [
28180
+ {
28181
+ "kind": "Content",
28182
+ "text": "DATA = "
28183
+ },
28184
+ {
28185
+ "kind": "Content",
28186
+ "text": "\"PLAYER_UI.DATA\""
28187
+ }
28188
+ ],
28189
+ "initializerTokenRange": {
28190
+ "startIndex": 1,
28191
+ "endIndex": 2
28192
+ },
28193
+ "releaseTag": "Public",
28194
+ "name": "DATA"
28195
+ },
28154
28196
  {
28155
28197
  "kind": "EnumMember",
28156
28198
  "canonicalReference": "server!PlayerUIEvent.LOAD:member",
@@ -28231,6 +28273,60 @@
28231
28273
  "name": "PlayerUIEventPayloads",
28232
28274
  "preserveMemberOrder": false,
28233
28275
  "members": [
28276
+ {
28277
+ "kind": "PropertySignature",
28278
+ "canonicalReference": "server!PlayerUIEventPayloads#\"PLAYER_UI.DATA\":member",
28279
+ "docComment": "/**\n * Emitted when data is received by the server from the player's client UI.\n */\n",
28280
+ "excerptTokens": [
28281
+ {
28282
+ "kind": "Content",
28283
+ "text": "["
28284
+ },
28285
+ {
28286
+ "kind": "Reference",
28287
+ "text": "PlayerUIEvent.DATA",
28288
+ "canonicalReference": "server!PlayerUIEvent.DATA:member"
28289
+ },
28290
+ {
28291
+ "kind": "Content",
28292
+ "text": "]: "
28293
+ },
28294
+ {
28295
+ "kind": "Content",
28296
+ "text": "{\n playerUI: "
28297
+ },
28298
+ {
28299
+ "kind": "Reference",
28300
+ "text": "PlayerUI",
28301
+ "canonicalReference": "server!PlayerUI:class"
28302
+ },
28303
+ {
28304
+ "kind": "Content",
28305
+ "text": ";\n data: "
28306
+ },
28307
+ {
28308
+ "kind": "Reference",
28309
+ "text": "Record",
28310
+ "canonicalReference": "!Record:type"
28311
+ },
28312
+ {
28313
+ "kind": "Content",
28314
+ "text": "<string, any>;\n }"
28315
+ },
28316
+ {
28317
+ "kind": "Content",
28318
+ "text": ";"
28319
+ }
28320
+ ],
28321
+ "isReadonly": false,
28322
+ "isOptional": false,
28323
+ "releaseTag": "Public",
28324
+ "name": "\"PLAYER_UI.DATA\"",
28325
+ "propertyTypeTokenRange": {
28326
+ "startIndex": 3,
28327
+ "endIndex": 8
28328
+ }
28329
+ },
28234
28330
  {
28235
28331
  "kind": "PropertySignature",
28236
28332
  "canonicalReference": "server!PlayerUIEventPayloads#\"PLAYER_UI.LOAD\":member",
@@ -28324,7 +28420,7 @@
28324
28420
  {
28325
28421
  "kind": "PropertySignature",
28326
28422
  "canonicalReference": "server!PlayerUIEventPayloads#\"PLAYER_UI.SEND_DATA\":member",
28327
- "docComment": "/**\n * Emitted when the player's client UI sends data to the server.\n */\n",
28423
+ "docComment": "/**\n * Emitted when data is sent from the server to the player's client UI.\n */\n",
28328
28424
  "excerptTokens": [
28329
28425
  {
28330
28426
  "kind": "Content",
@@ -28350,7 +28446,16 @@
28350
28446
  },
28351
28447
  {
28352
28448
  "kind": "Content",
28353
- "text": ";\n data: object;\n }"
28449
+ "text": ";\n data: "
28450
+ },
28451
+ {
28452
+ "kind": "Reference",
28453
+ "text": "Record",
28454
+ "canonicalReference": "!Record:type"
28455
+ },
28456
+ {
28457
+ "kind": "Content",
28458
+ "text": "<string, any>;\n }"
28354
28459
  },
28355
28460
  {
28356
28461
  "kind": "Content",
@@ -28363,7 +28468,7 @@
28363
28468
  "name": "\"PLAYER_UI.SEND_DATA\"",
28364
28469
  "propertyTypeTokenRange": {
28365
28470
  "startIndex": 3,
28366
- "endIndex": 6
28471
+ "endIndex": 8
28367
28472
  }
28368
28473
  }
28369
28474
  ],
package/server.d.ts CHANGED
@@ -2810,6 +2810,10 @@ declare type ModelBoundingBox = {
2810
2810
  export declare class ModelRegistry {
2811
2811
  /** The global ModelRegistry instance as a singleton. */
2812
2812
  static readonly instance: ModelRegistry;
2813
+ /** Whether to use optimized models when they are loaded. */
2814
+ optimize: boolean;
2815
+ /** Whether to always run model optimization on server start. */
2816
+ optimizeEveryStart: boolean;
2813
2817
 
2814
2818
 
2815
2819
 
@@ -2846,6 +2850,12 @@ export declare class ModelRegistry {
2846
2850
  modelHasNode(modelUri: string, nodeName: string): boolean;
2847
2851
 
2848
2852
 
2853
+
2854
+
2855
+
2856
+
2857
+
2858
+
2849
2859
  }
2850
2860
 
2851
2861
  /**
@@ -3593,19 +3603,6 @@ export declare interface PlayerManagerEventPayloads {
3593
3603
  export declare class PlayerUI extends EventRouter {
3594
3604
  /** The player that the UI belongs to. @readonly */
3595
3605
  readonly player: Player;
3596
- /**
3597
- * A function that is called when the player's client UI
3598
- * sends data to the server.
3599
- *
3600
- * @remarks
3601
- * Data sent is an object of any shape defined by you
3602
- * and controlled with invocations of `hytopia.ui.sendData()`
3603
- * from your loaded client UI files.
3604
- *
3605
- * @param playerUI - The PlayerUI instance that the data is from.
3606
- * @param data - The data sent from the client UI.
3607
- */
3608
- onData?: (playerUI: PlayerUI, data: object) => void;
3609
3606
 
3610
3607
  /**
3611
3608
  * Loads client UI for the player.
@@ -3626,6 +3623,7 @@ export declare class PlayerUI extends EventRouter {
3626
3623
 
3627
3624
  /** Event types a PlayerUI can emit. See {@link PlayerUIEventPayloads} for the payloads. @public */
3628
3625
  export declare enum PlayerUIEvent {
3626
+ DATA = "PLAYER_UI.DATA",
3629
3627
  LOAD = "PLAYER_UI.LOAD",
3630
3628
  LOCK_POINTER = "PLAYER_UI.LOCK_POINTER",
3631
3629
  SEND_DATA = "PLAYER_UI.SEND_DATA"
@@ -3633,6 +3631,11 @@ export declare enum PlayerUIEvent {
3633
3631
 
3634
3632
  /** Event payloads for PlayerUI emitted events. @public */
3635
3633
  export declare interface PlayerUIEventPayloads {
3634
+ /** Emitted when data is received by the server from the player's client UI. */
3635
+ [PlayerUIEvent.DATA]: {
3636
+ playerUI: PlayerUI;
3637
+ data: Record<string, any>;
3638
+ };
3636
3639
  /** Emitted when the player's client UI is loaded. */
3637
3640
  [PlayerUIEvent.LOAD]: {
3638
3641
  playerUI: PlayerUI;
@@ -3643,10 +3646,10 @@ export declare interface PlayerUIEventPayloads {
3643
3646
  playerUI: PlayerUI;
3644
3647
  lock: boolean;
3645
3648
  };
3646
- /** Emitted when the player's client UI sends data to the server. */
3649
+ /** Emitted when data is sent from the server to the player's client UI. */
3647
3650
  [PlayerUIEvent.SEND_DATA]: {
3648
3651
  playerUI: PlayerUI;
3649
- data: object;
3652
+ data: Record<string, any>;
3650
3653
  };
3651
3654
  }
3652
3655