@defold-typescript/types 0.50.1 → 0.52.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 (166) hide show
  1. package/api-availability.json +4 -58
  2. package/api-signatures.json +1128 -1552
  3. package/api-targets.json +15 -5
  4. package/examples/translations.json +19 -71
  5. package/fixtures/messages_doc.json +20 -39
  6. package/generated/b2d_world.d.ts +10 -10
  7. package/generated/buffer.d.ts +9 -9
  8. package/generated/builtin-messages.d.ts +16 -14
  9. package/generated/bullet3d_collision_object.d.ts +1 -1
  10. package/generated/bullet3d_constraint.d.ts +109 -7
  11. package/generated/bullet3d_shape.d.ts +2 -2
  12. package/generated/collectionfactory.d.ts +1 -1
  13. package/generated/collectionproxy.d.ts +2 -2
  14. package/generated/factory.d.ts +4 -2
  15. package/generated/go.d.ts +114 -220
  16. package/generated/graphics.d.ts +5 -0
  17. package/generated/gui.d.ts +148 -371
  18. package/generated/http.d.ts +4 -2
  19. package/generated/image.d.ts +56 -4
  20. package/generated/kinds/gui-script.d.ts +3 -0
  21. package/generated/kinds/render-script.d.ts +15 -15
  22. package/generated/kinds/script.d.ts +1 -0
  23. package/generated/liveupdate.d.ts +5 -1
  24. package/generated/material.d.ts +3 -3
  25. package/generated/model.d.ts +4 -5
  26. package/generated/particlefx.d.ts +20 -1
  27. package/generated/physics.d.ts +48 -4
  28. package/generated/render-script-modules/b2d.d.ts +711 -0
  29. package/generated/render-script-modules/bullet3d.d.ts +73 -0
  30. package/generated/render-script-modules/collectionfactory.d.ts +25 -0
  31. package/generated/render-script-modules/collectionproxy.d.ts +39 -0
  32. package/generated/render-script-modules/factory.d.ts +25 -0
  33. package/generated/render-script-modules/go.d.ts +436 -0
  34. package/generated/render-script-modules/label.d.ts +105 -0
  35. package/generated/render-script-modules/model.d.ts +89 -0
  36. package/generated/render-script-modules/particlefx.d.ts +59 -0
  37. package/generated/render-script-modules/physics.d.ts +333 -0
  38. package/generated/render-script-modules/resource.d.ts +1233 -0
  39. package/generated/render-script-modules/sound.d.ts +227 -0
  40. package/generated/render-script-modules/sprite.d.ts +68 -0
  41. package/generated/render-script-modules/tilemap.d.ts +43 -0
  42. package/generated/render.d.ts +175 -21
  43. package/generated/resource.d.ts +31 -10
  44. package/generated/sprite.d.ts +49 -1
  45. package/generated/sys.d.ts +78 -10
  46. package/generated/tilemap.d.ts +4 -4
  47. package/generated/versions/defold-1.12.4/buffer.d.ts +8 -8
  48. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +1 -1
  49. package/generated/versions/defold-1.12.4/collectionproxy.d.ts +1 -1
  50. package/generated/versions/defold-1.12.4/factory.d.ts +4 -2
  51. package/generated/versions/defold-1.12.4/go.d.ts +115 -343
  52. package/generated/versions/defold-1.12.4/graphics.d.ts +1 -0
  53. package/generated/versions/defold-1.12.4/gui.d.ts +151 -513
  54. package/generated/versions/defold-1.12.4/http.d.ts +4 -2
  55. package/generated/versions/defold-1.12.4/image.d.ts +83 -3
  56. package/generated/versions/defold-1.12.4/index.d.ts +2 -0
  57. package/generated/versions/defold-1.12.4/liveupdate.d.ts +4 -0
  58. package/generated/versions/defold-1.12.4/model.d.ts +4 -5
  59. package/generated/versions/defold-1.12.4/particlefx.d.ts +22 -1
  60. package/generated/versions/defold-1.12.4/physics.d.ts +47 -3
  61. package/generated/versions/defold-1.12.4/render.d.ts +119 -15
  62. package/generated/versions/defold-1.12.4/resource.d.ts +43 -10
  63. package/generated/versions/defold-1.12.4/sprite.d.ts +58 -1
  64. package/generated/versions/defold-1.12.4/sys.d.ts +101 -6
  65. package/generated/versions/defold-1.12.4/tilemap.d.ts +4 -4
  66. package/generated/versions/defold-1.12.4/vmath.d.ts +0 -24
  67. package/generated/versions/defold-1.13.0/buffer.d.ts +8 -8
  68. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +1 -1
  69. package/generated/versions/defold-1.13.0/collectionproxy.d.ts +1 -1
  70. package/generated/versions/defold-1.13.0/factory.d.ts +4 -2
  71. package/generated/versions/defold-1.13.0/go.d.ts +115 -370
  72. package/generated/versions/defold-1.13.0/graphics.d.ts +1 -0
  73. package/generated/versions/defold-1.13.0/gui.d.ts +151 -513
  74. package/generated/versions/defold-1.13.0/http.d.ts +4 -2
  75. package/generated/versions/defold-1.13.0/image.d.ts +83 -3
  76. package/generated/versions/defold-1.13.0/index.d.ts +2 -0
  77. package/generated/versions/defold-1.13.0/liveupdate.d.ts +4 -0
  78. package/generated/versions/defold-1.13.0/material.d.ts +3 -1
  79. package/generated/versions/defold-1.13.0/model.d.ts +4 -5
  80. package/generated/versions/defold-1.13.0/particlefx.d.ts +22 -1
  81. package/generated/versions/defold-1.13.0/physics.d.ts +47 -3
  82. package/generated/versions/defold-1.13.0/render.d.ts +182 -16
  83. package/generated/versions/defold-1.13.0/resource.d.ts +43 -10
  84. package/generated/versions/defold-1.13.0/sprite.d.ts +58 -1
  85. package/generated/versions/defold-1.13.0/sys.d.ts +101 -6
  86. package/generated/versions/defold-1.13.0/tilemap.d.ts +4 -4
  87. package/generated/versions/defold-1.13.0/vmath.d.ts +0 -24
  88. package/generated/versions/defold-1.13.1/buffer.d.ts +8 -8
  89. package/generated/versions/defold-1.13.1/collectionfactory.d.ts +1 -1
  90. package/generated/versions/defold-1.13.1/collectionproxy.d.ts +1 -1
  91. package/generated/versions/defold-1.13.1/factory.d.ts +4 -2
  92. package/generated/versions/defold-1.13.1/go.d.ts +115 -370
  93. package/generated/versions/defold-1.13.1/graphics.d.ts +1 -0
  94. package/generated/versions/defold-1.13.1/gui.d.ts +151 -529
  95. package/generated/versions/defold-1.13.1/http.d.ts +4 -2
  96. package/generated/versions/defold-1.13.1/image.d.ts +83 -3
  97. package/generated/versions/defold-1.13.1/index.d.ts +3 -0
  98. package/generated/versions/defold-1.13.1/liveupdate.d.ts +4 -0
  99. package/generated/versions/defold-1.13.1/material.d.ts +3 -1
  100. package/generated/versions/defold-1.13.1/model.d.ts +4 -5
  101. package/generated/versions/defold-1.13.1/particlefx.d.ts +22 -1
  102. package/generated/versions/defold-1.13.1/physics.d.ts +47 -3
  103. package/generated/versions/defold-1.13.1/render.d.ts +182 -16
  104. package/generated/versions/defold-1.13.1/resource.d.ts +43 -10
  105. package/generated/versions/defold-1.13.1/sprite.d.ts +58 -1
  106. package/generated/versions/defold-1.13.1/sys.d.ts +101 -6
  107. package/generated/versions/defold-1.13.1/tilemap.d.ts +4 -4
  108. package/generated/versions/defold-1.13.1/vmath.d.ts +0 -24
  109. package/generated/versions/defold-1.13.2/b2d_world.d.ts +10 -10
  110. package/generated/versions/defold-1.13.2/buffer.d.ts +9 -9
  111. package/generated/versions/defold-1.13.2/bullet3d_collision_object.d.ts +1 -1
  112. package/generated/versions/defold-1.13.2/bullet3d_constraint.d.ts +109 -7
  113. package/generated/versions/defold-1.13.2/bullet3d_shape.d.ts +2 -2
  114. package/generated/versions/defold-1.13.2/collectionfactory.d.ts +1 -1
  115. package/generated/versions/defold-1.13.2/collectionproxy.d.ts +2 -2
  116. package/generated/versions/defold-1.13.2/factory.d.ts +4 -2
  117. package/generated/versions/defold-1.13.2/go.d.ts +114 -220
  118. package/generated/versions/defold-1.13.2/graphics.d.ts +1 -0
  119. package/generated/versions/defold-1.13.2/gui.d.ts +148 -371
  120. package/generated/versions/defold-1.13.2/http.d.ts +4 -2
  121. package/generated/versions/defold-1.13.2/image.d.ts +56 -4
  122. package/generated/versions/defold-1.13.2/index.d.ts +3 -0
  123. package/generated/versions/defold-1.13.2/liveupdate.d.ts +5 -1
  124. package/generated/versions/defold-1.13.2/material.d.ts +3 -3
  125. package/generated/versions/defold-1.13.2/model.d.ts +4 -5
  126. package/generated/versions/defold-1.13.2/particlefx.d.ts +20 -1
  127. package/generated/versions/defold-1.13.2/physics.d.ts +48 -4
  128. package/generated/versions/defold-1.13.2/render.d.ts +164 -20
  129. package/generated/versions/defold-1.13.2/resource.d.ts +31 -10
  130. package/generated/versions/defold-1.13.2/sprite.d.ts +49 -1
  131. package/generated/versions/defold-1.13.2/sys.d.ts +78 -10
  132. package/generated/versions/defold-1.13.2/tilemap.d.ts +4 -4
  133. package/generated/versions/defold-1.13.2/vmath.d.ts +0 -24
  134. package/generated/versions/defold-1.13.2/window.d.ts +1 -1
  135. package/generated/vmath.d.ts +0 -24
  136. package/generated/window.d.ts +1 -1
  137. package/identity-vocabulary.json +98 -7
  138. package/index.d.ts +3 -0
  139. package/package.json +3 -1
  140. package/scripts/generate-api-availability.ts +6 -22
  141. package/scripts/generate-api-signatures.ts +87 -21
  142. package/scripts/materialize-version.ts +53 -6
  143. package/scripts/regen.ts +256 -44
  144. package/scripts/signature-store-fs.ts +1 -0
  145. package/scripts/target-version.ts +26 -0
  146. package/src/api-doc.ts +26 -0
  147. package/src/component-properties.d.ts +226 -6
  148. package/src/core-types.ts +82 -20
  149. package/src/doc-corrections.ts +53 -5
  150. package/src/emit-dts.ts +1300 -269
  151. package/src/emit-messages.ts +289 -0
  152. package/src/engine-globals.d.ts +8 -2
  153. package/src/go-overloads.d.ts +80 -15
  154. package/src/gui-overloads.d.ts +489 -0
  155. package/src/gui-texture-removal.d.ts +41 -0
  156. package/src/index.ts +2 -0
  157. package/src/lifecycle.ts +46 -37
  158. package/src/luals-type-expr.ts +6 -1
  159. package/src/msg-overloads.d.ts +25 -13
  160. package/src/physics-event-guard.d.ts +39 -0
  161. package/src/render-overloads.d.ts +2 -2
  162. package/src/return-correction-provenance.ts +36 -6
  163. package/src/signature-store.ts +50 -0
  164. package/src/timers.d.ts +2 -1
  165. package/src/vmath-overloads.d.ts +26 -0
  166. package/src/window-event-guard.d.ts +5 -3
