@defold-typescript/types 0.40.0 → 0.42.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 (224) hide show
  1. package/api-availability.json +3963 -772
  2. package/api-migrations.json +27 -0
  3. package/api-signatures.json +18069 -10240
  4. package/api-targets.json +448 -11
  5. package/examples/translations.json +560 -89
  6. package/fixtures/messages_doc.json +96 -0
  7. package/generated/b2d.d.ts +680 -4
  8. package/generated/b2d_body.d.ts +29 -103
  9. package/generated/b2d_chain.d.ts +5 -6
  10. package/generated/b2d_fixture.d.ts +34 -38
  11. package/generated/b2d_joint.d.ts +503 -25
  12. package/generated/b2d_shape.d.ts +183 -20
  13. package/generated/b2d_world.d.ts +57 -63
  14. package/generated/buffer.d.ts +16 -15
  15. package/generated/builtin-messages.d.ts +7 -1
  16. package/generated/bullet3d.d.ts +91 -0
  17. package/generated/bullet3d_collision_object.d.ts +433 -0
  18. package/generated/bullet3d_constraint.d.ts +818 -0
  19. package/generated/bullet3d_rigid_body.d.ts +429 -0
  20. package/generated/bullet3d_shape.d.ts +123 -0
  21. package/generated/bullet3d_world.d.ts +492 -0
  22. package/generated/camera.d.ts +29 -32
  23. package/generated/collectionfactory.d.ts +15 -18
  24. package/generated/collectionproxy.d.ts +22 -6
  25. package/generated/compute.d.ts +12 -238
  26. package/generated/crash.d.ts +24 -10
  27. package/generated/editor-vm/http.d.ts +90 -7
  28. package/generated/editor-vm/image.d.ts +7 -7
  29. package/generated/editor-vm/json.d.ts +11 -0
  30. package/generated/editor-vm/localization.d.ts +7 -7
  31. package/generated/editor-vm/tilemap_tiles.d.ts +56 -10
  32. package/generated/editor-vm/zip.d.ts +28 -0
  33. package/generated/editor.d.ts +1496 -430
  34. package/generated/factory.d.ts +21 -25
  35. package/generated/font.d.ts +64 -22
  36. package/generated/go.d.ts +235 -182
  37. package/generated/graphics.d.ts +335 -97
  38. package/generated/gui.d.ts +240 -471
  39. package/generated/html5.d.ts +2 -2
  40. package/generated/http.d.ts +28 -35
  41. package/generated/image.d.ts +105 -72
  42. package/generated/json.d.ts +34 -16
  43. package/generated/kinds/gui-script.d.ts +7 -0
  44. package/generated/kinds/render-script.d.ts +7 -0
  45. package/generated/kinds/script.d.ts +7 -0
  46. package/generated/label.d.ts +77 -7
  47. package/generated/liveupdate.d.ts +13 -10
  48. package/generated/material.d.ts +312 -360
  49. package/generated/model.d.ts +40 -39
  50. package/generated/particlefx.d.ts +19 -28
  51. package/generated/physics.d.ts +365 -133
  52. package/generated/profiler.d.ts +13 -23
  53. package/generated/render.d.ts +237 -297
  54. package/generated/resource.d.ts +664 -583
  55. package/generated/socket.d.ts +120 -133
  56. package/generated/sound.d.ts +62 -31
  57. package/generated/sprite.d.ts +31 -17
  58. package/generated/sys.d.ts +234 -190
  59. package/generated/tilemap.d.ts +21 -16
  60. package/generated/timer.d.ts +34 -21
  61. package/generated/versions/defold-1.12.4/b2d_body.d.ts +0 -7
  62. package/generated/versions/defold-1.12.4/buffer.d.ts +1 -3
  63. package/generated/versions/defold-1.12.4/camera.d.ts +21 -21
  64. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +9 -9
  65. package/generated/versions/defold-1.12.4/collectionproxy.d.ts +2 -2
  66. package/generated/versions/defold-1.12.4/crash.d.ts +2 -2
  67. package/generated/versions/defold-1.12.4/factory.d.ts +15 -16
  68. package/generated/versions/defold-1.12.4/go.d.ts +6 -12
  69. package/generated/versions/defold-1.12.4/gui.d.ts +77 -175
  70. package/generated/versions/defold-1.12.4/html5.d.ts +1 -1
  71. package/generated/versions/defold-1.12.4/http.d.ts +0 -13
  72. package/generated/versions/defold-1.12.4/image.d.ts +16 -33
  73. package/generated/versions/defold-1.12.4/index.d.ts +1 -0
  74. package/generated/versions/defold-1.12.4/json.d.ts +10 -6
  75. package/generated/versions/defold-1.12.4/label.d.ts +2 -3
  76. package/generated/versions/defold-1.12.4/liveupdate.d.ts +5 -3
  77. package/generated/versions/defold-1.12.4/model.d.ts +2 -10
  78. package/generated/versions/defold-1.12.4/particlefx.d.ts +2 -5
  79. package/generated/versions/defold-1.12.4/physics.d.ts +69 -67
  80. package/generated/versions/defold-1.12.4/profiler.d.ts +2 -5
  81. package/generated/versions/defold-1.12.4/render.d.ts +99 -128
  82. package/generated/versions/defold-1.12.4/resource.d.ts +120 -148
  83. package/generated/versions/defold-1.12.4/socket.d.ts +34 -60
  84. package/generated/versions/defold-1.12.4/sound.d.ts +8 -8
  85. package/generated/versions/defold-1.12.4/sprite.d.ts +15 -5
  86. package/generated/versions/defold-1.12.4/sys.d.ts +37 -71
  87. package/generated/versions/defold-1.12.4/tilemap.d.ts +18 -11
  88. package/generated/versions/defold-1.12.4/timer.d.ts +5 -3
  89. package/generated/versions/defold-1.12.4/vmath.d.ts +0 -21
  90. package/generated/versions/defold-1.12.4/window.d.ts +1 -16
  91. package/generated/versions/defold-1.13.0/b2d_body.d.ts +10 -55
  92. package/generated/versions/defold-1.13.0/b2d_fixture.d.ts +25 -25
  93. package/generated/versions/defold-1.13.0/b2d_shape.d.ts +169 -8
  94. package/generated/versions/defold-1.13.0/b2d_world.d.ts +16 -10
  95. package/generated/versions/defold-1.13.0/buffer.d.ts +1 -3
  96. package/generated/versions/defold-1.13.0/camera.d.ts +25 -25
  97. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +9 -9
  98. package/generated/versions/defold-1.13.0/collectionproxy.d.ts +2 -2
  99. package/generated/versions/defold-1.13.0/compute.d.ts +0 -69
  100. package/generated/versions/defold-1.13.0/crash.d.ts +2 -2
  101. package/generated/versions/defold-1.13.0/editor-vm/tilemap_tiles.d.ts +3 -3
  102. package/generated/versions/defold-1.13.0/editor.d.ts +34 -24
  103. package/generated/versions/defold-1.13.0/factory.d.ts +15 -16
  104. package/generated/versions/defold-1.13.0/go.d.ts +6 -12
  105. package/generated/versions/defold-1.13.0/graphics.d.ts +73 -37
  106. package/generated/versions/defold-1.13.0/gui.d.ts +77 -175
  107. package/generated/versions/defold-1.13.0/html5.d.ts +1 -1
  108. package/generated/versions/defold-1.13.0/http.d.ts +0 -13
  109. package/generated/versions/defold-1.13.0/image.d.ts +16 -33
  110. package/generated/versions/defold-1.13.0/index.d.ts +1 -0
  111. package/generated/versions/defold-1.13.0/json.d.ts +10 -6
  112. package/generated/versions/defold-1.13.0/label.d.ts +2 -3
  113. package/generated/versions/defold-1.13.0/liveupdate.d.ts +7 -5
  114. package/generated/versions/defold-1.13.0/material.d.ts +68 -106
  115. package/generated/versions/defold-1.13.0/model.d.ts +2 -10
  116. package/generated/versions/defold-1.13.0/particlefx.d.ts +2 -5
  117. package/generated/versions/defold-1.13.0/physics.d.ts +69 -67
  118. package/generated/versions/defold-1.13.0/profiler.d.ts +2 -5
  119. package/generated/versions/defold-1.13.0/render.d.ts +99 -128
  120. package/generated/versions/defold-1.13.0/resource.d.ts +126 -150
  121. package/generated/versions/defold-1.13.0/socket.d.ts +34 -60
  122. package/generated/versions/defold-1.13.0/sound.d.ts +8 -8
  123. package/generated/versions/defold-1.13.0/sprite.d.ts +15 -5
  124. package/generated/versions/defold-1.13.0/sys.d.ts +37 -71
  125. package/generated/versions/defold-1.13.0/tilemap.d.ts +18 -11
  126. package/generated/versions/defold-1.13.0/timer.d.ts +5 -3
  127. package/generated/versions/defold-1.13.0/vmath.d.ts +0 -21
  128. package/generated/versions/defold-1.13.0/window.d.ts +1 -16
  129. package/generated/versions/defold-1.13.1/b2d.d.ts +33 -0
  130. package/generated/versions/defold-1.13.1/b2d_body.d.ts +636 -0
  131. package/generated/versions/defold-1.13.1/b2d_chain.d.ts +106 -0
  132. package/generated/versions/defold-1.13.1/b2d_fixture.d.ts +157 -0
  133. package/generated/versions/defold-1.13.1/b2d_joint.d.ts +823 -0
  134. package/generated/versions/defold-1.13.1/b2d_shape.d.ts +400 -0
  135. package/generated/versions/defold-1.13.1/b2d_world.d.ts +320 -0
  136. package/generated/versions/defold-1.13.1/buffer.d.ts +189 -0
  137. package/generated/versions/defold-1.13.1/camera.d.ts +303 -0
  138. package/generated/versions/defold-1.13.1/collectionfactory.d.ts +151 -0
  139. package/generated/versions/defold-1.13.1/collectionproxy.d.ts +93 -0
  140. package/generated/versions/defold-1.13.1/compute.d.ts +237 -0
  141. package/generated/versions/defold-1.13.1/crash.d.ts +143 -0
  142. package/generated/versions/defold-1.13.1/editor-vm/http.d.ts +56 -0
  143. package/generated/versions/defold-1.13.1/editor-vm/image.d.ts +48 -0
  144. package/generated/versions/defold-1.13.1/editor-vm/json.d.ts +10 -0
  145. package/generated/versions/defold-1.13.1/editor-vm/localization.d.ts +42 -0
  146. package/generated/versions/defold-1.13.1/editor-vm/tilemap_tiles.d.ts +80 -0
  147. package/generated/versions/defold-1.13.1/editor-vm/zip.d.ts +10 -0
  148. package/generated/versions/defold-1.13.1/editor-vm/zlib.d.ts +24 -0
  149. package/generated/versions/defold-1.13.1/editor.d.ts +1121 -0
  150. package/generated/versions/defold-1.13.1/factory.d.ts +124 -0
  151. package/generated/versions/defold-1.13.1/font.d.ts +81 -0
  152. package/generated/versions/defold-1.13.1/go.d.ts +1107 -0
  153. package/generated/versions/defold-1.13.1/graphics.d.ts +411 -0
  154. package/generated/versions/defold-1.13.1/gui.d.ts +2353 -0
  155. package/generated/versions/defold-1.13.1/html5.d.ts +55 -0
  156. package/generated/versions/defold-1.13.1/http.d.ts +77 -0
  157. package/generated/versions/defold-1.13.1/image.d.ts +131 -0
  158. package/generated/versions/defold-1.13.1/index.d.ts +57 -0
  159. package/generated/versions/defold-1.13.1/json.d.ts +80 -0
  160. package/generated/versions/defold-1.13.1/kinds/editor-script.d.ts +14 -0
  161. package/generated/versions/defold-1.13.1/label.d.ts +93 -0
  162. package/generated/versions/defold-1.13.1/liveupdate.d.ts +142 -0
  163. package/generated/versions/defold-1.13.1/material.d.ts +408 -0
  164. package/generated/versions/defold-1.13.1/model.d.ts +272 -0
  165. package/generated/versions/defold-1.13.1/msg.d.ts +10 -0
  166. package/generated/versions/defold-1.13.1/particlefx.d.ts +163 -0
  167. package/generated/versions/defold-1.13.1/physics.d.ts +559 -0
  168. package/generated/versions/defold-1.13.1/profiler.d.ts +235 -0
  169. package/generated/versions/defold-1.13.1/render.d.ts +1190 -0
  170. package/generated/versions/defold-1.13.1/resource.d.ts +1523 -0
  171. package/generated/versions/defold-1.13.1/socket.d.ts +784 -0
  172. package/generated/versions/defold-1.13.1/sound.d.ts +292 -0
  173. package/generated/versions/defold-1.13.1/sprite.d.ts +175 -0
  174. package/generated/versions/defold-1.13.1/sys.d.ts +678 -0
  175. package/generated/versions/defold-1.13.1/tilemap.d.ts +208 -0
  176. package/generated/versions/defold-1.13.1/timer.d.ts +125 -0
  177. package/generated/versions/defold-1.13.1/types.d.ts +61 -0
  178. package/generated/versions/defold-1.13.1/vmath.d.ts +774 -0
  179. package/generated/versions/defold-1.13.1/window.d.ts +183 -0
  180. package/generated/versions/defold-1.13.1/zlib.d.ts +41 -0
  181. package/generated/vmath.d.ts +1 -21
  182. package/generated/window.d.ts +71 -71
  183. package/identity-vocabulary.json +561 -0
  184. package/index.d.ts +7 -0
  185. package/package.json +18 -2
  186. package/scripts/example-store-io.ts +12 -1
  187. package/scripts/extension-goldens.ts +1 -0
  188. package/scripts/fidelity-baseline.json +146 -46
  189. package/scripts/generate-api-availability.ts +90 -12
  190. package/scripts/generate-api-signatures.ts +12 -2
  191. package/scripts/import-defold-release.ts +106 -26
  192. package/scripts/prose-constants.ts +77 -16
  193. package/scripts/regen.ts +391 -77
  194. package/scripts/shared-handle-methods.ts +53 -0
  195. package/scripts/signature-store-fs.ts +1 -0
  196. package/scripts/sync-api-docs.ts +48 -10
  197. package/src/api-availability.ts +0 -0
  198. package/src/api-doc.ts +201 -3
  199. package/src/api-identity.ts +252 -0
  200. package/src/core-types.ts +26 -3
  201. package/src/correction-pins.ts +49 -0
  202. package/src/doc-comment.ts +104 -11
  203. package/src/doc-corrections.ts +108 -0
  204. package/src/editor-vm-globals.d.ts +5 -2
  205. package/src/emit-dts.ts +2064 -281
  206. package/src/emit-messages.ts +52 -0
  207. package/src/example-store.ts +125 -14
  208. package/src/field-correction-coverage.ts +204 -0
  209. package/src/fnv1a.ts +16 -0
  210. package/src/go-overloads.d.ts +25 -6
  211. package/src/index-base-table.ts +145 -0
  212. package/src/index-slot-classifications.ts +588 -0
  213. package/src/index.ts +38 -5
  214. package/src/library-index-slot-classifications.ts +332 -0
  215. package/src/lifecycle.ts +61 -199
  216. package/src/luals-type-expr.ts +354 -0
  217. package/src/msg-overloads.d.ts +0 -1
  218. package/src/param-correction-provenance.ts +8 -11
  219. package/src/render-overloads.d.ts +0 -15
  220. package/src/return-correction-provenance.ts +58 -16
  221. package/src/sys-overloads.d.ts +48 -0
  222. package/src/vmath-overloads.d.ts +27 -1
  223. package/src/window-event-guard.d.ts +6 -9
  224. package/url-parameters.json +1 -2
