@defold-typescript/types 0.50.1 → 0.51.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 (88) hide show
  1. package/api-signatures.json +286 -232
  2. package/examples/translations.json +15 -15
  3. package/fixtures/messages_doc.json +20 -39
  4. package/generated/builtin-messages.d.ts +16 -14
  5. package/generated/collectionfactory.d.ts +1 -1
  6. package/generated/collectionproxy.d.ts +2 -2
  7. package/generated/factory.d.ts +4 -2
  8. package/generated/graphics.d.ts +4 -0
  9. package/generated/gui.d.ts +2 -2
  10. package/generated/http.d.ts +3 -1
  11. package/generated/image.d.ts +1 -1
  12. package/generated/kinds/gui-script.d.ts +1 -0
  13. package/generated/kinds/render-script.d.ts +1 -0
  14. package/generated/kinds/script.d.ts +1 -0
  15. package/generated/model.d.ts +4 -5
  16. package/generated/physics.d.ts +3 -3
  17. package/generated/render.d.ts +41 -13
  18. package/generated/sys.d.ts +8 -4
  19. package/generated/tilemap.d.ts +4 -4
  20. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +1 -1
  21. package/generated/versions/defold-1.12.4/collectionproxy.d.ts +1 -1
  22. package/generated/versions/defold-1.12.4/factory.d.ts +4 -2
  23. package/generated/versions/defold-1.12.4/gui.d.ts +2 -2
  24. package/generated/versions/defold-1.12.4/http.d.ts +3 -1
  25. package/generated/versions/defold-1.12.4/image.d.ts +1 -1
  26. package/generated/versions/defold-1.12.4/index.d.ts +1 -0
  27. package/generated/versions/defold-1.12.4/model.d.ts +4 -5
  28. package/generated/versions/defold-1.12.4/physics.d.ts +2 -2
  29. package/generated/versions/defold-1.12.4/render.d.ts +41 -13
  30. package/generated/versions/defold-1.12.4/sys.d.ts +1 -1
  31. package/generated/versions/defold-1.12.4/tilemap.d.ts +4 -4
  32. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +1 -1
  33. package/generated/versions/defold-1.13.0/collectionproxy.d.ts +1 -1
  34. package/generated/versions/defold-1.13.0/factory.d.ts +4 -2
  35. package/generated/versions/defold-1.13.0/gui.d.ts +2 -2
  36. package/generated/versions/defold-1.13.0/http.d.ts +3 -1
  37. package/generated/versions/defold-1.13.0/image.d.ts +1 -1
  38. package/generated/versions/defold-1.13.0/index.d.ts +1 -0
  39. package/generated/versions/defold-1.13.0/model.d.ts +4 -5
  40. package/generated/versions/defold-1.13.0/physics.d.ts +2 -2
  41. package/generated/versions/defold-1.13.0/render.d.ts +41 -13
  42. package/generated/versions/defold-1.13.0/sys.d.ts +1 -1
  43. package/generated/versions/defold-1.13.0/tilemap.d.ts +4 -4
  44. package/generated/versions/defold-1.13.1/collectionfactory.d.ts +1 -1
  45. package/generated/versions/defold-1.13.1/collectionproxy.d.ts +1 -1
  46. package/generated/versions/defold-1.13.1/factory.d.ts +4 -2
  47. package/generated/versions/defold-1.13.1/gui.d.ts +2 -2
  48. package/generated/versions/defold-1.13.1/http.d.ts +3 -1
  49. package/generated/versions/defold-1.13.1/image.d.ts +1 -1
  50. package/generated/versions/defold-1.13.1/index.d.ts +1 -0
  51. package/generated/versions/defold-1.13.1/model.d.ts +4 -5
  52. package/generated/versions/defold-1.13.1/physics.d.ts +2 -2
  53. package/generated/versions/defold-1.13.1/render.d.ts +41 -13
  54. package/generated/versions/defold-1.13.1/sys.d.ts +1 -1
  55. package/generated/versions/defold-1.13.1/tilemap.d.ts +4 -4
  56. package/generated/versions/defold-1.13.2/collectionfactory.d.ts +1 -1
  57. package/generated/versions/defold-1.13.2/collectionproxy.d.ts +2 -2
  58. package/generated/versions/defold-1.13.2/factory.d.ts +4 -2
  59. package/generated/versions/defold-1.13.2/gui.d.ts +2 -2
  60. package/generated/versions/defold-1.13.2/http.d.ts +3 -1
  61. package/generated/versions/defold-1.13.2/image.d.ts +1 -1
  62. package/generated/versions/defold-1.13.2/index.d.ts +1 -0
  63. package/generated/versions/defold-1.13.2/model.d.ts +4 -5
  64. package/generated/versions/defold-1.13.2/physics.d.ts +3 -3
  65. package/generated/versions/defold-1.13.2/render.d.ts +41 -13
  66. package/generated/versions/defold-1.13.2/sys.d.ts +8 -4
  67. package/generated/versions/defold-1.13.2/tilemap.d.ts +4 -4
  68. package/generated/versions/defold-1.13.2/window.d.ts +1 -1
  69. package/generated/window.d.ts +1 -1
  70. package/identity-vocabulary.json +46 -0
  71. package/index.d.ts +1 -0
  72. package/package.json +2 -1
  73. package/scripts/generate-api-availability.ts +5 -1
  74. package/scripts/generate-api-signatures.ts +16 -11
  75. package/scripts/materialize-version.ts +7 -1
  76. package/scripts/regen.ts +42 -25
  77. package/src/component-properties.d.ts +137 -6
  78. package/src/core-types.ts +46 -11
  79. package/src/emit-dts.ts +555 -84
  80. package/src/emit-messages.ts +289 -0
  81. package/src/engine-globals.d.ts +3 -1
  82. package/src/go-overloads.d.ts +13 -3
  83. package/src/lifecycle.ts +16 -16
  84. package/src/luals-type-expr.ts +6 -1
  85. package/src/physics-event-guard.d.ts +39 -0
  86. package/src/render-overloads.d.ts +2 -2
  87. package/src/return-correction-provenance.ts +36 -6
  88. package/src/window-event-guard.d.ts +5 -3