@@ -6,7 +6,7 @@ declare global {
6
6
  * Functions for manipulating buffers and streams
7
7
  */
8
8
  namespace buffer {
9
- type buffer_data = Opaque<"buffer">;
9
+ type buffer_data = Opaque<"buffer"> & { length: LuaLengthMethod<number> };
10
10
  type buffer_stream = Opaque<"bufferstream"> & { [index: number]: number; length: LuaLengthMethod<number> };
11
11
  type ValueType = typeof buffer.VALUE_TYPE_FLOAT32 | typeof buffer.VALUE_TYPE_INT16 | typeof buffer.VALUE_TYPE_INT32 | typeof buffer.VALUE_TYPE_INT64 | typeof buffer.VALUE_TYPE_INT8 | typeof buffer.VALUE_TYPE_UINT16 | typeof buffer.VALUE_TYPE_UINT32 | typeof buffer.VALUE_TYPE_UINT64 | typeof buffer.VALUE_TYPE_UINT8;
12
12
  type VALUE_TYPE = typeof buffer.VALUE_TYPE_FLOAT32 | typeof buffer.VALUE_TYPE_INT16 | typeof buffer.VALUE_TYPE_INT32 | typeof buffer.VALUE_TYPE_INT64 | typeof buffer.VALUE_TYPE_INT8 | typeof buffer.VALUE_TYPE_UINT16 | typeof buffer.VALUE_TYPE_UINT32 | typeof buffer.VALUE_TYPE_UINT64 | typeof buffer.VALUE_TYPE_UINT8;
@@ -71,7 +71,7 @@ declare global {
71
71
  * buffer.copy_buffer(dstbuffer, 0, srcbuffer, element_count - 10, 10);
72
72
  * ```
73
73
  */
74
- function copy_buffer(dst: Opaque<"buffer">, dstoffset: number, src: Opaque<"buffer">, srcoffset: number, count: number): void;
74
+ function copy_buffer(dst: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, dstoffset: number, src: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, srcoffset: number, count: number): void;
75
75
  /**
76
76
  * Copy a specified amount of data from one stream to another.
77
77
  * The value type and size must match between source and destination streams.
@@ -132,15 +132,15 @@ declare global {
132
132
  * });
133
133
  * ```
134
134
  */
135
- function create(element_count: number, declaration: ({ name: Hash | string; type: buffer.VALUE_TYPE; count: number })[]): Opaque<"buffer">;
135
+ function create(element_count: number, declaration: [({ name: Hash | string; type: buffer.VALUE_TYPE; count: number }), ...({ name: Hash | string; type: buffer.VALUE_TYPE; count: number })[]]): Opaque<"buffer"> & { length: LuaLengthMethod<number> };
136
136
  /**
137
- * Get a copy of all the bytes from a specified stream as a Lua string.
137
+ * Get a copy of all the bytes of the buffer, every stream included, as a Lua string.
138
138
  *
139
139
  * @param buffer - the source buffer
140
- * @param stream_name - the name of the stream
140
+ * @param stream_name - the name of the stream; the engine ignores it and returns every byte of the buffer
141
141
  * @returns the buffer data as a Lua string
142
142
  */
143
- function get_bytes(buffer: Opaque<"buffer">, stream_name: Hash | string): string;
143
+ function get_bytes(buffer: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, stream_name?: Hash | string): string;
144
144
  /**
145
145
  * Get a named metadata entry from a buffer along with its type.
146
146
  *
@@ -156,7 +156,7 @@ declare global {
156
156
  * if (values) print(`${values.length} values in 'somefloats'`);
157
157
  * ```
158
158
  */
159
- function get_metadata(buf: Opaque<"buffer">, metadata_name: Hash | string): LuaMultiReturn<[number[] | undefined, buffer.VALUE_TYPE | undefined]>;
159
+ function get_metadata(buf: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, metadata_name: Hash | string): LuaMultiReturn<[number[] | undefined, buffer.VALUE_TYPE | undefined]>;
160
160
  /**
161
161
  * Get a specified stream from a buffer.
162
162
  *
@@ -164,7 +164,7 @@ declare global {
164
164
  * @param stream_name - the stream name
165
165
  * @returns the data stream
166
166
  */
167
- function get_stream(buffer: Opaque<"buffer">, stream_name: Hash | string): Opaque<"bufferstream"> & { [index: number]: number; length: LuaLengthMethod<number> };
167
+ function get_stream(buffer: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, stream_name: Hash | string): Opaque<"bufferstream"> & { [index: number]: number; length: LuaLengthMethod<number> };
168
168
  /**
169
169
  * Creates or updates a metadata array entry on a buffer.
170
170
  * The value type and count given when updating the entry should match those used when first creating it.
@@ -185,7 +185,7 @@ declare global {
185
185
  * buffer.set_metadata(buf, hash("somefloats"), [-2.5, 10.0, 32.2], buffer.VALUE_TYPE_FLOAT32);
186
186
  * ```
187
187
  */
188
- function set_metadata(buf: Opaque<"buffer">, metadata_name: Hash | string, values: number[], value_type: buffer.VALUE_TYPE): void;
188
+ function set_metadata(buf: Opaque<"buffer"> & { length: LuaLengthMethod<number> }, metadata_name: Hash | string, values: [number, ...number[]], value_type: Exclude<buffer.VALUE_TYPE, typeof buffer.VALUE_TYPE_INT64 | typeof buffer.VALUE_TYPE_UINT64>): void;
189
189
  }
190
190
  }
191
191
 
@@ -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
  }