@@ -6,33 +6,232 @@ 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
10
  /**
10
- * The following properties are available when connecting a joint of `JOINT_TYPE_FIXED` type:
11
+ * The available fields depend on the joint type.
12
+ */
13
+ interface joint_properties {
14
+ /**
15
+ * whether the connected objects should collide
16
+ */
17
+ collide_connected?: boolean;
18
+ /**
19
+ * Natural spring length between the anchor points.
20
+ */
21
+ length?: number;
22
+ /**
23
+ * Mass-spring-damper frequency in Hertz; zero disables softness.
24
+ */
25
+ frequency?: number;
26
+ /**
27
+ * Damping ratio, where zero is no damping and one is critical damping.
28
+ */
29
+ damping?: number;
30
+ /**
31
+ * Maximum fixed-joint rope length.
32
+ */
33
+ max_length?: number;
34
+ /**
35
+ * Local translation unit axis in the first body.
36
+ */
37
+ local_axis_a?: Vector3;
38
+ /**
39
+ * Angle of the second body relative to the first body, in radians.
40
+ */
41
+ reference_angle?: number;
42
+ /**
43
+ * Lower angular limit in radians.
44
+ */
45
+ lower_angle?: number;
46
+ /**
47
+ * Upper angular limit in radians.
48
+ */
49
+ upper_angle?: number;
50
+ /**
51
+ * Lower translation limit, usually in meters.
52
+ */
53
+ lower_translation?: number;
54
+ /**
55
+ * Upper translation limit, usually in meters.
56
+ */
57
+ upper_translation?: number;
58
+ /**
59
+ * Maximum motor torque used to reach the desired speed, usually in N-m.
60
+ */
61
+ max_motor_torque?: number;
62
+ /**
63
+ * Maximum motor force used to reach the desired speed.
64
+ */
65
+ max_motor_force?: number;
66
+ /**
67
+ * Desired motor speed.
68
+ */
69
+ motor_speed?: number;
70
+ /**
71
+ * Whether joint limits are enabled.
72
+ */
73
+ enable_limit?: boolean;
74
+ /**
75
+ * Whether the joint motor is enabled.
76
+ */
77
+ enable_motor?: boolean;
78
+ }
79
+ /**
80
+ * The available optional fields depend on the joint type.
81
+ */
82
+ interface joint_properties_info {
83
+ /**
84
+ * whether the connected objects collide
85
+ */
86
+ collide_connected: boolean;
87
+ /**
88
+ * spring length
89
+ */
90
+ length?: number;
91
+ /**
92
+ * spring frequency
93
+ */
94
+ frequency?: number;
95
+ /**
96
+ * damping ratio
97
+ */
98
+ damping?: number;
99
+ /**
100
+ * fixed-joint maximum length
101
+ */
102
+ max_length?: number;
103
+ /**
104
+ * local joint axis
105
+ */
106
+ local_axis_a?: Vector3;
107
+ /**
108
+ * reference angle
109
+ */
110
+ reference_angle?: number;
111
+ /**
112
+ * lower angular limit
113
+ */
114
+ lower_angle?: number;
115
+ /**
116
+ * upper angular limit
117
+ */
118
+ upper_angle?: number;
119
+ /**
120
+ * lower translation limit
121
+ */
122
+ lower_translation?: number;
123
+ /**
124
+ * upper translation limit
125
+ */
126
+ upper_translation?: number;
127
+ /**
128
+ * maximum motor torque
129
+ */
130
+ max_motor_torque?: number;
131
+ /**
132
+ * maximum motor force
133
+ */
134
+ max_motor_force?: number;
135
+ /**
136
+ * motor speed
137
+ */
138
+ motor_speed?: number;
139
+ /**
140
+ * whether limits are enabled
141
+ */
142
+ enable_limit?: boolean;
143
+ /**
144
+ * whether the motor is enabled
145
+ */
146
+ enable_motor?: boolean;
147
+ /**
148
+ * Read-only current hinge angle in radians.
149
+ */
150
+ joint_angle?: number;
151
+ /**
152
+ * Read-only current hinge angular speed or slider/wheel translation speed.
153
+ */
154
+ joint_speed?: number;
155
+ /**
156
+ * Read-only current slider or wheel translation, usually in meters.
157
+ */
158
+ joint_translation?: number;
159
+ }
160
+ /**
161
+ * Ray-cast options
162
+ */
163
+ interface raycast_options {
164
+ /**
165
+ * Return every hit instead of only the closest hit.
166
+ */
167
+ all?: boolean;
168
+ }
169
+ /**
170
+ * The available geometry fields depend on `type`.
171
+ */
172
+ interface shape_data {
173
+ /**
174
+ * shape type
175
+ */
176
+ type: physics.SHAPE_TYPE;
177
+ /**
178
+ * sphere diameter or capsule pole diameter
179
+ */
180
+ diameter?: number;
181
+ /**
182
+ * box dimensions
183
+ */
184
+ dimensions?: Vector3;
185
+ /**
186
+ * capsule height
187
+ */
188
+ height?: number;
189
+ }
190
+ type JOINT_TYPE = typeof physics.JOINT_TYPE_FIXED | typeof physics.JOINT_TYPE_HINGE | typeof physics.JOINT_TYPE_SLIDER | typeof physics.JOINT_TYPE_SPRING | typeof physics.JOINT_TYPE_WELD | typeof physics.JOINT_TYPE_WHEEL;
191
+ type SHAPE_TYPE = typeof physics.SHAPE_TYPE_BOX | typeof physics.SHAPE_TYPE_CAPSULE | typeof physics.SHAPE_TYPE_HULL | typeof physics.SHAPE_TYPE_MESH | typeof physics.SHAPE_TYPE_SPHERE;
192
+ /**
193
+ * Fixed joint; uses `max_length` from physics.joint_properties.
11
194
  */
