@defold-typescript/types 0.50.0 → 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
@@ -15,7 +15,7 @@ declare global {
15
15
  */
16
16
  use_frustum?: boolean;
17
17
  }
18
- type constant_buffer = Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
18
+ type constant_buffer = Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
19
19
  /**
20
20
  * Debug-draw options
21
21
  */
@@ -36,7 +36,7 @@ declare global {
36
36
  /**
37
37
  * Constants used by the compute program. The values are copied when `render.dispatch_compute()` is called.
38
38
  */
39
- constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
39
+ constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
40
40
  }
41
41
  /**
42
42
  * Render draw options
@@ -53,7 +53,7 @@ declare global {
53
53
  /**
54
54
  * Constants used while rendering. The values are copied when `render.draw()` is called.
55
55
  */
56
- constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
56
+ constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
57
57
  /**
58
58
  * World-entry sort order. The default is the renderer's preferred back-to-front order.
59
59
  */
@@ -118,6 +118,7 @@ declare global {
118
118
  }
119
119
  type texture = Opaque<"texture">;
120
120
  type ClearBufferKey = typeof graphics.BUFFER_TYPE_COLOR0_BIT | typeof graphics.BUFFER_TYPE_DEPTH_BIT | typeof graphics.BUFFER_TYPE_STENCIL_BIT;
121
+ type RenderTargetParams = render.render_target_params;
121
122
  type CONTEXT_EVENT = typeof render.CONTEXT_EVENT_CONTEXT_LOST | typeof render.CONTEXT_EVENT_CONTEXT_RESTORED;
122
123
  type FRUSTUM_PLANES = typeof render.FRUSTUM_PLANES_ALL | typeof render.FRUSTUM_PLANES_SIDES;
123
124
  type RENDER_TARGET_FLAG = typeof render.TEXTURE_BIT;