@@ -338,7 +338,7 @@
338
338
  "factory.create": [
339
339
  {
340
340
  "sourceHash": "df32ef57d1e2366e",
341
- "ts": "export default defineScript({\n init(self) {\n // create a new game object and provide property values\n const created = factory.create(\"#factory\", undefined, undefined, { my_value: 1 });\n // communicate with the object\n msg.post(created, \"hello\");\n },\n});"
341
+ "ts": "export default defineScript({\n init(self) {\n // create a new game object and provide property values\n const created = factory.create(\"#factory\", undefined, undefined, { my_value: 1 });\n // communicate with the object\n if (created !== undefined) {\n msg.post(created, \"hello\");\n }\n },\n});"
342
342
  },
343
343
  {
344
344
  "sourceHash": "981a4891837250a9",
@@ -1072,7 +1072,7 @@
1072
1072
  "model.play_anim": [
1073
1073
  {
1074
1074
  "sourceHash": "64d6b46054d23a1b",
1075
- "ts": "// The following examples assume that the model has id \"model\".\n// How to play the \"jump\" animation followed by the \"run\" animation:\nconst url = msg.url(\"#model\");\n\nfunction anim_done(self: unknown, message_id: unknown, message: unknown, sender: unknown) {\n if (message_id === hash(\"model_animation_done\")) {\n const { animation_id } = message as { animation_id: Hash };\n if (animation_id === hash(\"jump\")) {\n // open animation done, chain with \"run\"\n const properties = { blend_duration: 0.2 };\n model.play_anim(url, \"run\", go.PLAYBACK_LOOP_FORWARD, properties, anim_done);\n }\n }\n}\n\nexport default defineScript({\n init(self) {\n const play_properties = { blend_duration: 0.1 };\n // first blend during 0.1 sec into the jump, then during 0.2 s into the run animation\n model.play_anim(url, \"jump\", go.PLAYBACK_ONCE_FORWARD, play_properties, anim_done);\n },\n});"
1075
+ "ts": "// The following examples assume that the model has id \"model\".\n// How to play the \"jump\" animation followed by the \"run\" animation:\nconst url = msg.url(\"#model\");\n\nfunction anim_done(self: unknown, message_id: Hash, message: { animation_id: Hash }) {\n if (message_id === hash(\"model_animation_done\")) {\n if (message.animation_id === hash(\"jump\")) {\n // open animation done, chain with \"run\"\n const properties = { blend_duration: 0.2 };\n model.play_anim(url, \"run\", go.PLAYBACK_LOOP_FORWARD, properties, anim_done);\n }\n }\n}\n\nexport default defineScript({\n init(self) {\n const play_properties = { blend_duration: 0.1 };\n // first blend during 0.1 sec into the jump, then during 0.2 s into the run animation\n model.play_anim(url, \"jump\", go.PLAYBACK_ONCE_FORWARD, play_properties, anim_done);\n },\n});"
1076
1076
  }
1077
1077
  ],
1078
1078
  "model.reset_constant": [
@@ -1198,7 +1198,7 @@
1198
1198
  "physics.raycast": [
1199
1199
  {
1200
1200
  "sourceHash": "3e0c534d741f0120",
1201
- "ts": "function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash; request_id: number }) {\n // act on the hit (see 'ray_cast_response')\n}\n\n// How to perform a ray cast synchronously:\nexport default defineScript({\n init() {\n return { groups: [hash(\"world\"), hash(\"enemy\")] };\n },\n\n update(self, dt) {\n // request ray cast\n const from = go.get_world_position();\n const to = vmath.vector3(from.x, from.y - 100, from.z);\n const results = physics.raycast(from, to, self.groups, { all: true });\n if (results !== undefined) {\n // with `all` set, the ray cast returns every hit as a list\n for (const result of Array.isArray(results) ? results : [results]) {\n handle_result(result);\n }\n }\n },\n});"
1201
+ "ts": "function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash }) {\n // act on the hit (see 'ray_cast_response')\n}\n\n// How to perform a ray cast synchronously:\nexport default defineScript({\n init() {\n return { groups: [hash(\"world\"), hash(\"enemy\")] };\n },\n\n update(self, dt) {\n // request ray cast\n const from = go.get_world_position();\n const to = vmath.vector3(from.x, from.y - 100, from.z);\n const results = physics.raycast(from, to, self.groups, { all: true });\n if (results !== undefined) {\n // with `all` set, the ray cast returns every hit as a list\n for (const result of Array.isArray(results) ? results : [results]) {\n handle_result(result);\n }\n }\n },\n});"
1202
1202
  }
1203
1203
  ],
1204
1204
  "physics.raycast_async": [
@@ -1358,7 +1358,7 @@
1358
1358
  "render.delete_render_target": [
1359
1359
  {
1360
1360
  "sourceHash": "e535502af5d49877",
1361
- "ts": "export default defineRenderScript({\n init() {\n return { my_render_target: render.render_target(\"my_target\", {}) };\n },\n\n final(self) {\n // How to delete a render target:\n render.delete_render_target(self.my_render_target);\n },\n});"
1361
+ "ts": "export default defineRenderScript({\n init() {\n return { my_render_target: render.render_target(\"my_target\", {}) };\n },\n\n // A render script has no final hook, so free the target on a message.\n on_message(self, message_id) {\n if (message_id === hash(\"release_target\")) {\n // How to delete a render target:\n render.delete_render_target(self.my_render_target);\n }\n },\n});"
1362
1362
  }
1363
1363
  ],
1364
1364
  "render.disable_material": [
@@ -1376,13 +1376,13 @@
1376
1376
  "render.disable_texture": [
1377
1377
  {
1378
1378
  "sourceHash": "77eefc5b608dd2e6",
1379
- "ts": "export default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);\n // draw a predicate with the render target available as texture 0 in the predicate\n // material shader.\n render.draw(self.my_pred);\n // done, disable the texture\n render.disable_texture(0);\n },\n});"
1379
+ "ts": "export default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);\n // draw a predicate with the render target available as texture 0 in the predicate\n // material shader.\n render.draw(self.my_pred);\n // done, disable the texture\n render.disable_texture(0);\n },\n});"
1380
1380
  }
1381
1381
  ],
1382
1382
  "render.dispatch_compute": [
1383
1383
  {
1384
1384
  "sourceHash": "75d02543f0e1f325",
1385
- "ts": "export default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n backing_texture: resource.get_texture_info(\"/main/backing.texturec\").handle,\n scene_rt: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n };\n },\n\n update(self, dt) {\n render.set_compute(\"bloom\");\n render.enable_texture(0, self.backing_texture);\n render.enable_texture(1, self.scene_rt);\n render.dispatch_compute(128, 128, 1);\n render.set_compute();\n },\n});"
1385
+ "ts": "export default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n backing_texture: resource.get_texture_info(\"/main/backing.texturec\").handle,\n scene_rt: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n render.set_compute(\"bloom\");\n render.enable_texture(0, self.backing_texture);\n render.enable_texture(1, self.scene_rt);\n render.dispatch_compute(128, 128, 1);\n render.set_compute();\n },\n});"
1386
1386
  },
1387
1387
  {
1388
1388
  "sourceHash": "839cd1accd7a318c",
@@ -1428,7 +1428,7 @@
1428
1428
  "render.enable_texture": [
1429
1429
  {
1430
1430
  "sourceHash": "410c8dd98e44842a",
1431
- "ts": "export default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n\n // disable target\n render.set_render_target(render.RENDER_TARGET_DEFAULT);\n\n render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);\n // draw a predicate with the render target available as texture 0 in the predicate\n // material shader.\n render.draw(self.my_pred);\n },\n});"
1431
+ "ts": "export default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n\n // disable target\n render.set_render_target(render.RENDER_TARGET_DEFAULT);\n\n render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);\n // draw a predicate with the render target available as texture 0 in the predicate\n // material shader.\n render.draw(self.my_pred);\n },\n});"
1432
1432
  },
1433
1433
  {
1434
1434
  "sourceHash": "dc0ea083dbea5fe1",
@@ -1448,13 +1448,13 @@
1448
1448
  "render.get_render_target_height": [
1449
1449
  {
1450
1450
  "sourceHash": "f509a9b954573583",
1451
- "ts": "export default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n target_right: render.render_target(\"right\", {\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n }),\n };\n },\n\n update(self, dt) {\n // get the height of the render target color buffer\n const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);\n // get the height of a render target resource\n const w = render.get_render_target_height(\"my_rt_resource\", graphics.BUFFER_TYPE_COLOR0_BIT);\n },\n});"
1451
+ "ts": "export default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n target_right: render.render_target(\"right\", {\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n }),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // get the height of the render target color buffer\n const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);\n // get the height of a render target resource\n const w = render.get_render_target_height(\"my_rt_resource\", graphics.BUFFER_TYPE_COLOR0_BIT);\n },\n});"
1452
1452
  }
1453
1453
  ],
1454
1454
  "render.get_render_target_width": [
1455
1455
  {
1456
1456
  "sourceHash": "25c6d828a4ae3706",
1457
- "ts": "export default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n target_right: render.render_target(\"right\", {\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n }),\n };\n },\n\n update(self, dt) {\n // get the width of the render target color buffer\n const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);\n // get the width of a render target resource\n const w2 = render.get_render_target_width(\"my_rt_resource\", graphics.BUFFER_TYPE_COLOR0_BIT);\n },\n});"
1457
+ "ts": "export default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n target_right: render.render_target(\"right\", {\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n }),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // get the width of the render target color buffer\n const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);\n // get the width of a render target resource\n const w2 = render.get_render_target_width(\"my_rt_resource\", graphics.BUFFER_TYPE_COLOR0_BIT);\n },\n});"
1458
1458
  }
1459
1459
  ],
1460
1460
  "render.get_width": [
@@ -1484,15 +1484,15 @@
1484
1484
  "render.render_target": [
1485
1485
  {
1486
1486
  "sourceHash": "0c72f5142a3a57da",
1487
- "ts": "// How to create a new render target and draw to it:\nexport default defineRenderScript({\n init() {\n // render target buffer parameters\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const depth_params = {\n format: graphics.TEXTURE_FORMAT_DEPTH,\n width: render.get_window_width(),\n height: render.get_window_height(),\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n [graphics.BUFFER_TYPE_DEPTH_BIT]: depth_params,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1487
+ "ts": "// How to create a new render target and draw to it:\nexport default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n // render target buffer parameters\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const depth_params = {\n format: graphics.TEXTURE_FORMAT_DEPTH,\n width: render.get_window_width(),\n height: render.get_window_height(),\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n [graphics.BUFFER_TYPE_DEPTH_BIT]: depth_params,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1488
1488
  },
1489
1489
  {
1490
1490
  "sourceHash": "271ca31f05e103b5",
1491
- "ts": "// How to create a render target with multiple outputs:\nexport default defineRenderScript({\n init() {\n // render target buffer parameters\n const color_params_rgba = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const color_params_float = {\n format: graphics.TEXTURE_FORMAT_RG32F,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n\n // the engine registers the extra color attachments only when the driver supports them\n const color1 = graphics.BUFFER_TYPE_COLOR1_BIT;\n const color2 = graphics.BUFFER_TYPE_COLOR2_BIT;\n if (color1 === undefined || color2 === undefined) return undefined;\n\n // Create a render target with three color attachments\n // Note: No depth buffer is attached here\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params_rgba,\n [color1]: color_params_rgba,\n [color2]: color_params_float,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // set target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1491
+ "ts": "// How to create a render target with multiple outputs:\nexport default defineRenderScript({\n init() {\n // the engine registers a texture format or an extra color attachment only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n const rg32f = graphics.TEXTURE_FORMAT_RG32F;\n const color1 = graphics.BUFFER_TYPE_COLOR1_BIT;\n const color2 = graphics.BUFFER_TYPE_COLOR2_BIT;\n if (format === undefined || rg32f === undefined || color1 === undefined || color2 === undefined) return undefined;\n // render target buffer parameters\n const color_params_rgba = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const color_params_float = {\n format: rg32f,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n\n // Create a render target with three color attachments\n // Note: No depth buffer is attached here\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params_rgba,\n [color1]: color_params_rgba,\n [color2]: color_params_float,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // set target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1492
1492
  },
1493
1493
  {
1494
1494
  "sourceHash": "e39f13af5d65d01d",
1495
- "ts": "// How to create a render target with multiple outputs:\nexport default defineRenderScript({\n init() {\n // render target buffer parameters\n const color_params_rgba = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const color_params_float = {\n format: graphics.TEXTURE_FORMAT_RG32F,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n\n // Create a render target with three color attachments\n // Note: No depth buffer is attached here\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params_rgba,\n [graphics.BUFFER_TYPE_COLOR1_BIT]: color_params_rgba,\n [graphics.BUFFER_TYPE_COLOR2_BIT]: color_params_float,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1495
+ "ts": "// How to create a render target with multiple outputs:\nexport default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n const rg32f = graphics.TEXTURE_FORMAT_RG32F;\n if (format === undefined || rg32f === undefined) return undefined;\n // render target buffer parameters\n const color_params_rgba = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const color_params_float = {\n format: rg32f,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n\n // Create a render target with three color attachments\n // Note: No depth buffer is attached here\n return {\n my_render_target: render.render_target({\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params_rgba,\n [graphics.BUFFER_TYPE_COLOR1_BIT]: color_params_rgba,\n [graphics.BUFFER_TYPE_COLOR2_BIT]: color_params_float,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1496
1496
  },
1497
1497
  {
1498
1498
  "sourceHash": "582c319c90bcf7ad",
@@ -1500,7 +1500,7 @@
1500
1500
  },
1501
1501
  {
1502
1502
  "sourceHash": "eec69c97bf2815ed",
1503
- "ts": "// How to create a new render target and draw to it:\nexport default defineRenderScript({\n init() {\n // render target buffer parameters\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const depth_params = {\n format: graphics.TEXTURE_FORMAT_DEPTH,\n width: render.get_window_width(),\n height: render.get_window_height(),\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n return {\n my_render_target: render.render_target({\n sample_count: 4,\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n [graphics.BUFFER_TYPE_DEPTH_BIT]: depth_params,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1503
+ "ts": "// How to create a new render target and draw to it:\nexport default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n // render target buffer parameters\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n min_filter: graphics.TEXTURE_FILTER_LINEAR,\n mag_filter: graphics.TEXTURE_FILTER_LINEAR,\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n const depth_params = {\n format: graphics.TEXTURE_FORMAT_DEPTH,\n width: render.get_window_width(),\n height: render.get_window_height(),\n u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,\n };\n return {\n my_render_target: render.render_target({\n sample_count: 4,\n [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,\n [graphics.BUFFER_TYPE_DEPTH_BIT]: depth_params,\n }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // enable target so all drawing is done to it\n render.set_render_target(self.my_render_target);\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n },\n});"
1504
1504
  }
1505
1505
  ],
1506
1506
  "render.set_blend_equation_separate": [
@@ -1582,7 +1582,7 @@
1582
1582
  "render.set_render_target": [
1583
1583
  {
1584
1584
  "sourceHash": "c6e25f5038d19bee",
1585
- "ts": "// How to set a render target and draw to it and then switch back to the default render target\n// The render target defines the depth/stencil buffers as transient, when set_render_target is called the next time the buffers may be invalidated and allow for optimisations depending on driver support\nexport default defineRenderScript({\n init() {\n const color_params = {\n format: graphics.TEXTURE_FORMAT_RGBA,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n // set render target so all drawing is done to it\n render.set_render_target(self.my_render_target, {\n transient: [graphics.BUFFER_TYPE_DEPTH_BIT, graphics.BUFFER_TYPE_STENCIL_BIT],\n });\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n\n // set default render target. This also invalidates the depth and stencil buffers of the current target (self.my_render_target)\n // which can be an optimisation on some hardware\n render.set_render_target(render.RENDER_TARGET_DEFAULT);\n },\n});"
1585
+ "ts": "// How to set a render target and draw to it and then switch back to the default render target\n// The render target defines the depth/stencil buffers as transient, when set_render_target is called the next time the buffers may be invalidated and allow for optimisations depending on driver support\nexport default defineRenderScript({\n init() {\n // the engine registers a texture format only when the driver supports it\n const format = graphics.TEXTURE_FORMAT_RGBA;\n if (format === undefined) return undefined;\n const color_params = {\n format,\n width: render.get_window_width(),\n height: render.get_window_height(),\n };\n return {\n my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),\n my_pred: render.predicate([hash(\"my_tag\")]),\n };\n },\n\n update(self, dt) {\n if (self === undefined) return;\n // set render target so all drawing is done to it\n render.set_render_target(self.my_render_target, {\n transient: [graphics.BUFFER_TYPE_DEPTH_BIT, graphics.BUFFER_TYPE_STENCIL_BIT],\n });\n\n // draw a predicate to the render target\n render.draw(self.my_pred);\n\n // set default render target. This also invalidates the depth and stencil buffers of the current target (self.my_render_target)\n // which can be an optimisation on some hardware\n render.set_render_target(render.RENDER_TARGET_DEFAULT);\n },\n});"
1586
1586
  },
1587
1587
  {
1588
1588
  "sourceHash": "bb08db5e232c5b5e",
@@ -2261,7 +2261,7 @@
2261
2261
  "tilemap.get_tiles": [
2262
2262
  {
2263
2263
  "sourceHash": "61b14de4991f966b",
2264
- "ts": "const [left, bottom, columns_count, rows_count] = tilemap.get_bounds(\"#tilemap\");\nconst tiles = tilemap.get_tiles(\"#tilemap\", \"layer\");\nlet tile = 0;\nlet count = 0;\nfor (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {\n for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {\n tile = tiles.get(row_index)?.get(column_index) ?? 0;\n count = count + 1;\n }\n}"
2264
+ "ts": "const [left, bottom, columns_count, rows_count] = tilemap.get_bounds(\"#tilemap\");\nconst tiles = tilemap.get_tiles(\"#tilemap\", \"layer\");\nlet tile = 0;\nlet count = 0;\nfor (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {\n for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {\n tile = tiles?.get(row_index)?.get(column_index) ?? 0;\n count = count + 1;\n }\n}"
2265
2265
  }
2266
2266
  ],
2267
2267
  "tilemap.reset_constant": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "info": {
3
3
  "namespace": "builtin_messages",
4
- "version": "1.13.0",
4
+ "version": "1.14.0",
5
5
  "description": "Defold's built-in message ids and the payload shape each one carries."
6
6
  },
7
7
  "messages": [
@@ -37,14 +37,14 @@
37
37
  {
38
38
  "name": "parent_id",
39
39
  "types": ["hash"],
40
- "optional": true,
41
- "doc": "Hash of the new parent (omit or nil to clear)."
40
+ "optional": false,
41
+ "doc": "The id of the new parent."
42
42
  },
43
43
  {
44
44
  "name": "keep_world_transform",
45
45
  "types": ["0", "1"],
46
- "optional": true,
47
- "doc": "1 to preserve world transform; 0 (default) to keep local transform."
46
+ "optional": false,
47
+ "doc": "If the world transform of the instance should be preserved when changing spaces, 0 for false and 1 for true. The default value is 1."
48
48
  }
49
49
  ]
50
50
  },
@@ -58,6 +58,18 @@
58
58
  "types": ["hash"],
59
59
  "optional": false,
60
60
  "doc": "Hashed animation id."
61
+ },
62
+ {
63
+ "name": "offset",
64
+ "types": ["number"],
65
+ "optional": false,
66
+ "doc": "Normalized initial value of the animation cursor when the animation starts playing."
67
+ },
68
+ {
69
+ "name": "playback_rate",
70
+ "types": ["number"],
71
+ "optional": false,
72
+ "doc": "Rate the animation plays at. Must be positive."
61
73
  }
62
74
  ]
63
75
  },
@@ -288,12 +300,6 @@
288
300
  "origin": "physics",
289
301
  "description": "Reported when an asynchronous ray cast hits nothing.",
290
302
  "payload": [
291
- {
292
- "name": "group",
293
- "types": ["hash"],
294
- "optional": false,
295
- "doc": "Collision group mask used for the ray cast."
296
- },
297
303
  {
298
304
  "name": "request_id",
299
305
  "types": ["number"],
@@ -383,7 +389,7 @@
383
389
  {
384
390
  "name": "gain",
385
391
  "types": ["number"],
386
- "optional": false,
392
+ "optional": true,
387
393
  "doc": "Target gain between 0 and 1."
388
394
  }
389
395
  ]
@@ -396,7 +402,7 @@
396
402
  {
397
403
  "name": "play_id",
398
404
  "types": ["number"],
399
- "optional": false,
405
+ "optional": true,
400
406
  "doc": "The id passed to play_sound."
401
407
  }
402
408
  ]
@@ -409,7 +415,7 @@
409
415
  {
410
416
  "name": "play_id",
411
417
  "types": ["number"],
412
- "optional": false,
418
+ "optional": true,
413
419
  "doc": "The id passed to play_sound."
414
420
  }
415
421
  ]
@@ -507,31 +513,6 @@
507
513
  }
508
514
  ]
509
515
  },
510
- {
511
- "name": "set_view_projection",
512
- "origin": "render",
513
- "description": "Posted automatically by camera components to the render script with the active view and projection matrices.",
514
- "payload": [
515
- {
516
- "name": "id",
517
- "types": ["hash"],
518
- "optional": false,
519
- "doc": "Id of the camera component that posted the matrices."
520
- },
521
- {
522
- "name": "view",
523
- "types": ["matrix4"],
524
- "optional": false,
525
- "doc": "View matrix of the camera."
526
- },
527
- {
528
- "name": "projection",
529
- "types": ["matrix4"],
530
- "optional": false,
531
- "doc": "Projection matrix of the camera."
532
- }
533
- ]
534
- },
535
516
  {
536
517
  "name": "draw_line",
537
518
  "origin": "render",
@@ -9,10 +9,10 @@ declare global {
9
9
  apply_force: { force: Vector3; position: Vector3 };
10
10
  async_load: Record<string, never>;
11
11
  clear_color: { color: Vector4 };
12
- collision_event: { a: Record<string | number, unknown>; b: Record<string | number, unknown> };
13
- collision_response: { other_id: Hash; other_position: Vector3; other_group: Hash; own_group: Hash };
14
- contact_point_event: { applied_impulse: number; distance: number; a: Record<string | number, unknown>; b: Record<string | number, unknown> };
15
- contact_point_response: { position: Vector3; normal: Vector3; relative_velocity: Vector3; distance: number; applied_impulse: number; life_time: number; mass: number; other_mass: number; other_id: Hash; other_position: Vector3; other_group: Hash; own_group: Hash };
12
+ collision_event: { a: { position: Vector3; id: Hash; group: Hash }; b: { position: Vector3; id: Hash; group: Hash } };
13
+ collision_response: { other_id: Hash; other_position: Vector3; other_group: Hash; own_group: Hash; group: Hash };
14
+ contact_point_event: { applied_impulse: number; distance: number; a: { position: Vector3; instance_position: Vector3; normal: Vector3; relative_velocity: Vector3; mass: number; id: Hash; group: Hash }; b: { position: Vector3; instance_position: Vector3; normal: Vector3; relative_velocity: Vector3; mass: number; id: Hash; group: Hash } };
15
+ contact_point_response: { position: Vector3; normal: Vector3; relative_velocity: Vector3; distance: number; applied_impulse: number; life_time: number; mass: number; other_mass: number; other_id: Hash; other_position: Vector3; other_group: Hash; own_group: Hash; group: Hash };
16
16
  disable: Record<string, never>;
17
17
  draw_debug_text: { position: Vector3; text: string; color: Vector4 };
18
18
  draw_line: { start_point: Vector3; end_point: Vector3; color: Vector4 };
@@ -23,23 +23,25 @@ declare global {
23
23
  layout_changed: { id: Hash; previous_id: Hash };
24
24
  load: Record<string, never>;
25
25
  model_animation_done: { animation_id: Hash; playback: number };
26
- play_animation: { id: Hash };
27
- play_sound: { delay?: number; gain?: number; play_id?: number; start_time?: number; start_frame?: number };
26
+ pause_sound: { pause?: boolean };
27
+ play_animation: { id: Hash; offset?: number; playback_rate?: number };
28
+ play_sound: { delay?: number; gain?: number; play_id?: number; start_time?: number; start_frame?: number; pan?: number; speed?: number };
28
29
  proxy_error: { code: number };
29
30
  proxy_loaded: Record<string, never>;
30
31
  proxy_loading: { progress: number };
31
32
  proxy_ready: Record<string, never>;
32
33
  proxy_unloaded: Record<string, never>;
33
- ray_cast_missed: { group: Hash; request_id: number };
34
+ ray_cast_missed: { request_id: number };
34
35
  ray_cast_response: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash; request_id: number };
35
- reboot: { arg1: string; arg2: string; arg3: string; arg4: string; arg5: string; arg6: string };
36
+ reboot: { arg1?: string; arg2?: string; arg3?: string; arg4?: string; arg5?: string; arg6?: string };
36
37
  /** @deprecated since 1.13.0 */
37
38
  release_camera_focus: Record<string, never>;
38
39
  release_input_focus: Record<string, never>;
39
40
  resize: { height: number; width: number };
40
41
  resume_rendering: Record<string, never>;
41
- set_camera: { aspect_ratio: number; fov: number; near_z: number; far_z: number; orthographic_projection: number; orthographic_zoom: number; orthographic_mode: number };
42
- set_gain: { gain: number };
42
+ set_camera: { aspect_ratio: number; fov: number; near_z: number; far_z: number; orthographic_projection?: number; orthographic_zoom?: number; orthographic_mode?: number };
43
+ set_gain: { gain?: number };
44
+ set_pan: { pan?: number };
43
45
  set_parent: { parent_id?: Hash; keep_world_transform?: 0 | 1 };
44
46
  set_time_step: { factor: number; mode: number };
45
47
  set_update_frequency: { frequency: number };
@@ -47,16 +49,16 @@ declare global {
47
49
  set_vsync: { swap_interval: number };
48
50
  sound_done: { play_id: number };
49
51
  sound_stopped: { play_id: number };
50
- start_record: { file_name: string; frame_period: number; fps: number };
52
+ start_record: { file_name: string; frame_period?: number; fps?: number };
51
53
  stop_record: Record<string, never>;
52
- stop_sound: Record<string, never>;
54
+ stop_sound: { play_id?: number };
53
55
  text_object_clicked: { id: Hash; type: Hash; src: string };
54
56
  text_object_hovered: { id: Hash; type: Hash; src: string };
55
57
  text_object_unhovered: { id: Hash; type: Hash; src: string };
56
58
  toggle_physics_debug: Record<string, never>;
57
59
  toggle_profile: Record<string, never>;
58
- trigger_event: { enter: boolean; a: Record<string | number, unknown>; b: Record<string | number, unknown> };
59
- trigger_response: { other_id: Hash; enter: boolean; other_group: Hash; own_group: Hash };
60
+ trigger_event: { enter: boolean; a: { id: Hash; group: Hash }; b: { id: Hash; group: Hash } };
61
+ trigger_response: { other_id: Hash; enter: boolean; other_group: Hash; own_group: Hash; group: Hash };
60
62
  unload: Record<string, never>;
61
63
  window_resized: { height: number; width: number };
62
64
  }
@@ -86,7 +86,7 @@ declare global {
86
86
  * }
87
87
  * ```
88
88
  */
89
- function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: LuaMap<Hash, Record<string | number, unknown>> | Record<string, Record<string | number, unknown>>, scale?: number | Vector3): LuaTable<Hash, Hash>;
89
+ function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: LuaMap<Hash, Record<string | number, unknown>> | Record<string, Record<string | number, unknown>>, scale?: number | Vector3): LuaTable<Hash, Hash> & { get: LuaTableGetMethod<string, Hash> };
90
90
  /**
91
91
  * This returns status of the collection factory.
92
92
  * Calling this function when the factory is not marked as dynamic loading always returns COMP_COLLECTION_FACTORY_STATUS_LOADED.
@@ -78,7 +78,7 @@ declare global {
78
78
  * });
79
79
  * ```
80
80
  */
81
- function load(url: string | Hash | Url, options: {} | undefined, callback: (self: unknown, message_id: Hash, message: Record<string | number, unknown>, sender: Url) => void): void;
81
+ function load(url: string | Hash | Url, options: {} | undefined, callback: (self: unknown, message_id: Hash, message: collectionproxy.load_data, sender: Url) => void): void;
82
82
  /**
83
83
  * The collection should be loaded by the collection proxy.
84
84
  * Setting the collection to "nil" will revert it back to the original collection.
@@ -102,7 +102,7 @@ declare global {
102
102
  * msg.post("/go#collectionproxy", "enable");
103
103
  * ```
104
104
  */
105
- function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, collectionproxy.RESULT]>;
105
+ function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, collectionproxy.RESULT | undefined]>;
106
106
  }
107
107
  }
108
108
 
@@ -43,7 +43,9 @@ declare global {
43
43
  * // create a new game object and provide property values
44
44
  * const created = factory.create("#factory", undefined, undefined, { my_value: 1 });
45
45
  * // communicate with the object
46
- * msg.post(created, "hello");
46
+ * if (created !== undefined) {
47
+ * msg.post(created, "hello");
48
+ * }
47
49
  * },
48
50
  * });
49
51
  * ```
@@ -59,7 +61,7 @@ declare global {
59
61
  * });
60
62
  * ```
61
63
  */
62
- function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: LuaMap<string | Hash, unknown> | Record<string, unknown>, scale?: number | Vector3): Hash;
64
+ function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: LuaMap<string | Hash, unknown> | Record<string, unknown>, scale?: number | Vector3): Hash | undefined;
63
65
  /**
64
66
  * This returns status of the factory.
65
67
  * Calling this function when the factory is not marked as dynamic loading always returns
@@ -109,6 +109,10 @@ declare global {
109
109
  * Maximum bindable storage-buffer range in bytes.
110
110
  */