12
195
  const JOINT_TYPE_FIXED: number & { readonly __brand: "physics.JOINT_TYPE_FIXED" };
13
196
  /**
14
- * The following properties are available when connecting a joint of `JOINT_TYPE_HINGE` type:
197
+ * Hinge joint; uses the angular-limit and motor fields from physics.joint_properties.
15
198
  */
16
199
  const JOINT_TYPE_HINGE: number & { readonly __brand: "physics.JOINT_TYPE_HINGE" };
17
200
  /**
18
- * The following properties are available when connecting a joint of `JOINT_TYPE_SLIDER` type:
201
+ * Slider joint; uses the translation-limit and motor fields from physics.joint_properties.
19
202
  */
20
203
  const JOINT_TYPE_SLIDER: number & { readonly __brand: "physics.JOINT_TYPE_SLIDER" };
21
204
  /**
22
- * The following properties are available when connecting a joint of `JOINT_TYPE_SPRING` type:
205
+ * Spring joint; uses `length`, `frequency`, and `damping` from physics.joint_properties.
23
206
  */
24
207
  const JOINT_TYPE_SPRING: number & { readonly __brand: "physics.JOINT_TYPE_SPRING" };
25
208
  /**
26
- * The following properties are available when connecting a joint of `JOINT_TYPE_WELD` type:
209
+ * Weld joint; uses `reference_angle`, `frequency`, and `damping` from physics.joint_properties.
27
210
  */