@@ -222,7 +223,7 @@ declare global {
222
223
  * constants.light_colors[3] = vmath.vector4(1, 1, 1, 1);
223
224
  * ```
224
225
  */
225
- function constant_buffer(): Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
226
+ function constant_buffer(): Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
226
227
  /**
227
228
  * Deletes a render target created by a render script.
228
229
  * You cannot delete a render target resource.
@@ -235,9 +236,12 @@ declare global {
235
236
  * return { my_render_target: render.render_target("my_target", {}) };
236
237
  * },
237
238
  *
238
- * final(self) {
239
- * // How to delete a render target:
240
- * render.delete_render_target(self.my_render_target);
239
+ * // A render script has no final hook, so free the target on a message.
240
+ * on_message(self, message_id) {
241
+ * if (message_id === hash("release_target")) {
242
+ * // How to delete a render target:
243
+ * render.delete_render_target(self.my_render_target);
244
+ * }
241
245
  * },
242
246
  * });
243
247
  * ```
@@ -300,8 +304,11 @@ declare global {
300
304
  * ```ts
301
305
  * export default defineRenderScript({
302
306
  * init() {
307
+ * // the engine registers a texture format only when the driver supports it
308
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
309
+ * if (format === undefined) return undefined;
303
310
  * const color_params = {
304
- * format: graphics.TEXTURE_FORMAT_RGBA,
311
+ * format,
305
312
  * width: render.get_window_width(),
306
313
  * height: render.get_window_height(),
307
314
  * };
@@ -312,6 +319,7 @@ declare global {
312
319
  * },
313
320
  *
314
321
  * update(self, dt) {
322
+ * if (self === undefined) return;
315
323
  * render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);
316
324
  * // draw a predicate with the render target available as texture 0 in the predicate
317
325
  * // material shader.
@@ -338,8 +346,11 @@ declare global {
338
346
  * ```ts
339
347
  * export default defineRenderScript({
340
348
  * init() {
349
+ * // the engine registers a texture format only when the driver supports it
350
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
351
+ * if (format === undefined) return undefined;
341
352
  * const color_params = {
342
- * format: graphics.TEXTURE_FORMAT_RGBA,
353
+ * format,
343
354
  * width: render.get_window_width(),
344
355
  * height: render.get_window_height(),
345
356
  * };
@@ -350,6 +361,7 @@ declare global {
350
361
  * },
351
362
  *
352
363
  * update(self, dt) {
364
+ * if (self === undefined) return;
353
365
  * render.set_compute("bloom");
354
366
  * render.enable_texture(0, self.backing_texture);
355
367
  * render.enable_texture(1, self.scene_rt);
@@ -503,8 +515,11 @@ declare global {
503
515
  * ```ts
504
516
  * export default defineRenderScript({
505
517
  * init() {
518
+ * // the engine registers a texture format only when the driver supports it
519
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
520
+ * if (format === undefined) return undefined;
506
521
  * const color_params = {
507
- * format: graphics.TEXTURE_FORMAT_RGBA,
522
+ * format,
508
523
  * width: render.get_window_width(),
509
524
  * height: render.get_window_height(),
510
525
  * };
@@ -515,6 +530,7 @@ declare global {
515
530
  * },
516
531
  *
517
532
  * update(self, dt) {
533
+ * if (self === undefined) return;
518
534
  * // enable target so all drawing is done to it
519
535
  * render.set_render_target(self.my_render_target);
520
536
  *
@@ -595,8 +611,11 @@ declare global {
595
611
  * ```ts
596
612
  * export default defineRenderScript({
597
613
  * init() {
614
+ * // the engine registers a texture format only when the driver supports it
615
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
616
+ * if (format === undefined) return undefined;
598
617
  * const color_params = {
599
- * format: graphics.TEXTURE_FORMAT_RGBA,
618
+ * format,
600
619
  * width: render.get_window_width(),
601
620
  * height: render.get_window_height(),
602
621
  * };
@@ -608,6 +627,7 @@ declare global {
608
627
  * },
609
628
  *
610
629
  * update(self, dt) {
630
+ * if (self === undefined) return;
611
631
  * // get the height of the render target color buffer
612
632
  * const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
613
633
  * // get the height of a render target resource
@@ -632,8 +652,11 @@ declare global {
632
652
  * ```ts
633
653
  * export default defineRenderScript({
634
654
  * init() {
655
+ * // the engine registers a texture format only when the driver supports it
656
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
657
+ * if (format === undefined) return undefined;
635
658
  * const color_params = {
636
- * format: graphics.TEXTURE_FORMAT_RGBA,
659
+ * format,
637
660
  * width: render.get_window_width(),
638
661
  * height: render.get_window_height(),
639
662
  * };
@@ -645,6 +668,7 @@ declare global {
645
668
  * },
646
669
  *
647
670
  * update(self, dt) {
671
+ * if (self === undefined) return;
648
672
  * // get the width of the render target color buffer
649
673
  * const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
650
674
  * // get the width of a render target resource
@@ -973,8 +997,11 @@ declare global {
973
997
  * // 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
974
998
  * export default defineRenderScript({
975
999
  * init() {
1000
+ * // the engine registers a texture format only when the driver supports it
1001
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
1002
+ * if (format === undefined) return undefined;
976
1003
  * const color_params = {
977
- * format: graphics.TEXTURE_FORMAT_RGBA,
1004
+ * format,
978
1005
  * width: render.get_window_width(),
979
1006
  * height: render.get_window_height(),
980
1007
  * };
@@ -985,6 +1012,7 @@ declare global {
985
1012
  * },
986
1013
  *
987
1014
  * update(self, dt) {
1015
+ * if (self === undefined) return;
988
1016
  * // set render target so all drawing is done to it
989
1017
  * render.set_render_target(self.my_render_target, {
990
1018
  * transient: [graphics.BUFFER_TYPE_DEPTH_BIT, graphics.BUFFER_TYPE_STENCIL_BIT],
@@ -57,6 +57,10 @@ declare global {
57
57
  * Whether the interface is running.
58
58
  */
59
59
  running: boolean;
60
+ /**
61
+ * Address family, absent for an interface that is neither IPv4 nor IPv6.
62
+ */
63
+ family?: "ipv4" | "ipv6";
60
64
  }
61
65
  /**
62
66
  * Asynchronous buffer-load result
@@ -87,11 +91,11 @@ declare global {
87
91
  /**
88
92
  * Device model on iOS and Android.
89
93
  */
90
- device_model?: string;
94
+ device_model: string;
91
95
  /**
92
96
  * Device manufacturer on iOS and Android.
93
97
  */
94
- manufacturer?: string;
98
+ manufacturer: string;
95
99
  /**
96
100
  * Operating-system name.
97
101
  */
@@ -123,11 +127,11 @@ declare global {
123
127
  /**
124
128
  * Operating-system-protected device identifier.
125
129
  */
126
- device_ident?: string;
130
+ device_ident: string;
127
131
  /**
128
132
  * HTTP user agent on HTML5.
129
133
  */
130
- user_agent?: string;
134
+ user_agent: string;
131
135
  }
132
136
  /**
133
137
  * System-information options
@@ -67,7 +67,7 @@ declare global {
67
67
  * }
68
68
  * ```
69
69
  */
70
- function get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number;
70
+ function get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number | undefined;
71
71
  /**
72
72
  * Get the tile information at the specified position in the tilemap.
73
73
  * The position is identified by the tile index starting at origin
@@ -95,7 +95,7 @@ declare global {
95
95
  * }
96
96
  * ```
97
97
  */
98
- function get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): { index: number; h_flip: boolean; v_flip: boolean; rotate_90: boolean };
98
+ function get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): { index: number; h_flip: boolean; v_flip: boolean; rotate_90: boolean } | undefined;
99
99
  /**
100
100
  * Retrieves all the tiles for the specified layer in the tilemap.
101
101
  * It returns a table of rows where the keys are the
@@ -113,13 +113,13 @@ declare global {
113
113
  * let count = 0;
114
114
  * for (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {
115
115
  * for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {
116
- * tile = tiles.get(row_index)?.get(column_index) ?? 0;
116
+ * tile = tiles?.get(row_index)?.get(column_index) ?? 0;
117
117
  * count = count + 1;
118
118
  * }
119
119
  * }
120
120
  * ```
121
121
  */
122
- function get_tiles(url: string | Hash | Url, layer: string | Hash): LuaTable<number, LuaTable<number, number>>;
122
+ function get_tiles(url: string | Hash | Url, layer: string | Hash): LuaTable<number, LuaTable<number, number>> | undefined;
123
123
  /**
124
124
  * Resets a shader constant for a tile map component.
125
125
  * The constant must be defined in the material assigned to the tile map.
@@ -85,7 +85,7 @@ declare global {
85
85
  * }
86
86
  * ```
87
87
  */
88
- 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): LuaMap<Hash, Hash>;
88
+ 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> };
89
89
  /**
90
90
  * This returns status of the collection factory.
91
91
  * Calling this function when the factory is not marked as dynamic loading always returns COMP_COLLECTION_FACTORY_STATUS_LOADED.
@@ -64,7 +64,7 @@ declare global {
64
64
  * msg.post("/go#collectionproxy", "enable");
65
65
  * ```
66
66
  */
67
- function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, number]>;
67
+ function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, number | undefined]>;
68
68
  }
69
69
  }
70
70
 
@@ -42,7 +42,9 @@ declare global {
42
42
  * // create a new game object and provide property values
43
43
  * const created = factory.create("#factory", undefined, undefined, { my_value: 1 });
44
44
  * // communicate with the object
45
- * msg.post(created, "hello");
45
+ * if (created !== undefined) {
46
+ * msg.post(created, "hello");
47
+ * }
46
48
  * },
47
49
  * });
48
50
  * ```
@@ -58,7 +60,7 @@ declare global {
58
60
  * });
59
61
  * ```
60
62
  */
61
- function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: Record<string | number, unknown>, scale?: number | Vector3): Hash;
63
+ function create(url: string | Hash | Url, position?: Vector3, rotation?: Quaternion, properties?: Record<string | number, unknown>, scale?: number | Vector3): Hash | undefined;
62
64
  /**
63
65
  * This returns status of the factory.
64
66
  * Calling this function when the factory is not marked as dynamic loading always returns
@@ -630,7 +630,7 @@ declare global {
630
630
  * @param node - root node to clone
631
631
  * @returns a table mapping node ids to the corresponding cloned nodes
632
632
  */
633
- function clone_tree(node: Opaque<"node">): LuaMap<Hash, Opaque<"node">>;
633
+ function clone_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">> & { get: LuaTableGetMethod<string, Opaque<"node">> };
634
634
  /**
635
635
  * Deletes the specified node. Any child nodes of the specified node will be
636
636
  * recursively deleted.
@@ -1146,7 +1146,7 @@ declare global {
1146
1146
  * @param node - root node to get node tree from
1147
1147
  * @returns a table mapping node ids to the corresponding nodes
1148
1148
  */
1149
- function get_tree(node: Opaque<"node">): LuaMap<Hash, Opaque<"node">>;
1149
+ function get_tree(node: Opaque<"node">): LuaTable<Hash, Opaque<"node">> & { get: LuaTableGetMethod<string, Opaque<"node">> };
1150
1150
  /**
1151
1151
  * gets the node type
1152
1152
  *
@@ -31,6 +31,8 @@ declare global {
31
31
  * - number `range_start`: the start offset into the requested file
32
32
  * - number `range_end`: the end offset into the requested file (inclusive)
33
33
  * - number `document_size`: the full size of the requested file
34
+ *
35
+ * 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.
34
36
  * @param headers - optional table with custom headers
35
37
  * @param post_data - optional data to send
36
38
  * @param options - optional table with request parameters. Supported entries:
@@ -70,7 +72,7 @@ declare global {
70
72
  * });
71
73
  * ```
72
74
  */
73
- 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?: { timeout?: number; path?: string; ignore_cache?: boolean; chunked_transfer?: boolean; report_progress?: boolean }): void;
75
+ 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?: { timeout?: number; path?: string; ignore_cache?: boolean; chunked_transfer?: boolean; report_progress?: boolean }): void;
74
76
  }