111
111
  max_storage_buffer_range: number;
112
+ /**
113
+ * Maximum number of storage buffers per shader stage.
114
+ */
115
+ max_storage_buffers_per_stage: number;
112
116
  }
113
117
  type BufferType = typeof graphics.BUFFER_TYPE_COLOR0_BIT | typeof graphics.BUFFER_TYPE_COLOR1_BIT | typeof graphics.BUFFER_TYPE_COLOR2_BIT | typeof graphics.BUFFER_TYPE_COLOR3_BIT | typeof graphics.BUFFER_TYPE_DEPTH_BIT | typeof graphics.BUFFER_TYPE_STENCIL_BIT;
114
118
  type State = typeof graphics.STATE_DEPTH_TEST | typeof graphics.STATE_STENCIL_TEST | typeof graphics.STATE_BLEND | typeof graphics.STATE_ALPHA_TEST | typeof graphics.STATE_CULL_FACE | typeof graphics.STATE_POLYGON_OFFSET_FILL;
@@ -668,7 +668,7 @@ declare global {
668
668
  * @param node - root node to clone
669
669
  * @returns a table mapping node ids to the corresponding cloned nodes
670
670
  */
671
- function clone_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">>;
671
+ function clone_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">> & { get: LuaTableGetMethod<string, Opaque<"node">> };
672
672
  /**
673
673
  * Deletes the specified node. Any child nodes of the specified node will be
674
674
  * recursively deleted.
@@ -1177,7 +1177,7 @@ declare global {
1177
1177
  * @param node - root node to get node tree from
1178
1178
  * @returns a table mapping node ids to the corresponding nodes
1179
1179
  */
1180
- function get_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">>;
1180
+ function get_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">> & { get: LuaTableGetMethod<string, Opaque<"node">> };
1181
1181
  /**
1182
1182
  * gets the node type
1183
1183
  *
@@ -43,6 +43,8 @@ declare global {
43
43
  * script_instance The current script instance
44
44
  * `id`
45
45
  * hash Internal message identifier. Do not use!
46
+ *
47
+ * With `report_progress` set, the callback also receives progress events carrying `bytes_sent`, `bytes_received`, `bytes_total` and `url` but no `status`; `response.bytes_received !== undefined` marks a progress event, since a final response never carries it.
46
48
  * @param headers - optional table with custom headers
47
49
  * @param post_data - optional data to send
48
50
  * @param options - optional request options
@@ -76,7 +78,7 @@ declare global {
76
78
  * });
77
79
  * ```
78
80
  */
79
- function request(url: string, method: string, callback: (self: unknown, id: Hash, response: { status: number; response?: string; headers?: LuaMap<string, string>; path?: string; error?: string; bytes_received?: number; bytes_total?: number; range_start?: number; range_end?: number; document_size?: number }) => void, headers?: LuaMap<string, string> | Record<string, string>, post_data?: string, options?: http.request_options): void;
81
+ function request(url: string, method: string, callback: (self: unknown, id: Hash, response: { status: number; url: string; response?: string; headers?: LuaMap<string, string>; path?: string; error?: string; bytes_sent?: number; bytes_received?: number; bytes_total?: number; range_start?: number; range_end?: number; document_size?: number }) => void, headers?: LuaMap<string, string> | Record<string, string>, post_data?: string, options?: http.request_options): void;
80
82
  }