28
211
  const JOINT_TYPE_WELD: number & { readonly __brand: "physics.JOINT_TYPE_WELD" };
29
212
  /**
30
- * The following properties are available when connecting a joint of `JOINT_TYPE_WHEEL` type:
213
+ * Wheel joint; uses the axis, motor, frequency, and damping fields from physics.joint_properties.
31
214
  */
32
215
  const JOINT_TYPE_WHEEL: number & { readonly __brand: "physics.JOINT_TYPE_WHEEL" };
216
+ /**
217
+ * Box shape.
218
+ */
33
219
  const SHAPE_TYPE_BOX: number & { readonly __brand: "physics.SHAPE_TYPE_BOX" };
220
+ /**
221
+ * Capsule shape; supported only by 3D physics.
222
+ */
34
223
  const SHAPE_TYPE_CAPSULE: number & { readonly __brand: "physics.SHAPE_TYPE_CAPSULE" };
224
+ /**
225
+ * Convex hull shape.
226
+ */
35
227
  const SHAPE_TYPE_HULL: number & { readonly __brand: "physics.SHAPE_TYPE_HULL" };
228
+ /**
229
+ * Triangle mesh shape; supported only by the Bullet 3D backend.
230
+ */
231
+ const SHAPE_TYPE_MESH: number & { readonly __brand: "physics.SHAPE_TYPE_MESH" };
232
+ /**
233
+ * Sphere shape.
234
+ */
36
235
  const SHAPE_TYPE_SPHERE: number & { readonly __brand: "physics.SHAPE_TYPE_SPHERE" };
