@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
@@ -10,7 +10,6 @@ declare global {
10
10
  * Constructor-like function with two purposes:
11
11
  *
12
12
  * - Load the specified resource as part of loading the script
13
- *
14
13
  * - Return a hash to the run-time version of the resource
15
14
  *
16
15
  * This function can only be called within go.property function calls.
@@ -51,7 +50,6 @@ declare global {
51
50
  * Constructor-like function with two purposes:
52
51
  *
53
52
  * - Load the specified resource as part of loading the script
54
- *
55
53
  * - Return a hash to the run-time version of the resource
56
54
  *
57
55
  * This function can only be called within go.property function calls.
@@ -150,18 +148,23 @@ declare global {
150
148
  *
151
149
  * - `indices`
152
150
  * table a list of the indices of the geometry in the form {i0, i1, i2, ..., in}. Each tripe in the list represents a triangle.
151
+ *
152
+ * **⚠️ `frame_start` is 1-based; passed to Defold unchanged.** **⚠️ `frame_end` is 1-based; passed to Defold unchanged.** **⚠️ `frame_start` is 1-based; passed to Defold unchanged.** **⚠️ `frame_end` is 1-based; passed to Defold unchanged.** **⚠️ `frames` is 1-based; passed to Defold unchanged.** **0️⃣ `indices` is 0-based; passed to Defold unchanged.**
153
153
  * @returns Returns the atlas resource path
154
154
  * @example
155
155
  * ```ts
156
156
  * // Create a backing texture and an atlas
157
157
  * export default defineScript({
158
158
  * init() {
159
+ * // the engine registers a texture format only when the driver supports it
160
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
161
+ * if (format === undefined) return;
159
162
  * // create an empty texture
160
163
  * const tparams = {
161
164
  * width: 128,
162
165
  * height: 128,
163
166
  * type: graphics.TEXTURE_TYPE_2D,
164
- * format: graphics.TEXTURE_FORMAT_RGBA,
167
+ * format,
165
168
  * };
166
169
  * const my_texture_id = resource.create_texture("/my_texture.texturec", tparams);
167
170
  *
@@ -192,7 +195,7 @@ declare global {
192
195
  * indices: [0, 1, 2, 0, 2, 3],
193
196
  * },
194
197
  * ],
195
- * };
198
+ * } satisfies Parameters<typeof resource.create_atlas>[1];
196
199
  * const my_atlas_id = resource.create_atlas("/my_atlas.texturesetc", aparams);
197
200
  *
198
201
  * // assign the atlas to the 'sprite' component on the same go
@@ -201,7 +204,7 @@ declare global {
201
204
  * });
202
205
  * ```
203
206
  */
204
- function create_atlas(path: string, table: { texture?: string | Hash; animations?: { id?: string; width?: number; height?: number; frame_start?: number; frame_end?: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean }[]; geometries?: { id?: string; width?: number; height?: number; pivot_x?: number; pivot_y?: number; rotated?: boolean }[]; vertices?: number[]; uvs?: number[]; indices?: number[] }): Hash;
207
+ function create_atlas(path: string, table: { texture: string | Hash; animations: [{ id: string; width: number; height: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean } & ({ frames: [number, ...number[]] } | { frame_start: number; frame_end: number }), ...({ id: string; width: number; height: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean } & ({ frames: [number, ...number[]] } | { frame_start: number; frame_end: number }))[]]; geometries: [{ id?: string; width?: number; height?: number; pivot_x?: number; pivot_y?: number; rotated?: boolean; vertices: number[]; uvs: number[]; indices: number[] }, ...{ id?: string; width?: number; height?: number; pivot_x?: number; pivot_y?: number; rotated?: boolean; vertices: number[]; uvs: number[]; indices: number[] }[]]; vertices?: number[]; uvs?: number[]; indices?: number[] }): Hash;
205
208
  /**
206
209
  * This function creates a new buffer resource that can be used in the same way as any buffer created during build time.
207
210
  * The function requires a valid buffer created from either buffer.create or another pre-existing buffer resource.
@@ -274,7 +277,7 @@ declare global {
274
277
  * });
275
278
  * ```
276
279
  */
277
- function create_buffer(path: string, table?: { buffer?: Opaque<"buffer">; transfer_ownership?: boolean }): Hash;
280
+ function create_buffer(path: string, table: { buffer: Opaque<"buffer">; transfer_ownership?: boolean }): Hash;
278
281
  /**
279
282
  * Creates a sound data resource
280
283
  * Supported formats are .oggc, .opusc and .wavc
@@ -307,7 +310,7 @@ declare global {
307
310
  * });
308
311
  * ```
309
312
  */
310
- function create_sound_data(path: string, options?: { data?: string; filesize?: number; partial?: boolean }): Hash;
313
+ function create_sound_data(path: string, options: { data: string | Opaque<"buffer">; filesize?: number; partial?: boolean }): Hash;
311
314
  /**
312
315
  * Creates a new texture resource that can be used in the same way as any texture created during build time.
313
316
  * The path used for creating the texture must be unique, trying to create a resource at a path that is already
@@ -323,13 +326,9 @@ declare global {
323
326
  * number The texture type. Supported values:
324
327
  *
325
328
  * - `graphics.TEXTURE_TYPE_2D`
326
- *
327
329
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
328
- *
329
330
  * - `graphics.TEXTURE_TYPE_3D`
330
- *
331
331
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
332
- *
333
332
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
334
333
  *
335
334
  * `width`
@@ -342,68 +341,46 @@ declare global {
342
341
  * number The texture format, note that some of these formats might not be supported by the running device. Supported values:
343
342
  *
344
343
  * - `graphics.TEXTURE_FORMAT_LUMINANCE`
345
- *
346
344
  * - `graphics.TEXTURE_FORMAT_RGB`
347
- *
348
345
  * - `graphics.TEXTURE_FORMAT_RGBA`
349
346
  *
350
347
  * These constants might not be available on the device:
351
348
  *
352
349
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_2BPPV1`
353
- *
354
350
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_4BPPV1`
355
- *
356
351
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_2BPPV1`
357
- *
358
352
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_4BPPV1`
359
- *
360
353
  * - `graphics.TEXTURE_FORMAT_RGB_ETC1`
361
- *
362
354
  * - `graphics.TEXTURE_FORMAT_RGBA_ETC2`
363
- *
364
355
  * - `graphics.TEXTURE_FORMAT_RGBA_ASTC_4X4`
365
- *
366
356
  * - `graphics.TEXTURE_FORMAT_RGB_BC1`
367
- *
368
357
  * - `graphics.TEXTURE_FORMAT_RGBA_BC3`
369
- *
370
358
  * - `graphics.TEXTURE_FORMAT_R_BC4`
371
- *
372
359
  * - `graphics.TEXTURE_FORMAT_RG_BC5`
373
- *
374
360
  * - `graphics.TEXTURE_FORMAT_RGBA_BC7`
375
- *
376
361
  * - `graphics.TEXTURE_FORMAT_RGB16F`
377
- *
378
362
  * - `graphics.TEXTURE_FORMAT_RGB32F`
379
- *
380
363
  * - `graphics.TEXTURE_FORMAT_RGBA16F`
381
- *
382
364
  * - `graphics.TEXTURE_FORMAT_RGBA32F`
383
- *
384
365
  * - `graphics.TEXTURE_FORMAT_R16F`
385
- *
386
366
  * - `graphics.TEXTURE_FORMAT_RG16F`
387
- *
388
367
  * - `graphics.TEXTURE_FORMAT_R32F`
389
- *
390
368
  * - `graphics.TEXTURE_FORMAT_RG32F`
391
369
  *
392
370
  * You can test if the device supports these values by checking if a specific enum is nil or not:
393
371
  *
394
- * `if graphics.TEXTURE_FORMAT_RGBA16F ~= nil then
395
- * -- it is safe to use this format
396
- * end
397
- * `
372
+ * ```ts
373
+ * if (graphics.TEXTURE_FORMAT_RGBA16F !== undefined) {
374
+ * // it is safe to use this format
375
+ * }
376
+ * ```
398
377
  *
399
378
  * `flags`
400
379
  * number Texture creation flags that can be used to dictate how the texture is created. The default value is graphics.TEXTURE_USAGE_FLAG_SAMPLE, which means that the texture can be sampled from a shader.
401
380
  * These flags may or may not be supported on the running device and/or the underlying graphics API and is simply used internally as a 'hint' when creating the texture. There is no guarantee that any of these will have any effect. Supported values:
402
381
  *
403
382
  * - `graphics.TEXTURE_USAGE_FLAG_SAMPLE` - The texture can be sampled from a shader (default)
404
- *
405
383
  * - `graphics.TEXTURE_USAGE_FLAG_MEMORYLESS` - The texture can be used as a memoryless texture, i.e only transient memory for the texture is used during rendering
406
- *
407
384
  * - `graphics.TEXTURE_USAGE_FLAG_STORAGE` - The texture can be used as a storage texture, which is required for a shader to write to the texture
408
385
  *
409
386
  * `max_mipmaps`
@@ -413,15 +390,14 @@ declare global {
413
390
  * Creating an empty texture with no buffer data is not supported as a core feature. Defaults to graphics.COMPRESSION_TYPE_DEFAULT, i.e no compression. Supported values:
414
391
  *
415
392
  * - `COMPRESSION_TYPE_DEFAULT`
416
- *
417
393
  * - `COMPRESSION_TYPE_BASIS_UASTC`
418
394
  * @param buffer - optional buffer of precreated pixel data
419
395
  * @returns The path to the resource.
420
396
  * 3D Textures are currently only supported on OpenGL and Vulkan adapters. To check if your device supports 3D textures, use:
421
- * ```lua
422
- * if graphics.TEXTURE_TYPE_3D ~= nil then
423
- * -- Device and graphics adapter support 3D textures
424
- * end
397
+ * ```ts
398
+ * if (graphics.TEXTURE_TYPE_3D !== undefined) {
399
+ * // Device and graphics adapter support 3D textures
400
+ * }
425
401
  * ```
426
402
  * @example
427
403
  * How to create an 128x128 RGBA texture resource and assign it to a model
@@ -429,11 +405,14 @@ declare global {
429
405
  * // How to create an 128x128 RGBA texture resource and assign it to a model
430
406
  * export default defineScript({
431
407
  * init() {
408
+ * // the engine registers a texture format only when the driver supports it
409
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
410
+ * if (format === undefined) return;
432
411
  * const tparams = {
433
412
  * width: 128,
434
413
  * height: 128,
435
414
  * type: graphics.TEXTURE_TYPE_2D,
436
- * format: graphics.TEXTURE_FORMAT_RGBA,
415
+ * format,
437
416
  * };
438
417
  * const my_texture_id = resource.create_texture("/my_custom_texture.texturec", tparams);
439
418
  * go.set("#model", "texture0", my_texture_id);
@@ -446,6 +425,9 @@ declare global {
446
425
  * // How to create an 128x128 floating point texture (RGBA32F) resource from a buffer object
447
426
  * export default defineScript({
448
427
  * init() {
428
+ * // the engine registers a texture format only when the driver supports it
429
+ * const format = graphics.TEXTURE_FORMAT_RGBA32F;
430
+ * if (format === undefined) return;
449
431
  * // Create a new buffer with 4 components and FLOAT32 type
450
432
  * const tbuffer = buffer.create(128 * 128, [{ name: hash("rgba"), type: buffer.VALUE_TYPE_FLOAT32, count: 4 }]);
451
433
  * const tstream = buffer.get_stream(tbuffer, hash("rgba"));
@@ -466,7 +448,7 @@ declare global {
466
448
  * width: 128,
467
449
  * height: 128,
468
450
  * type: graphics.TEXTURE_TYPE_2D,
469
- * format: graphics.TEXTURE_FORMAT_RGBA32F,
451
+ * format,
470
452
  * };
471
453
  *
472
454
  * // Note that we pass the buffer as the last argument here!
@@ -483,12 +465,16 @@ declare global {
483
465
  * // How to create a 32x32x32 floating point 3D texture that can be used to generate volumetric data in a compute shader
484
466
  * export default defineScript({
485
467
  * init() {
468
+ * // the engine registers a texture type or format only when the driver supports it
469
+ * const type = graphics.TEXTURE_TYPE_IMAGE_3D;
470
+ * const format = graphics.TEXTURE_FORMAT_RGBA32F;
471
+ * if (type === undefined || format === undefined) return;
486
472
  * const t_volume = resource.create_texture("/my_backing_texture.texturec", {
487
- * type: graphics.TEXTURE_TYPE_IMAGE_3D,
473
+ * type,
488
474
  * width: 32,
489
475
  * height: 32,
490
476
  * depth: 32,
491
- * format: graphics.TEXTURE_FORMAT_RGBA32F,
477
+ * format,
492
478
  * flags: graphics.TEXTURE_USAGE_FLAG_STORAGE + graphics.TEXTURE_USAGE_FLAG_SAMPLE,
493
479
  * });
494
480
  *
@@ -501,16 +487,20 @@ declare global {
501
487
  * How to create 512x512 texture array with 5 pages.
502
488
  * ```ts
503
489
  * // How to create 512x512 texture array with 5 pages.
504
- * const new_tex = resource.create_texture("/runtime/example_array.texturec", {
505
- * type: graphics.TEXTURE_TYPE_2D_ARRAY,
506
- * width: 512,
507
- * height: 512,
508
- * page_count: 5,
509
- * format: graphics.TEXTURE_FORMAT_RGB,
510
- * });
490
+ * // the engine registers a texture format only when the driver supports it
491
+ * const format = graphics.TEXTURE_FORMAT_RGB;
492
+ * if (format !== undefined) {
493
+ * const new_tex = resource.create_texture("/runtime/example_array.texturec", {
494
+ * type: graphics.TEXTURE_TYPE_2D_ARRAY,
495
+ * width: 512,
496
+ * height: 512,
497
+ * page_count: 5,
498
+ * format,
499
+ * });
500
+ * }
511
501
  * ```
512
502
  */
513
- function create_texture(path: string, table: { type?: number; width?: number; height?: number; depth?: number; format?: number; flags?: number; max_mipmaps?: number; compression_type?: number; page_count?: number }, buffer?: Opaque<"buffer">): Hash;
503
+ function create_texture(path: string, table: { type: number; width: number; height: number; depth?: number; format: number; flags?: number; max_mipmaps?: number; compression_type?: number; page_count?: number }, buffer?: Opaque<"buffer">): Hash;
514
504
  /**
515
505
  * Creates a new texture resource that can be used in the same way as any texture created during build time.
516
506
  * The path used for creating the texture must be unique, trying to create a resource at a path that is already
@@ -529,13 +519,9 @@ declare global {
529
519
  * number The texture type. Supported values:
530
520
  *
531
521
  * - `graphics.TEXTURE_TYPE_2D`
532
- *
533
522
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
534
- *
535
523
  * - `graphics.TEXTURE_TYPE_3D`
536
- *
537
524
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
538
- *
539
525
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
540
526
  *
541
527
  * `width`
@@ -548,67 +534,45 @@ declare global {
548
534
  * number The texture format, note that some of these formats might not be supported by the running device. Supported values:
549
535
  *
550
536
  * - `graphics.TEXTURE_FORMAT_LUMINANCE`
551
- *
552
537
  * - `graphics.TEXTURE_FORMAT_RGB`
553
- *
554
538
  * - `graphics.TEXTURE_FORMAT_RGBA`
555
539
  *
556
540
  * These constants might not be available on the device:
557
541
  *
558
542
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_2BPPV1`
559
- *
560
543
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_4BPPV1`
561
- *
562
544
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_2BPPV1`
563
- *
564
545
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_4BPPV1`
565
- *
566
546
  * - `graphics.TEXTURE_FORMAT_RGB_ETC1`
567
- *
568
547
  * - `graphics.TEXTURE_FORMAT_RGBA_ETC2`
569
- *
570
548
  * - `graphics.TEXTURE_FORMAT_RGBA_ASTC_4X4`
571
- *
572
549
  * - `graphics.TEXTURE_FORMAT_RGB_BC1`
573
- *
574
550
  * - `graphics.TEXTURE_FORMAT_RGBA_BC3`
575
- *
576
551
  * - `graphics.TEXTURE_FORMAT_R_BC4`
577
- *
578
552
  * - `graphics.TEXTURE_FORMAT_RG_BC5`
579
- *
580
553
  * - `graphics.TEXTURE_FORMAT_RGBA_BC7`
581
- *
582
554
  * - `graphics.TEXTURE_FORMAT_RGB16F`
583
- *
584
555
  * - `graphics.TEXTURE_FORMAT_RGB32F`
585
- *
586
556
  * - `graphics.TEXTURE_FORMAT_RGBA16F`
587
- *
588
557
  * - `graphics.TEXTURE_FORMAT_RGBA32F`
589
- *
590
558
  * - `graphics.TEXTURE_FORMAT_R16F`
591
- *
592
559
  * - `graphics.TEXTURE_FORMAT_RG16F`
593
- *
594
560
  * - `graphics.TEXTURE_FORMAT_R32F`
595
- *
596
561
  * - `graphics.TEXTURE_FORMAT_RG32F`
597
562
  *
598
563
  * You can test if the device supports these values by checking if a specific enum is nil or not:
599
564
  *
600
- * `if graphics.TEXTURE_FORMAT_RGBA16F ~= nil then
601
- * -- it is safe to use this format
602
- * end
603
- * `
565
+ * ```ts
566
+ * if (graphics.TEXTURE_FORMAT_RGBA16F !== undefined) {
567
+ * // it is safe to use this format
568
+ * }
569
+ * ```
604
570
  *
605
571
  * `flags`
606
572
  * number Texture creation flags that can be used to dictate how the texture is created. Supported values:
607
573
  *
608
574
  * - `graphics.TEXTURE_USAGE_FLAG_SAMPLE` - The texture can be sampled from a shader (default)
609
- *
610
575
  * - `graphics.TEXTURE_USAGE_FLAG_MEMORYLESS` - The texture can be used as a memoryless texture, i.e only transient memory for the texture is used during rendering
611
- *
612
576
  * - `graphics.TEXTURE_USAGE_FLAG_STORAGE` - The texture can be used as a storage texture, which is required for a shader to write to the texture
613
577
  *
614
578
  * `max_mipmaps`
@@ -618,7 +582,6 @@ declare global {
618
582
  * Creating an empty texture with no buffer data is not supported as a core feature. Defaults to graphics.COMPRESSION_TYPE_DEFAULT, i.e no compression. Supported values:
619
583
  *
620
584
  * - `COMPRESSION_TYPE_DEFAULT`
621
- *
622
585
  * - `COMPRESSION_TYPE_BASIS_UASTC`
623
586
  * @param buffer - optional buffer of precreated pixel data
624
587
  * @param callback - callback function when texture is created (self, request_id, resource)
@@ -667,17 +630,20 @@ declare global {
667
630
  * });
668
631
  * ```
669
632
  * @example
670
- * Create a texture resource asyncronously without a callback
633
+ * Create a texture resource asynchronously with a callback that does nothing
671
634
  * ```ts
672
- * // Create a texture resource asyncronously without a callback
635
+ * // Create a texture resource asyncronously without handling its completion
673
636
  * export default defineScript({
674
637
  * init() {
638
+ * // the engine registers a texture format only when the driver supports it
639
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
640
+ * if (format === undefined) return;
675
641
  * // Create a texture resource async
676
642
  * const tparams = {
677
643
  * width: 128,
678
644
  * height: 128,
679
645
  * type: graphics.TEXTURE_TYPE_2D,
680
- * format: graphics.TEXTURE_FORMAT_RGBA,
646
+ * format,
681
647
  * };
682
648
  *
683
649
  * // Create a new buffer with 4 components
@@ -695,7 +661,8 @@ declare global {
695
661
  * }
696
662
  * }
697
663
  * // create the texture
698
- * const [tpath, request_id] = resource.create_texture_async("/my_texture.texturec", tparams, tbuffer);
664
+ * // the binding requires a callback function, so pass one that does nothing
665
+ * const [tpath, request_id] = resource.create_texture_async("/my_texture.texturec", tparams, tbuffer, () => {});
699
666
  * // at this point you can use the resource as-is, but note that the texture will be a blank 1x1 texture
700
667
  * // that will be removed once the new texture has been updated
701
668
  * go.set("#model", "texture0", tpath);
@@ -703,12 +670,11 @@ declare global {
703
670
  * });
704
671
  * ```
705
672
  */
706
- function create_texture_async(path: string | Hash, table: { type?: number; width?: number; height?: number; depth?: number; format?: number; flags?: number; max_mipmaps?: number; compression_type?: number }, buffer?: Opaque<"buffer">, callback?: (...args: unknown[]) => unknown): LuaMultiReturn<[Hash, number]>;
673
+ function create_texture_async(path: string, table: { type: number; width: number; height: number; depth?: number; format: number; flags?: number; max_mipmaps?: number; compression_type?: number }, buffer: Opaque<"buffer"> | undefined, callback: (...args: unknown[]) => unknown): LuaMultiReturn<[Hash, number]>;
707
674
  /**
708
675
  * Constructor-like function with two purposes:
709
676
  *
710
677
  * - Load the specified resource as part of loading the script
711
- *
712
678
  * - Return a hash to the run-time version of the resource
713
679
  *
714
680
  * This function can only be called within go.property function calls.
@@ -752,14 +718,14 @@ declare global {
752
718
  * @returns A table with the following entries:
753
719
  *
754
720
  * - texture
755
- *
756
721
  * - geometries
757
- *
758
722
  * - animations
759
723
  *
760
724
  * Each animation entry also contains a `frames` table with indices into
761
725
  * `geometries`, preserving the frame-to-geometry mapping used by the atlas.
762
726
  * See resource.set_atlas for a detailed description of each field
727
+ *
728
+ * **⚠️ `frames` is 1-based; passed to Defold unchanged.** **0️⃣ `indices` is 0-based; passed to Defold unchanged.**
763
729
  */
764
730
  function get_atlas(path: Hash | string): { texture: string | Hash; animations: { id: string; width: number; height: number; frame_start: number; frame_end: number; playback: go.Playback; fps: number; flip_vertical: boolean; flip_horizontal: boolean }[]; geometries: { vertices: number[]; uvs: number[]; indices: number[] }[] };
765
731
  /**
@@ -806,26 +772,18 @@ declare global {
806
772
  * number The texture type. Supported values:
807
773
  *
808
774
  * - `graphics.TEXTURE_TYPE_2D`
809
- *
810
775
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
811
- *
812
776
  * - `graphics.TEXTURE_TYPE_2D_ARRAY`
813
777
  *
814
778
  * `buffer_type`
815
779
  * number The attachment buffer type. Supported values:
816
780
  *
817
781
  * - `resource.BUFFER_TYPE_COLOR0`
818
- *
819
782
  * - `resource.BUFFER_TYPE_COLOR1`
820
- *
821
783
  * - `resource.BUFFER_TYPE_COLOR2`
822
- *
823
784
  * - `resource.BUFFER_TYPE_COLOR3`
824
- *
825
785
  * - `resource.BUFFER_TYPE_DEPTH`
826
- *
827
786
  * - `resource.BUFFER_TYPE_STENCIL`
828
- *
829
787
  * - `texture`
830
788
  * hash The hashed path to the attachment texture resource. This field is only available if the render target passed in is a resource.
831
789
  * @example
@@ -876,11 +834,8 @@ declare global {
876
834
  * @returns a table with the following fields:
877
835
  *
878
836
  * - width
879
- *
880
837
  * - height
881
- *
882
838
  * - max_ascent
883
- *
884
839
  * - max_descent
885
840
  * @example
886
841
  * ```ts
@@ -893,7 +848,7 @@ declare global {
893
848
  * });
894
849
  * ```
895
850
  */
896
- function get_text_metrics(url: Hash, text: string, options?: { width?: number; leading?: number; tracking?: number; line_break?: boolean }): { width: number; height: number; max_ascent: number; max_descent: number };
851
+ function get_text_metrics(url: Hash | string, text: string, options?: { width?: number; leading?: number; tracking?: number; line_break?: boolean }): { width: number; height: number; max_ascent: number; max_descent: number };
897
852
  /**
898
853
  * Gets texture info from a texture resource path or a texture handle
899
854
  *
@@ -918,15 +873,10 @@ declare global {
918
873
  * number The texture type. Supported values:
919
874
  *
920
875
  * - `graphics.TEXTURE_TYPE_2D`
921
- *
922
876
  * - `graphics.TEXTURE_TYPE_2D_ARRAY`
923
- *
924
877
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
925
- *
926
878
  * - `graphics.TEXTURE_TYPE_3D`
927
- *
928
879
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
929
- *
930
880
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
931
881
  * @example
932
882
  * Create a new texture and get the metadata from it
@@ -934,12 +884,15 @@ declare global {
934
884
  * // Create a new texture and get the metadata from it
935
885
  * export default defineScript({
936
886
  * init() {
887
+ * // the engine registers a texture format only when the driver supports it
888
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
889
+ * if (format === undefined) return;
937
890
  * // create an empty texture
938
891
  * const tparams = {
939
892
  * width: 128,
940
893
  * height: 128,
941
894
  * type: graphics.TEXTURE_TYPE_2D,
942
- * format: graphics.TEXTURE_FORMAT_RGBA,
895
+ * format,
943
896
  * };
944
897
  *
945
898
  * const my_texture_path = resource.create_texture("/my_texture.texturec", tparams);
@@ -983,9 +936,11 @@ declare global {
983
936
  * ```ts
984
937
  * // read custom resource data into buffer
985
938
  * const buffer = resource.load("/resources/datafile");
986
- *
987
- * // In order for the engine to include custom resources in the build process, you
988
- * // need to specify them in the "game.project" settings file:
939
+ * ```
940
+ * @example
941
+ * In order for the engine to include custom resources in the build process, you need
942
+ * to specify them in the "game.project" settings file:
943
+ * ```ts
989
944
  * // [project]
990
945
  * // title = My project
991
946
  * // version = 0.1
@@ -997,7 +952,6 @@ declare global {
997
952
  * Constructor-like function with two purposes:
998
953
  *
999
954
  * - Load the specified resource as part of loading the script
1000
- *
1001
955
  * - Return a hash to the run-time version of the resource
1002
956
  *
1003
957
  * This function can only be called within go.property function calls.
@@ -1045,7 +999,6 @@ declare global {
1045
999
  * Constructor-like function with two purposes:
1046
1000
  *
1047
1001
  * - Load the specified resource as part of loading the script
1048
- *
1049
1002
  * - Return a hash to the run-time version of the resource
1050
1003
  *
1051
1004
  * This function can only be called within go.property function calls.
@@ -1142,6 +1095,8 @@ declare global {
1142
1095
  *
1143
1096
  * - `indices`
1144
1097
  * table a list of the indices of the geometry in the form {i0, i1, i2, ..., in}. Each tripe in the list represents a triangle.
1098
+ *
1099
+ * **⚠️ `frame_start` is 1-based; passed to Defold unchanged.** **⚠️ `frame_end` is 1-based; passed to Defold unchanged.** **⚠️ `frame_start` is 1-based; passed to Defold unchanged.** **⚠️ `frame_end` is 1-based; passed to Defold unchanged.** **⚠️ `frames` is 1-based; passed to Defold unchanged.** **0️⃣ `indices` is 0-based; passed to Defold unchanged.**
1145
1100
  * @example
1146
1101
  * Add a new animation to an existing atlas
1147
1102
  * ```ts
@@ -1160,8 +1115,22 @@ declare global {
1160
1115
  * flip_vertical: false,
1161
1116
  * flip_horizontal: false,
1162
1117
  * };
1163
- * data.animations.push(my_animation);
1164
- * resource.set_atlas("/main/my_atlas.a.texturesetc", data);
1118
+ * // set_atlas takes each animation's frames as a non-empty list
1119
+ * const animations = data.animations.flatMap((animation) => {
1120
+ * // an animation described by frame_start/frame_end passes through as-is
1121
+ * if (!("frames" in animation)) return [animation];
1122
+ * const [first, ...rest] = (animation.frames as number[] | undefined) ?? [];
1123
+ * return first === undefined ? [] : [{ ...animation, frames: [first, ...rest] as [number, ...number[]] }];
1124
+ * });
1125
+ * // set_atlas needs at least one animation and one geometry
1126
+ * const [first_geometry, ...geometries] = data.geometries;
1127
+ * if (first_geometry !== undefined) {
1128
+ * resource.set_atlas("/main/my_atlas.a.texturesetc", {
1129
+ * ...data,
1130
+ * animations: [my_animation, ...animations],
1131
+ * geometries: [first_geometry, ...geometries],
1132
+ * });
1133
+ * }
1165
1134
  * },
1166
1135
  * });
1167
1136
  * ```
@@ -1188,13 +1157,13 @@ declare global {
1188
1157
  * indices: [0, 1, 2, 0, 2, 3],
1189
1158
  * },
1190
1159
  * ],
1191
- * };
1160
+ * } satisfies Parameters<typeof resource.set_atlas>[1];
1192
1161
  * resource.set_atlas("/main/test.a.texturesetc", params);
1193
1162
  * },
1194
1163
  * });
1195
1164
  * ```
1196
1165
  */
1197
- function set_atlas(path: Hash | string, table: { texture?: string | Hash; animations?: { id?: string; width?: number; height?: number; frame_start?: number; frame_end?: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean }[]; geometries?: { vertices?: number[]; uvs?: number[]; indices?: number[] }[]; vertices?: number[]; uvs?: number[]; indices?: number[] }): void;
1166
+ function set_atlas(path: Hash | string, table: { texture: string | Hash; animations: [{ id: string; width: number; height: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean } & ({ frames: [number, ...number[]] } | { frame_start: number; frame_end: number }), ...({ id: string; width: number; height: number; playback?: go.Playback; fps?: number; flip_vertical?: boolean; flip_horizontal?: boolean } & ({ frames: [number, ...number[]] } | { frame_start: number; frame_end: number }))[]]; geometries: [{ vertices: number[]; uvs: number[]; indices: number[] }, ...{ vertices: number[]; uvs: number[]; indices: number[] }[]]; vertices?: number[]; uvs?: number[]; indices?: number[] }): void;
1198
1167
  /**
1199
1168
  * Sets the buffer of a resource. By default, setting the resource buffer will either copy the data from the incoming buffer object
1200
1169
  * to the buffer stored in the destination resource, or make a new buffer object if the sizes between the source buffer and the destination buffer
@@ -1262,13 +1231,9 @@ declare global {
1262
1231
  * number The texture type. Supported values:
1263
1232
  *
1264
1233
  * - `graphics.TEXTURE_TYPE_2D`
1265
- *
1266
1234
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
1267
- *
1268
1235
  * - `graphics.TEXTURE_TYPE_3D`
1269
- *
1270
1236
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
1271
- *
1272
1237
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
1273
1238
  *
1274
1239
  * `width`
@@ -1279,9 +1244,7 @@ declare global {
1279
1244
  * number The texture format, note that some of these formats are platform specific. Supported values:
1280
1245
  *
1281
1246
  * - `graphics.TEXTURE_FORMAT_LUMINANCE`
1282
- *
1283
1247
  * - `graphics.TEXTURE_FORMAT_RGB`
1284
- *
1285
1248
  * - `graphics.TEXTURE_FORMAT_RGBA`
1286
1249
  *
1287
1250
  * These constants might not be available on the device:
@@ -1307,10 +1270,11 @@ declare global {
1307
1270
  * - `graphics.TEXTURE_FORMAT_RG32F`
1308
1271
  * You can test if the device supports these values by checking if a specific enum is nil or not:
1309
1272
  *
1310
- * `if graphics.TEXTURE_FORMAT_RGBA16F ~= nil then
1311
- * -- it is safe to use this format
1312
- * end
1313
- * `
1273
+ * ```ts
1274
+ * if (graphics.TEXTURE_FORMAT_RGBA16F !== undefined) {
1275
+ * // it is safe to use this format
1276
+ * }
1277
+ * ```
1314
1278
  *
1315
1279
  * `x`
1316
1280
  * number optional x offset of the texture (in pixels)
@@ -1326,15 +1290,16 @@ declare global {
1326
1290
  * number optional specify the compression type for the data in the buffer object that holds the texture data. Defaults to graphics.COMPRESSION_TYPE_DEFAULT, i.e no compression. Supported values:
1327
1291
  *
1328
1292
  * - `COMPRESSION_TYPE_DEFAULT`
1329
- *
1330
1293
  * - `COMPRESSION_TYPE_BASIS_UASTC`
1294
+ *
1295
+ * **0️⃣ `page` is 0-based; passed to Defold unchanged.** **0️⃣ `mipmap` is 0-based; passed to Defold unchanged.**
1331
1296
  * @param buffer - The buffer of precreated pixel data
1332
1297
  * To update a cube map texture you need to pass in six times the amount of data via the buffer, since a cube map has six sides!
1333
1298
  * 3D Textures are currently only supported on OpenGL and Vulkan adapters. To check if your device supports 3D textures, use:
1334
- * ```lua
1335
- * if graphics.TEXTURE_TYPE_3D ~= nil then
1336
- * -- Device and graphics adapter support 3D textures
1337
- * end
1299
+ * ```ts
1300
+ * if (graphics.TEXTURE_TYPE_3D !== undefined) {
1301
+ * // Device and graphics adapter support 3D textures
1302
+ * }
1338
1303
  * ```
1339
1304
  * @example
1340
1305
  * How to set all pixels of an atlas
@@ -1356,9 +1321,13 @@ declare global {
1356
1321
  * }
1357
1322
  * }
1358
1323
  *
1359
- * const resource_path = go.get<model.properties>()("#model", "texture0");
1360
- * const args = { width, height, type: graphics.TEXTURE_TYPE_2D, format: graphics.TEXTURE_FORMAT_RGB, num_mip_maps: 1 };
1361
- * resource.set_texture(resource_path, args, buf);
1324
+ * // the engine registers a texture format only when the driver supports it
1325
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1326
+ * if (format !== undefined) {
1327
+ * const resource_path = go.get<model.properties>()("#model", "texture0");
1328
+ * const args = { width, height, type: graphics.TEXTURE_TYPE_2D, format, num_mip_maps: 1 };
1329
+ * resource.set_texture(resource_path, args, buf);
1330
+ * }
1362
1331
  * return { buffer: buf, stream };
1363
1332
  * },
1364
1333
  * });
@@ -1385,9 +1354,13 @@ declare global {
1385
1354
  * }
1386
1355
  * }
1387
1356
  *
1388
- * const resource_path = go.get<model.properties>()("#model", "texture0");
1389
- * const args = { width, height, x, y, type: graphics.TEXTURE_TYPE_2D, format: graphics.TEXTURE_FORMAT_RGB, num_mip_maps: 1 };
1390
- * resource.set_texture(resource_path, args, buf);
1357
+ * // the engine registers a texture format only when the driver supports it
1358
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1359
+ * if (format !== undefined) {
1360
+ * const resource_path = go.get<model.properties>()("#model", "texture0");
1361
+ * const args = { width, height, x, y, type: graphics.TEXTURE_TYPE_2D, format, num_mip_maps: 1 };
1362
+ * resource.set_texture(resource_path, args, buf);
1363
+ * }
1391
1364
  * return { buffer: buf, stream };
1392
1365
  * },
1393
1366
  * });
@@ -1402,13 +1375,16 @@ declare global {
1402
1375
  * properties: { my_buffer: resource.buffer("/my_default_buffer.buffer") },
1403
1376
  *
1404
1377
  * init(self) {
1378
+ * // the engine registers a texture format only when the driver supports it
1379
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1380
+ * if (format === undefined) return;
1405
1381
  * const resource_path = go.get<model.properties>()("#model", "texture0");
1406
1382
  * // the "my_buffer" resource is expected to hold 128 * 128 * 3 bytes!
1407
1383
  * const args = {
1408
1384
  * width: 128,
1409
1385
  * height: 128,
1410
1386
  * type: graphics.TEXTURE_TYPE_2D,
1411
- * format: graphics.TEXTURE_FORMAT_RGB,
1387
+ * format,
1412
1388
  * };
1413
1389
  * // Note that the extra resource.get_buffer call is a requirement here
1414
1390
  * // since the "self.my_buffer" is just pointing to a buffer resource path
@@ -1461,7 +1437,9 @@ declare global {
1461
1437
  * // Update texture 2nd array page with loaded texture from png
1462
1438
  * const tex_path = "/bundle_resources/page_02.png";
1463
1439
  * const [data] = sys.load_resource(tex_path);
1464
- * if (data !== undefined) {
1440
+ * // the engine registers a texture format only when the driver supports it
1441
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1442
+ * if (data !== undefined && format !== undefined) {
1465
1443
  * const buf = image.load_buffer(data);
1466
1444
  * if (buf !== undefined) {
1467
1445
  * // new_tex is the resource handle of a texture created via resource.create_texture
@@ -1470,7 +1448,7 @@ declare global {
1470
1448
  * width: buf.width,
1471
1449
  * height: buf.height,
1472
1450
  * page_count: 2,
1473
- * format: graphics.TEXTURE_FORMAT_RGB,
1451
+ * format,
1474
1452
  * });
1475
1453
  * resource.set_texture(
1476
1454
  * new_tex,
@@ -1479,7 +1457,7 @@ declare global {
1479
1457
  * width: buf.width,
1480
1458
  * height: buf.height,
1481
1459
  * page: 1,
1482
- * format: graphics.TEXTURE_FORMAT_RGB,
1460
+ * format,
1483
1461
  * },
1484
1462
  * buf.buffer,
1485
1463
  * );
@@ -1488,12 +1466,11 @@ declare global {
1488
1466
  * }
1489
1467
  * ```
1490
1468
  */
1491
- function set_texture(path: Hash | string, table: { type?: number; width?: number; height?: number; format?: number; x?: number; y?: number; z?: number; page?: number; mipmap?: number; compression_type?: number }, buffer: Opaque<"buffer">): void;
1469
+ function set_texture(path: Hash | string, table: { type: number; width: number; height: number; format: number; x?: number; y?: number; z?: number; page?: number; mipmap?: number; compression_type?: number }, buffer: Opaque<"buffer">): void;
1492
1470
  /**
1493
1471
  * Constructor-like function with two purposes:
1494
1472
  *
1495
1473
  * - Load the specified resource as part of loading the script
1496
- *
1497
1474
  * - Return a hash to the run-time version of the resource
1498
1475
  *
1499
1476
  * This function can only be called within go.property function calls.
@@ -1519,7 +1496,6 @@ declare global {
1519
1496
  * Constructor-like function with two purposes:
1520
1497
  *
1521
1498
  * - Load the specified resource as part of loading the script
1522
- *
1523
1499
  * - Return a hash to the run-time version of the resource
1524
1500
  *
1525
1501
  * This function can only be called within go.property function calls.