75
77
  }
76
78
 
@@ -44,7 +44,7 @@ declare global {
44
44
  * }
45
45
  * ```
46
46
  */
47
- function get_astc_header(buffer: string): { width: number; height: number; depth: number; block_size_x: number; block_size_y: number; block_size_z: number } | undefined;
47
+ function get_astc_header(buffer: string): { width: number; height: number; depth: number; block_size_x: number; block_size_y: number; block_size_z: number };
48
48
  /**
49
49
  * Load image (PNG or JPEG) from buffer.
50
50
  *
@@ -40,6 +40,7 @@ import "../../../src/engine-globals";
40
40
  import "../../../src/msg-overloads";
41
41
  import "../../../src/message-guard";
42
42
  import "../../../src/window-event-guard";
43
+ import "../../../src/physics-event-guard";
43
44
  import "../../../src/scene-addresses";
44
45
  import "../../../src/go-overloads";
45
46
  import "../../../src/component-properties";
@@ -136,10 +136,9 @@ declare global {
136
136
  * // How to play the "jump" animation followed by the "run" animation:
137
137
  * const url = msg.url("#model");
138
138
  *
139
- * function anim_done(self: unknown, message_id: unknown, message: unknown, sender: unknown) {
139
+ * function anim_done(self: unknown, message_id: Hash, message: { animation_id: Hash }) {
140
140
  * if (message_id === hash("model_animation_done")) {
141
- * const { animation_id } = message as { animation_id: Hash };
142
- * if (animation_id === hash("jump")) {
141
+ * if (message.animation_id === hash("jump")) {
143
142
  * // open animation done, chain with "run"
144
143
  * const properties = { blend_duration: 0.2 };
145
144
  * model.play_anim(url, "run", go.PLAYBACK_LOOP_FORWARD, properties, anim_done);
@@ -156,7 +155,7 @@ declare global {
156
155
  * });
157
156
  * ```