37
236
  /**
38
237
  * Create a physics joint between two collision object components.
@@ -44,11 +243,9 @@ declare global {
44
243
  * @param position_a - local position where to attach the joint on the first collision object
45
244
  * @param collisionobject_b - second collision object
46
245
  * @param position_b - local position where to attach the joint on the second collision object
47
- * @param properties - optional joint specific properties table
48
- * See each joint type for possible properties field. The one field that is accepted for all joint types is:
49
- * - boolean `collide_connected`: Set this flag to true if the attached bodies should collide.
246
+ * @param properties - optional joint-specific properties
50
247
  */
51
- function create_joint(joint_type: number, collisionobject_a: string | Hash | Url, joint_id: string | Hash, position_a: Vector3, collisionobject_b: string | Hash | Url, position_b: Vector3, properties?: { collide_connected?: boolean }): void;
248
+ function create_joint(joint_type: physics.JOINT_TYPE, collisionobject_a: string | Hash | Url, joint_id: string | Hash, position_a: Vector3, collisionobject_b: string | Hash | Url, position_b: Vector3, properties?: physics.joint_properties): void;
52
249
  /**
53
250
  * Destroy an already physics joint. The joint has to be created before a
54
251
  * destroy can be issued.
@@ -82,12 +279,13 @@ declare global {
82
279
  *
83
280
  * @param url - the collision object to return the group of.
84
281
  * @returns hash value of the group.
85
- *
86
- * `local function check_is_enemy()
87
- * local group = physics.get_group("#collisionobject")
88
- * return group == hash("enemy")
89
- * end
90
- * `
282
+ * @example
283
+ * ```ts
284
+ * function check_is_enemy(): boolean {
285
+ * const group = physics.get_group("#collisionobject");
286
+ * return group === hash("enemy");
287
+ * }
288
+ * ```
91
289
  */