@@ -298,7 +298,7 @@ declare global {
298
298
  * @param object - collision object
299
299
  * @returns rigid body state
300
300
  */
301
- function is_rigid_body(object: Opaque<"btCollisionObject" | "btRigidBody">): boolean;
301
+ function is_rigid_body(object: Opaque<"btCollisionObject" | "btRigidBody">): object is Opaque<"btRigidBody">;
302
302
  /**
303
303
  * Test whether the object is static
304
304
  *
@@ -246,7 +246,16 @@ declare global {
246
246
  * @param params - local frames and options
247
247
  * @returns cone-twist constraint
248
248
  */
249
- function create_cone_twist(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.cone_twist_params): bullet3d.constraint.btTypedConstraint;
249
+ function create_cone_twist(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.cone_twist_params & Required<Pick<bullet3d.constraint.cone_twist_params, "frame_b_position" | "frame_b_rotation">>): bullet3d.constraint.btTypedConstraint;
250
+ /**
251
+ * The world is derived from `body_a`.
252
+ *
253
+ * @param body_a - first body
254
+ * @param body_b - second body or world
255
+ * @param params - local frames and options
256
+ * @returns cone-twist constraint
257
+ */
258
+ function create_cone_twist(body_a: Opaque<"btRigidBody">, body_b: undefined, params: bullet3d.constraint.cone_twist_params): bullet3d.constraint.btTypedConstraint;
250
259
  /**
251
260
  * The params table requires local frame A and, for a two-body constraint,
252
261
  * local frame B. It optionally accepts `collide_connected`. The world is
@@ -259,7 +268,20 @@ declare global {
259
268
  * @param params - local frames and options
260
269
  * @returns generic 6-DOF constraint
261
270
  */
262
- function create_generic_6dof(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.generic_6dof_params): bullet3d.constraint.btTypedConstraint;
271
+ function create_generic_6dof(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.generic_6dof_params & Required<Pick<bullet3d.constraint.generic_6dof_params, "frame_b_position" | "frame_b_rotation">>): bullet3d.constraint.btTypedConstraint;
272
+ /**
273
+ * The params table requires local frame A and, for a two-body constraint,
274
+ * local frame B. It optionally accepts `collide_connected`. The world is
275
+ * derived from `body_a`. The active 6-DOF solver ignores its legacy
276
+ * linear-reference-frame selector, so that field is rejected rather than
277
+ * silently accepted.
278
+ *
279
+ * @param body_a - first body
280
+ * @param body_b - second body or world
281
+ * @param params - local frames and options
282
+ * @returns generic 6-DOF constraint
283
+ */
284
+ function create_generic_6dof(body_a: Opaque<"btRigidBody">, body_b: undefined, params: bullet3d.constraint.generic_6dof_params): bullet3d.constraint.btTypedConstraint;
263
285
  /**
264
286
  * Both bodies and both local frames are required. The params table optionally
265
287
  * accepts `collide_connected`. The world is derived from `body_a`. The active
@@ -339,7 +361,44 @@ declare global {
339
361
  * });
340
362
  * ```
341
363
  */
342
- function create_hinge(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.hinge_params): bullet3d.constraint.btTypedConstraint;
364
+ function create_hinge(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.hinge_params & Required<Pick<bullet3d.constraint.hinge_params, "frame_b_position" | "frame_b_rotation">>): bullet3d.constraint.btTypedConstraint;
365
+ /**
366
+ * The world is derived from `body_a`.
367
+ *
368
+ * @param body_a - first body
369
+ * @param body_b - second body or world
370
+ * @param params - local frames and options
371
+ * @returns hinge constraint
372
+ * @example
373
+ * ```ts
374
+ * // Create a motorized hinge with a 90-degree range:
375
+ * export default defineScript({
376
+ * init() {
377
+ * const body_a = bullet3d.get_rigid_body("/door#collisionobject");
378
+ * const body_b = bullet3d.get_rigid_body("/frame#collisionobject");
379
+ * let hinge: bullet3d.constraint.btTypedConstraint | undefined;
380
+ * if (body_a !== undefined) {
381
+ * hinge = bullet3d.constraint.create_hinge(body_a, body_b, {
382
+ * frame_a_position: vmath.vector3(-0.5, 0, 0),
383
+ * frame_a_rotation: vmath.quat(),
384
+ * frame_b_position: vmath.vector3(0.5, 0, 0),
385
+ * frame_b_rotation: vmath.quat(),
386
+ * });
387
+ * bullet3d.constraint.set_hinge_limits(hinge, -math.pi / 4, math.pi / 4);
388
+ * bullet3d.constraint.set_hinge_motor(hinge, true, 1.5, 2.5);
389
+ * }
390
+ * return { hinge };
391
+ * },
392
+ *
393
+ * final(self) {
394
+ * if (self.hinge !== undefined && bullet3d.constraint.is_valid(self.hinge)) {
395
+ * bullet3d.constraint.destroy(self.hinge);
396
+ * }
397
+ * },
398
+ * });
399
+ * ```
400
+ */
401
+ function create_hinge(body_a: Opaque<"btRigidBody">, body_b: undefined, params: bullet3d.constraint.hinge_params): bullet3d.constraint.btTypedConstraint;
343
402
  /**
344
403
  * Both bodies are required. Its initial linear suspension travel is one Defold
345
404
  * unit in either direction. The world is derived from `body_a`.
@@ -383,7 +442,50 @@ declare global {
383
442
  * });
384
443
  * ```
385
444
  */
386
- function create_point_to_point(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.point_to_point_params): bullet3d.constraint.btTypedConstraint;
445
+ function create_point_to_point(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.point_to_point_params & Required<Pick<bullet3d.constraint.point_to_point_params, "pivot_b">>): bullet3d.constraint.btTypedConstraint;
446
+ /**
447
+ * The world is derived from `body_a`; both bodies must belong to that same world.
448
+ *
449
+ * @param body_a - first body
450
+ * @param body_b - second body or world
451
+ * @param params - pivots and options
452
+ * @returns point-to-point constraint
453
+ * @example
454
+ * ```ts
455
+ * // Join two bodies at matching local pivots and explicitly destroy the
456
+ * // constraint when the script is finalized:
457
+ * export default defineScript({
458
+ * init() {
459
+ * const body_a = bullet3d.get_rigid_body("/body_a#collisionobject");
460
+ * const body_b = bullet3d.get_rigid_body("/body_b#collisionobject");
461
+ * let constraint: bullet3d.constraint.btTypedConstraint | undefined;
462
+ * if (body_a !== undefined) {
463
+ * constraint = bullet3d.constraint.create_point_to_point(body_a, body_b, {
464
+ * pivot_a: vmath.vector3(0.5, 0, 0),
465
+ * pivot_b: vmath.vector3(-0.5, 0, 0),
466
+ * });
467
+ * }
468
+ * return { constraint };
469
+ * },
470
+ *
471
+ * final(self) {
472
+ * if (self.constraint !== undefined && bullet3d.constraint.is_valid(self.constraint)) {
473
+ * bullet3d.constraint.destroy(self.constraint);
474
+ * }
475
+ * },
476
+ * });
477
+ * ```
478
+ */
479
+ function create_point_to_point(body_a: Opaque<"btRigidBody">, body_b: undefined, params: bullet3d.constraint.point_to_point_params): bullet3d.constraint.btTypedConstraint;
480
+ /**
481
+ * The world is derived from `body_a`.
482
+ *
483
+ * @param body_a - first body
484
+ * @param body_b - second body or world
485
+ * @param params - local frames and options
486
+ * @returns slider constraint
487
+ */
488
+ function create_slider(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.slider_params & Required<Pick<bullet3d.constraint.slider_params, "frame_b_position" | "frame_b_rotation">>): bullet3d.constraint.btTypedConstraint;
387
489
  /**
388
490
  * The world is derived from `body_a`.
389
491
  *
@@ -392,7 +494,7 @@ declare global {
392
494
  * @param params - local frames and options
393
495
  * @returns slider constraint
394
496
  */
395
- function create_slider(body_a: Opaque<"btRigidBody">, body_b: Opaque<"btRigidBody"> | undefined, params: bullet3d.constraint.slider_params): bullet3d.constraint.btTypedConstraint;
497
+ function create_slider(body_a: Opaque<"btRigidBody">, body_b: undefined, params: bullet3d.constraint.slider_params): bullet3d.constraint.btTypedConstraint;
396
498
  /**
397
499
  * Both bodies are required. The world is derived from `body_a`.
398
500
  *
@@ -567,7 +669,7 @@ declare global {
567
669
  * @param constraint - slider constraint
568
670
  * @param motor - `linear` or `angular`
569
671
  */
570
- function get_slider_motor(constraint: bullet3d.constraint.btTypedConstraint, motor: string): LuaMultiReturn<[boolean, number, number]>;
672
+ function get_slider_motor(constraint: bullet3d.constraint.btTypedConstraint, motor: "linear" | "angular"): LuaMultiReturn<[boolean, number, number]>;
571
673
  /**
572
674
  * Get the current slider position
573
675
  *
@@ -781,7 +883,7 @@ declare global {
781
883
  * @param target_velocity - linear or angular target velocity
782
884
  * @param max_force - non-negative maximum linear force or angular torque
783
885
  */
784
- function set_slider_motor(constraint: bullet3d.constraint.btTypedConstraint, motor: string, enabled: boolean, target_velocity: number, max_force: number): void;
886
+ function set_slider_motor(constraint: bullet3d.constraint.btTypedConstraint, motor: "linear" | "angular", enabled: boolean, target_velocity: number, max_force: number): void;
785
887
  /**
786
888
  * Generic spring 6-DOF constraints use a scale-independent damping factor from
787
889
  * 0 to 1, where 1 means no damping. Hinge2 constraints use a damping coefficient
@@ -11,7 +11,7 @@ declare global {
11
11
  */
12
12
  namespace bullet3d.shape {
13
13
  type btCollisionShape = Opaque<"btCollisionShape">;
14
- type definition = { type: bullet3d.shape.SHAPE_TYPE; diameter: number; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: bullet3d.shape.SHAPE_TYPE; dimensions: Vector3; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: bullet3d.shape.SHAPE_TYPE; diameter: number; height: number; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: bullet3d.shape.SHAPE_TYPE; vertices: Vector3[]; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion };
14
+ type definition = { type: typeof bullet3d.shape.SHAPE_TYPE_SPHERE; diameter: number; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: typeof bullet3d.shape.SHAPE_TYPE_BOX; dimensions: Vector3; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: typeof bullet3d.shape.SHAPE_TYPE_CAPSULE; diameter: number; height: number; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion } | { type: typeof bullet3d.shape.SHAPE_TYPE_HULL; vertices: Vector3[]; position?: Vector3; rotation?: Quaternion; target_rotation?: Quaternion };
15
15
  type SHAPE_TYPE = typeof bullet3d.shape.SHAPE_TYPE_BOX | typeof bullet3d.shape.SHAPE_TYPE_CAPSULE | typeof bullet3d.shape.SHAPE_TYPE_HULL | typeof bullet3d.shape.SHAPE_TYPE_MESH | typeof bullet3d.shape.SHAPE_TYPE_SPHERE;
16
16
  /**
17
17
  * Box shape type Value `1`. Shape data contains positive vector3 `dimensions` in Defold units.
@@ -66,7 +66,7 @@ declare global {
66
66
  * @param shape - shape handle
67
67
  * @returns typed shape geometry in Defold units
68
68
  */
69
- function get_shape(shape: bullet3d.shape.btCollisionShape): bullet3d.shape.definition;
69
+ function get_shape(shape: bullet3d.shape.btCollisionShape): bullet3d.shape.definition | { type: typeof bullet3d.shape.SHAPE_TYPE_MESH };
70
70
  /**
71
71
  * Get the normalized Defold shape type.
72
72
  *
@@ -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