81
83
  }
82
84
 
@@ -122,7 +122,7 @@ declare global {
122
122
  * }
123
123
  * ```
124
124
  */
125
- function get_astc_header(buffer: string): image.astc_header | undefined;
125
+ function get_astc_header(buffer: string): image.astc_header;
126
126
  /**
127
127
  * Load image (PNG or JPEG) from buffer.
128
128
  *
@@ -52,6 +52,7 @@ import "../../src/engine-globals";
52
52
  import "../../src/go-overloads";
53
53
  import "../../src/message-guard";
54
54
  import "../../src/msg-overloads";
55
+ import "../../src/physics-event-guard";
55
56
  import "../../src/scene-addresses";
56
57
  import "../../src/sys-overloads";
57
58
  import "../../src/vmath-overloads";
@@ -52,6 +52,7 @@ import "../../src/engine-globals";
52
52
  import "../../src/go-overloads";
53
53
  import "../../src/message-guard";
54
54
  import "../../src/msg-overloads";
55
+ import "../../src/physics-event-guard";
55
56
  import "../../src/render-overloads";
56
57
  import "../../src/scene-addresses";
57
58
  import "../../src/sys-overloads";
@@ -52,6 +52,7 @@ import "../../src/engine-globals";
52
52
  import "../../src/go-overloads";
53
53
  import "../../src/message-guard";
54
54
  import "../../src/msg-overloads";
55
+ import "../../src/physics-event-guard";
55
56
  import "../../src/scene-addresses";
56
57
  import "../../src/sys-overloads";
57
58
  import "../../src/vmath-overloads";
@@ -164,10 +164,9 @@ declare global {
164
164
  * // How to play the "jump" animation followed by the "run" animation:
165
165
  * const url = msg.url("#model");
166
166
  *
167
- * function anim_done(self: unknown, message_id: unknown, message: unknown, sender: unknown) {
167
+ * function anim_done(self: unknown, message_id: Hash, message: { animation_id: Hash }) {
168
168
  * if (message_id === hash("model_animation_done")) {
169
- * const { animation_id } = message as { animation_id: Hash };
170
- * if (animation_id === hash("jump")) {
169
+ * if (message.animation_id === hash("jump")) {
171
170
  * // open animation done, chain with "run"
172
171
  * const properties = { blend_duration: 0.2 };
173
172
  * model.play_anim(url, "run", go.PLAYBACK_LOOP_FORWARD, properties, anim_done);
@@ -184,7 +183,7 @@ declare global {
184
183
  * });
185
184
  * ```