92
290
  function get_group(url: string | Hash | Url): Hash;
93
291
  /**
@@ -97,11 +295,9 @@ declare global {
97
295
  *
98
296
  * @param collisionobject - collision object where the joint exist
99
297
  * @param joint_id - id of the joint
100
- * @returns properties table. See the joint types for what fields are available, the only field available for all types is:
101
- *
102
- * - boolean `collide_connected`: Set this flag to true if the attached bodies should collide.
298
+ * @returns joint properties
103
299
  */
104
- function get_joint_properties(collisionobject: string | Hash | Url, joint_id: string | Hash): { collide_connected: boolean };
300
+ function get_joint_properties(collisionobject: string | Hash | Url, joint_id: string | Hash): physics.joint_properties_info;
105
301
  /**
106
302
  * Get the reaction force for a joint. The joint has to be created before
107
303
  * the reaction force can be calculated.
@@ -129,59 +325,32 @@ declare global {
129
325
  * @param url - the collision object to check the mask of.
130
326
  * @param group - the name of the group to check for.
131
327
  * @returns boolean value of the maskbit. 'true' if present, 'false' otherwise.
132
- *
133
- * `local function is_invincible()
134
- * -- check if the collisionobject would collide with the "bullet" group
135
- * local invincible = physics.get_maskbit("#collisionobject", "bullet")
136
- * return invincible
137
- * end
138
- * `
328
+ * @example
329
+ * ```ts
330
+ * function is_invincible(): boolean {
331
+ * // check if the collisionobject would collide with the "bullet" group
332
+ * const invincible = physics.get_maskbit("#collisionobject", "bullet");
333
+ * return invincible;
334
+ * }
335
+ * ```
139
336
  */
140
- function get_maskbit(url: string | Hash | Url, group: string): boolean;
337
+ function get_maskbit(url: string | Hash | Url, group: string | Hash): boolean;
141
338
  /**
142
339
  * Gets collision shape data from a collision object
143
340
  *
144
341
  * @param url - the collision object.
145
342
  * @param shape - the name of the shape to get data for.
146
- * @returns A table containing meta data about the physics shape
147
- *
148
- * `type`
149
- * number The shape type. Supported values:
150
- *
151
- * - `physics.SHAPE_TYPE_SPHERE`
152
- *
153
- * - `physics.SHAPE_TYPE_BOX`
154
- *
155
- * - `physics.SHAPE_TYPE_CAPSULE` *Only supported for 3D physics*
156
- *
157
- * - `physics.SHAPE_TYPE_HULL`
158
- *
159
- * The returned table contains different fields depending on which type the shape is.
160
- * If the shape is a sphere:
161
- *
162
- * `diameter`
163
- * number the diameter of the sphere shape
164
- *
165
- * If the shape is a box:
166
- *
167
- * `dimensions`
168
- * vector3 a `vmath.vector3` of the box dimensions
169
- *
170
- * If the shape is a capsule:
171
- *
172
- * `diameter`
173
- * number the diameter of the capsule poles
174
- * `height`
175
- * number the height of the capsule
176
- *
177
- * `local function get_shape_meta()
178
- * local sphere = physics.get_shape("#collisionobject", "my_sphere_shape")
179
- * -- returns a table with sphere.diameter
180
- * return sphere
181
- * end
182
- * `
343
+ * @returns collision shape data
344
+ * @example
345
+ * ```ts
346
+ * function get_shape_meta() {
347
+ * const sphere = physics.get_shape("#collisionobject", "my_sphere_shape");
348
+ * // returns a table with sphere.diameter
349
+ * return sphere;
350
+ * }
351
+ * ```
183
352
  */
184
- function get_shape(url: string | Hash | Url, shape: string | Hash): { type: number; diameter?: number; dimensions?: Vector3; height?: number };
353
+ function get_shape(url: string | Hash | Url, shape: string | Hash): physics.shape_data;
185
354
  /**
186
355
  * Ray casts are used to test for intersections against collision objects in the physics world.
187
356
  * Collision objects of types kinematic, dynamic and static are tested against. Trigger objects
@@ -193,10 +362,7 @@ declare global {
193
362
  * @param from - the world position of the start of the ray
194
363
  * @param to - the world position of the end of the ray
195
364
  * @param groups - a lua table containing the hashed groups for which to test collisions against
196
- * @param options - a lua table containing options for the raycast.
197
- *
198
- * `all`
199
- * boolean Set to `true` to return all ray cast hits. If `false`, it will only return the closest hit.
365
+ * @param options - optional ray-cast options
200
366
  * @returns It returns a list. If missed it returns `nil`. See ray_cast_response for details on the returned values.
201
367
  * @example
202
368
  * ```ts
@@ -216,7 +382,8 @@ declare global {
216
382
  * const to = vmath.vector3(from.x, from.y - 100, from.z);
217
383
  * const results = physics.raycast(from, to, self.groups, { all: true });
218
384
  * if (results !== undefined) {
219
- * for (const result of results) {
385
+ * // with `all` set, the ray cast returns every hit as a list
386
+ * for (const result of Array.isArray(results) ? results : [results]) {
220
387
  * handle_result(result);
221
388
  * }
222
389
  * }
@@ -224,7 +391,7 @@ declare global {
224
391
  * });
225
392
  * ```
226
393
  */