158
157
  */
159
- function play_anim(url: string | Hash | Url, anim_id: string | Hash, playback: go.Playback, play_properties?: { blend_duration?: number; offset?: number; playback_rate?: number }, complete_function?: (self: unknown, message_id: unknown, message: unknown, sender: unknown) => void): void;
158
+ function play_anim(url: string | Hash | Url, anim_id: string | Hash, playback: go.Playback, play_properties?: { blend_duration?: number; offset?: number; playback_rate?: number }, complete_function?: (self: unknown, message_id: Hash, message: BuiltinMessages["model_animation_done"]) => void): void;
160
159
  /**
161
160
  * Enable or disable visibility of a mesh
162
161
  *
@@ -178,7 +177,7 @@ declare global {
178
177
  /**
179
178
  * The current animation set on the component. The type of the property is hash.
180
179
  */
181
- animation: Hash;
180
+ readonly animation: Hash;
182
181
  /**
183
182
  * The normalized animation cursor. The type of the property is number.
184
183
  * Please note that model events may not fire as expected when the cursor is manipulated directly.
@@ -202,7 +202,7 @@ declare global {
202
202
  * @returns It returns a list. If missed it returns `nil`. See ray_cast_response for details on the returned values.
203
203
  * @example
204
204
  * ```ts
205
- * function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash; request_id: number }) {
205
+ * function handle_result(hit: { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash }) {
206
206
  * // act on the hit (see 'ray_cast_response')
207
207
  * }
208
208
  *
@@ -227,7 +227,7 @@ declare global {
227
227
  * });
228
228
  * ```
229
229
  */