186
185
  */
187
- function play_anim(url: string | Hash | Url, anim_id: string | Hash, playback: go.PLAYBACK, play_properties?: model.play_properties, complete_function?: (self: unknown, message_id: Hash, message: BuiltinMessages["model_animation_done"], sender: Url) => void): void;
186
+ function play_anim(url: string | Hash | Url, anim_id: string | Hash, playback: go.PLAYBACK, play_properties?: model.play_properties, complete_function?: (self: unknown, message_id: Hash, message: BuiltinMessages["model_animation_done"]) => void): void;
188
187
  /**
189
188
  * Resets a shader constant for a model component.
190
189
  * The constant must be defined in the material assigned to the model.
@@ -238,7 +237,7 @@ declare global {
238
237
  /**
239
238
  * The current animation set on the component. The type of the property is hash.
240
239
  */
241
- animation: Hash;
240
+ readonly animation: Hash;
242
241
  /**
243
242
  * The normalized animation cursor. The type of the property is number.
244
243
  * Please note that model events may not fire as expected when the cursor is manipulated directly.
@@ -6,7 +6,7 @@ declare global {
6
6
  * Collision object physics API documentation
7
7
  */
8
8
  namespace physics {
9
- type event = BuiltinMessages["contact_point_event"] | BuiltinMessages["collision_event"] | BuiltinMessages["trigger_event"] | BuiltinMessages["ray_cast_response"] | BuiltinMessages["ray_cast_missed"];
9
+ type event = BuiltinMessages["contact_point_event"] & { type: Hash<"contact_point_event"> } | BuiltinMessages["collision_event"] & { type: Hash<"collision_event"> } | BuiltinMessages["trigger_event"] & { type: Hash<"trigger_event"> } | BuiltinMessages["ray_cast_response"] & { type: Hash<"ray_cast_response"> } | BuiltinMessages["ray_cast_missed"] & { type: Hash<"ray_cast_missed"> };
10
10
  /**
11
11
  * The available fields depend on the joint type.
12
12
  */
@@ -366,7 +366,7 @@ declare global {
366
366
  * @returns It returns a list. If missed it returns `nil`. See ray_cast_response for details on the returned values.
367
367
  * @example
368
368
  * ```ts
369
- * function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash; request_id: number }) {
369
+ * function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash }) {
370
370
  * // act on the hit (see 'ray_cast_response')
371
371
  * }
372
372
  *
@@ -391,7 +391,7 @@ declare global {
391
391
  * });
392
392
  * ```
393
393
  */
394
- function raycast(from: Vector3, to: Vector3, groups: Hash[], options?: physics.raycast_options): BuiltinMessages["ray_cast_response"][] | BuiltinMessages["ray_cast_response"] | undefined;
394
+ function raycast(from: Vector3, to: Vector3, groups: Hash[], options?: physics.raycast_options): Omit<BuiltinMessages["ray_cast_response"], "request_id">[] | Omit<BuiltinMessages["ray_cast_response"], "request_id"> | undefined;
395
395
  /**
396
396
  * Ray casts are used to test for intersections against collision objects in the physics world.
397
397
  * Collision objects of types kinematic, dynamic and static are tested against. Trigger objects