227
- 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;
394
+ function raycast(from: Vector3, to: Vector3, groups: Hash[], options?: physics.raycast_options): BuiltinMessages["ray_cast_response"][] | BuiltinMessages["ray_cast_response"] | undefined;
228
395
  /**
229
396
  * Ray casts are used to test for intersections against collision objects in the physics world.
230
397
  * Collision objects of types kinematic, dynamic and static are tested against. Trigger objects
@@ -234,7 +401,6 @@ declare global {
234
401
  * The actual ray cast will be performed during the physics-update.
235
402
  *
236
403
  * - If an object is hit, the result will be reported via a ray_cast_response message.
237
- *
238
404
  * - If there is no object hit, the result will be reported via a ray_cast_missed message.
239
405
  *
240
406
  * NOTE: Ray casts will ignore collision objects that contain the starting point of the ray. This is a limitation in Box2D.
@@ -273,25 +439,18 @@ declare global {
273
439
  /**
274
440
  * Only one physics world event listener can be set at a time.
275
441
  *
276
- * @param callback - A callback that receives an information about all the physics interactions in this physics world.
442
+ * @param callback - A callback that receives information about all physics interactions in this physics world. Pass `nil` to remove the listener.
277
443
  *
278
444
  * `self`
279
- * object The calling script
280
- * `event`
281
- * constant The type of event. Can be one of these messages:
445
+ * script_instance The calling script instance
446
+ * `events`
447
+ * physics.event[] An array of event tables. Each event table contains a `type` field with the hashed name of one of these messages, together with fields specific to that event type:
282
448
  *
283
449
  * - contact_point_event
284
- *
285
450
  * - collision_event
286
- *
287
451
  * - trigger_event
288
- *
289
452
  * - ray_cast_response
290
- *
291
453
  * - ray_cast_missed
292
- *
293
- * `data`
294
- * table The callback value data is a table that contains event-related data. See the documentation for details on the messages.
295
454
  * @example
296
455
  * ```ts
297
456
  * function physics_world_listener(self: unknown, events: unknown) {
@@ -374,7 +533,7 @@ declare global {
374
533
  * });
375
534
  * ```
376
535
  */
377
- function set_event_listener(callback?: (self: unknown, events: unknown) => void): void;
536
+ function set_event_listener(callback?: (self: unknown, events: physics.event[]) => void): void;
378
537
  /**
379
538
  * Set the gravity in runtime. The gravity change is not global, it will only affect
380
539
  * the collection that the function is called from.
@@ -399,13 +558,14 @@ declare global {
399
558
  *
400
559
  * @param url - the collision object affected.
401
560
  * @param group - the new group name to be assigned.
402
- *
403
- * `local function change_collision_group()
404
- * physics.set_group("#collisionobject", "enemy")
405
- * end
406
- * `
561
+ * @example
562
+ * ```ts
563
+ * function change_collision_group() {
564
+ * physics.set_group("#collisionobject", "enemy");
565
+ * }
566
+ * ```
407
567
  */
408
- function set_group(url: string | Hash | Url, group: string): void;
568
+ function set_group(url: string | Hash | Url, group: string | Hash): void;
409
569
  /**
410
570
  * Flips the collision shapes horizontally for a collision object
411
571
  *
@@ -433,21 +593,22 @@ declare global {
433
593
  * @param properties - joint specific properties table
434
594
  * Note: The `collide_connected` field cannot be updated/changed after a connection has been made.
435
595
  */
436
- function set_joint_properties(collisionobject: string | Hash | Url, joint_id: string | Hash, properties: { collide_connected?: boolean }): void;
596
+ function set_joint_properties(collisionobject: string | Hash | Url, joint_id: string | Hash, properties: physics.joint_properties): void;
437
597
  /**
438
598
  * Sets or clears the masking of a group (maskbit) in a collision object.
439
599
  *
440
600
  * @param url - the collision object to change the mask of.
441
601
  * @param group - the name of the group (maskbit) to modify in the mask.
442
602
  * @param maskbit - boolean value of the new maskbit. 'true' to enable, 'false' to disable.
443
- *
444
- * `local function make_invincible()
445
- * -- no longer collide with the "bullet" group
446
- * physics.set_maskbit("#collisionobject", "bullet", false)
447
- * end
448
- * `
603
+ * @example
604
+ * ```ts
605
+ * function make_invincible() {
606
+ * // no longer collide with the "bullet" group
607
+ * physics.set_maskbit("#collisionobject", "bullet", false);
608
+ * }
609
+ * ```
449
610
  */