230
- function raycast(from: Vector3, to: Vector3, groups: Hash[], options?: { all?: boolean }): { fraction: number; position: Vector3; normal: Vector3; id: Hash; group: Hash; request_id: number }[] | undefined;
230
+ function raycast(from: Vector3, to: Vector3, groups: Hash[], options?: { all?: boolean }): Omit<BuiltinMessages["ray_cast_response"], "request_id">[] | Omit<BuiltinMessages["ray_cast_response"], "request_id"> | undefined;
231
231
  /**
232
232
  * Ray casts are used to test for intersections against collision objects in the physics world.
233
233
  * Collision objects of types kinematic, dynamic and static are tested against. Trigger objects
@@ -14,10 +14,11 @@ declare global {
14
14
  * require features not in OpenGL ES 2.0, but those will not work cross platform.
15
15
  */
16
16
  namespace render {
17
- type constant_buffer = Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
17
+ type constant_buffer = Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
18
18
  type render_target = Opaque<"render_target">;
19
19
  type texture = Opaque<"texture">;
20
20
  type ClearBufferKey = typeof graphics.BUFFER_TYPE_COLOR0_BIT | typeof graphics.BUFFER_TYPE_DEPTH_BIT | typeof graphics.BUFFER_TYPE_STENCIL_BIT;
21
+ type RenderTargetParams = Record<string | number, unknown>;
21
22
  /**
22
23
  * The rendering context was lost. Rendering is paused and all graphics resources become invalid. Passed to the `render.set_listener` callback.
23
24
  */
@@ -112,7 +113,7 @@ declare global {
112
113
  * constants.light_colors[3] = vmath.vector4(1, 1, 1, 1);
113
114
  * ```
114
115
  */
115
- function constant_buffer(): Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
116
+ function constant_buffer(): Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> };
116
117
  /**
117
118
  * Deletes a render target created by a render script.
118
119
  * You cannot delete a render target resource.
@@ -125,9 +126,12 @@ declare global {
125
126
  * return { my_render_target: render.render_target("my_target", {}) };
126
127
  * },
127
128
  *
128
- * final(self) {
129
- * // How to delete a render target:
130
- * render.delete_render_target(self.my_render_target);
129
+ * // A render script has no final hook, so free the target on a message.
130
+ * on_message(self, message_id) {
131
+ * if (message_id === hash("release_target")) {
132
+ * // How to delete a render target:
133
+ * render.delete_render_target(self.my_render_target);
134
+ * }
131
135
  * },
132
136
  * });
133
137
  * ```
@@ -190,8 +194,11 @@ declare global {
190
194
  * ```ts
191
195
  * export default defineRenderScript({
192
196
  * init() {
197
+ * // the engine registers a texture format only when the driver supports it
198
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
199
+ * if (format === undefined) return undefined;
193
200
  * const color_params = {
194
- * format: graphics.TEXTURE_FORMAT_RGBA,
201
+ * format,
195
202
  * width: render.get_window_width(),
196
203
  * height: render.get_window_height(),
197
204
  * };
@@ -202,6 +209,7 @@ declare global {
202
209
  * },
203
210
  *
204
211
  * update(self, dt) {
212
+ * if (self === undefined) return;
205
213
  * render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);
206
214
  * // draw a predicate with the render target available as texture 0 in the predicate
207
215
  * // material shader.
@@ -231,8 +239,11 @@ declare global {
231
239
  * ```ts
232
240
  * export default defineRenderScript({
233
241
  * init() {
242
+ * // the engine registers a texture format only when the driver supports it
243
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
244
+ * if (format === undefined) return undefined;
234
245
  * const color_params = {
235
- * format: graphics.TEXTURE_FORMAT_RGBA,
246
+ * format,
236
247
  * width: render.get_window_width(),
237
248
  * height: render.get_window_height(),
238
249
  * };
@@ -243,6 +254,7 @@ declare global {
243
254
  * },
244
255
  *
245
256
  * update(self, dt) {
257
+ * if (self === undefined) return;
246
258
  * render.set_compute("bloom");
247
259
  * render.enable_texture(0, self.backing_texture);
248
260
  * render.enable_texture(1, self.scene_rt);
@@ -259,7 +271,7 @@ declare global {
259
271
  * render.dispatch_compute(32, 32, 32, { constants });
260
272
  * ```
261
273
  */
262
- function dispatch_compute(x: number, y: number, z: number, options?: { constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] } }): void;
274
+ function dispatch_compute(x: number, y: number, z: number, options?: { constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> } }): void;
263
275
  /**
264
276
  * Draws all objects that match a specified predicate. An optional constant buffer can be
265
277
  * provided to override the default constants. If no constants buffer is provided, a default
@@ -321,7 +333,7 @@ declare global {
321
333
  * }
322
334
  * ```
323
335
  */
324
- function draw(predicate: Opaque<"render_predicate">, options?: { frustum?: Matrix4; frustum_planes?: number; constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] }; sort_order?: number }): void;
336
+ function draw(predicate: Opaque<"render_predicate">, options?: { frustum?: Matrix4; frustum_planes?: number; constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | ConstantArray<Vector4> | ConstantArray<Matrix4> }; sort_order?: number }): void;
325
337
  /**
326
338
  * Draws all 3d debug graphics such as lines drawn with "draw_line" messages and physics visualization.
327
339
  *
@@ -432,8 +444,11 @@ declare global {
432
444
  * ```ts
433
445
  * export default defineRenderScript({
434
446
  * init() {
447
+ * // the engine registers a texture format only when the driver supports it
448
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
449
+ * if (format === undefined) return undefined;
435
450
  * const color_params = {
436
- * format: graphics.TEXTURE_FORMAT_RGBA,
451
+ * format,
437
452
  * width: render.get_window_width(),
438
453
  * height: render.get_window_height(),
439
454
  * };
@@ -444,6 +459,7 @@ declare global {
444
459
  * },
445
460
  *
446
461
  * update(self, dt) {
462
+ * if (self === undefined) return;
447
463
  * // enable target so all drawing is done to it
448
464
  * render.set_render_target(self.my_render_target);
449
465
  *
@@ -524,8 +540,11 @@ declare global {
524
540
  * ```ts
525
541
  * export default defineRenderScript({
526
542
  * init() {
543
+ * // the engine registers a texture format only when the driver supports it
544
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
545
+ * if (format === undefined) return undefined;
527
546
  * const color_params = {
528
- * format: graphics.TEXTURE_FORMAT_RGBA,
547
+ * format,
529
548
  * width: render.get_window_width(),
530
549
  * height: render.get_window_height(),
531
550
  * };
@@ -537,6 +556,7 @@ declare global {
537
556
  * },
538
557
  *
539
558
  * update(self, dt) {
559
+ * if (self === undefined) return;
540
560
  * // get the height of the render target color buffer
541
561
  * const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
542
562
  * // get the height of a render target resource
@@ -561,8 +581,11 @@ declare global {
561
581
  * ```ts
562
582
  * export default defineRenderScript({
563
583
  * init() {
584
+ * // the engine registers a texture format only when the driver supports it
585
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
586
+ * if (format === undefined) return undefined;
564
587
  * const color_params = {
565
- * format: graphics.TEXTURE_FORMAT_RGBA,
588
+ * format,
566
589
  * width: render.get_window_width(),
567
590
  * height: render.get_window_height(),
568
591
  * };
@@ -574,6 +597,7 @@ declare global {
574
597
  * },
575
598
  *
576
599
  * update(self, dt) {
600
+ * if (self === undefined) return;
577
601
  * // get the width of the render target color buffer
578
602
  * const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
579
603
  * // get the width of a render target resource
@@ -953,8 +977,11 @@ declare global {
953
977
  * // 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
954
978
  * export default defineRenderScript({
955
979
  * init() {
980
+ * // the engine registers a texture format only when the driver supports it
981
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
982
+ * if (format === undefined) return undefined;
956
983
  * const color_params = {
957
- * format: graphics.TEXTURE_FORMAT_RGBA,
984
+ * format,
958
985
  * width: render.get_window_width(),
959
986
  * height: render.get_window_height(),
960
987
  * };
@@ -965,6 +992,7 @@ declare global {
965
992
  * },
966
993
  *
967
994
  * update(self, dt) {
995
+ * if (self === undefined) return;
968
996
  * // set render target so all drawing is done to it
969
997
  * render.set_render_target(self.my_render_target, {
970
998
  * transient: [graphics.BUFFER_TYPE_DEPTH_BIT, graphics.BUFFER_TYPE_STENCIL_BIT],
@@ -355,7 +355,7 @@ declare global {
355
355
  * }
356
356
  * ```
357
357
  */
358
- function get_sys_info(options?: { ignore_secure?: boolean }): { device_model?: string; manufacturer?: string; system_name: string; system_version: string; api_version: string; language: string; device_language: string; territory: string; gmt_offset: number; device_ident?: string; user_agent?: string };
358
+ function get_sys_info(options?: { ignore_secure?: boolean }): { device_model: string; manufacturer: string; system_name: string; system_version: string; api_version: string; language: string; device_language: string; territory: string; gmt_offset: number; device_ident: string; user_agent: string };
359
359
  /**
360
360
  * If the file exists, it must have been created by `sys.save` to be loaded.
361
361
  * This function will raise a Lua error if an error occurs while loading the file.
@@ -66,7 +66,7 @@ declare global {
66
66
  * }
67
67
  * ```
68
68
  */
69
- function get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number;
69
+ function get_tile(url: string | Hash | Url, layer: string | Hash, x: number, y: number): number | undefined;
70
70
  /**
71
71
  * Get the tile information at the specified position in the tilemap.
72
72
  * The position is identified by the tile index starting at origin
@@ -94,7 +94,7 @@ declare global {
94
94
  * }
95
95
  * ```
96
96
  */
97
- function get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): { index: number; h_flip: boolean; v_flip: boolean; rotate_90: boolean };
97
+ function get_tile_info(url: string | Hash | Url, layer: string | Hash, x: number, y: number): { index: number; h_flip: boolean; v_flip: boolean; rotate_90: boolean } | undefined;
98
98
  /**
99
99
  * Retrieves all the tiles for the specified layer in the tilemap.
100
100
  * It returns a table of rows where the keys are the
@@ -112,13 +112,13 @@ declare global {
112
112
  * let count = 0;
113
113
  * for (let row_index = bottom; row_index <= bottom + rows_count - 1; row_index++) {
114
114
  * for (let column_index = left; column_index <= left + columns_count - 1; column_index++) {
115
- * tile = tiles.get(row_index)?.get(column_index) ?? 0;
115
+ * tile = tiles?.get(row_index)?.get(column_index) ?? 0;
116
116
  * count = count + 1;
117
117
  * }
118
118
  * }
119
119
  * ```
120
120
  */
121
- function get_tiles(url: string | Hash | Url, layer: string | Hash): LuaMap<number, LuaMap<number, number>>;
121
+ function get_tiles(url: string | Hash | Url, layer: string | Hash): LuaMap<number, LuaMap<number, number>> | undefined;
122
122
  /**
123
123
  * Replace a tile in a tile map with a new tile.
124
124
  * The coordinates of the tiles are indexed so that the "first" tile just
@@ -85,7 +85,7 @@ declare global {
85
85
  * }
86
86
  * ```
87
87
  */
88
- 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): LuaMap<Hash, Hash>;
88
+ 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> };
89
89
  /**
90
90
  * This returns status of the collection factory.
91
91
  * Calling this function when the factory is not marked as dynamic loading always returns COMP_COLLECTION_FACTORY_STATUS_LOADED.
@@ -64,7 +64,7 @@ declare global {
64
64
  * msg.post("/go#collectionproxy", "enable");
65
65
  * ```
66
66
  */
67
- function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, number]>;
67
+ function set_collection(url: string | Hash | Url, prototype: string | undefined): LuaMultiReturn<[boolean, number | undefined]>;
68
68
  }
69
69
  }
70
70