450
- function set_maskbit(url: string | Hash | Url, group: string, maskbit: boolean): void;
611
+ function set_maskbit(url: string | Hash | Url, group: string | Hash, maskbit: boolean): void;
451
612
  /**
452
613
  * Sets collision shape data for a collision object. Please note that updating data in 3D
453
614
  * can be quite costly for box and capsules. Because of the physics engine, the cost
@@ -455,32 +616,33 @@ declare global {
455
616
  *
456
617
  * @param url - the collision object.
457
618
  * @param shape - the name of the shape to get data for.
458
- * @param table - the shape data to update the shape with.
459
- * See physics.get_shape for a detailed description of each field in the data table.
460
- *
461
- * `local function set_shape_data()
462
- * -- set capsule shape data
463
- * local data = {}
464
- * data.type = physics.SHAPE_TYPE_CAPSULE
465
- * data.diameter = 10
466
- * data.height = 20
467
- * physics.set_shape("#collisionobject", "my_capsule_shape", data)
468
- *
469
- * -- set sphere shape data
470
- * data = {}
471
- * data.type = physics.SHAPE_TYPE_SPHERE
472
- * data.diameter = 10
473
- * physics.set_shape("#collisionobject", "my_sphere_shape", data)
474
- *
475
- * -- set box shape data
476
- * data = {}
477
- * data.type = physics.SHAPE_TYPE_BOX
478
- * data.dimensions = vmath.vector3(10, 10, 5)
479
- * physics.set_shape("#collisionobject", "my_box_shape", data)
480
- * end
481
- * `
482
- */
483
- function set_shape(url: string | Hash | Url, shape: string | Hash, table: { type?: number; diameter?: number; dimensions?: Vector3; height?: number }): void;
619
+ * @param table - updated collision shape data
620
+ * Hull and mesh geometry cannot be changed with this function.
621
+ * @example
622
+ * ```ts
623
+ * function set_shape_data() {
624
+ * // set capsule shape data
625
+ * physics.set_shape("#collisionobject", "my_capsule_shape", {
626
+ * type: physics.SHAPE_TYPE_CAPSULE,
627
+ * diameter: 10,
628
+ * height: 20,
629
+ * });
630
+ *
631
+ * // set sphere shape data
632
+ * physics.set_shape("#collisionobject", "my_sphere_shape", {
633
+ * type: physics.SHAPE_TYPE_SPHERE,
634
+ * diameter: 10,
635
+ * });
636
+ *
637
+ * // set box shape data
638
+ * physics.set_shape("#collisionobject", "my_box_shape", {
639
+ * type: physics.SHAPE_TYPE_BOX,
640
+ * dimensions: vmath.vector3(10, 10, 5),
641
+ * });
642
+ * }
643
+ * ```
644
+ */
645
+ function set_shape(url: string | Hash | Url, shape: string | Hash, table: physics.shape_data): void;
484
646
  /**
485
647
  * Flips the collision shapes vertically for a collision object
486
648
  *
@@ -515,15 +677,85 @@ declare global {
515
677
  * efficiency reasons. This function wakes them up.
516
678
  *
517
679
  * @param url - the collision object to wake.
518
- *
519
- * `function on_input(self, action_id, action)
520
- * if action_id == hash("test") and action.pressed then
521
- * physics.wakeup("#collisionobject")
522
- * end
523
- * end
524
- * `
680
+ * @example
681
+ * ```ts
682
+ * export default defineScript({
683
+ * on_input(self, action_id, action) {
684
+ * if (action_id === hash("test") && action.pressed) {
685
+ * physics.wakeup("#collisionobject");
686
+ * }
687
+ * },
688
+ * });
689
+ * ```
525
690
  */
526
691
  function wakeup(url: string | Hash | Url): void;
692
+ namespace message {
693
+ namespace physics {
694
+ /**
695
+ * collision object information
696
+ */
697
+ interface collision_info {
698
+ /**
699
+ * object position in world space
700
+ */
701
+ position: Vector3;
702
+ /**
703
+ * object identifier
704
+ */
705
+ id: Hash;
706
+ /**
707
+ * object collision group
708
+ */
709
+ group: Hash;
710
+ }
711
+ /**
712
+ * contact-point object information
713
+ */
714
+ interface contact_point_info {
715
+ /**
716
+ * contact point position in world space
717
+ */
718
+ position: Vector3;
719
+ /**
720
+ * object position in world space
721
+ */
722
+ instance_position: Vector3;
723
+ /**
724
+ * contact normal pointing from the other object toward this object
725
+ */
726
+ normal: Vector3;
727
+ /**
728
+ * object velocity relative to the other object
729
+ */
730
+ relative_velocity: Vector3;
731
+ /**
732
+ * object mass in kilograms
733
+ */
734
+ mass: number;
735
+ /**
736
+ * object identifier
737
+ */
738
+ id: Hash;
739
+ /**
740
+ * object collision group
741
+ */
742
+ group: Hash;
743
+ }
744
+ /**
745
+ * trigger interaction object information
746
+ */
747
+ interface trigger_info {
748
+ /**
749
+ * object identifier
750
+ */
751
+ id: Hash;
752
+ /**
753
+ * object collision group
754
+ */
755
+ group: Hash;
756
+ }
757
+ }
758
+ }
527
759
  interface properties {
528
760
  /**
529
761
  * The angular damping value for the collision object. Setting this value alters the damping of
@@ -549,7 +781,7 @@ declare global {
549
781
  /**
550
782
  * READ ONLY Returns the defined physical mass of the collision object component as a number.
551
783
  */
552
- mass: number;
784
+ readonly mass: number;
553
785
  }
554
786
  }
555
787
  }