@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!
@@ -501,16 +483,20 @@ declare global {
501
483
  * How to create 512x512 texture array with 5 pages.
502
484
  * ```ts
503
485
  * // 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
- * });
486
+ * // the engine registers a texture format only when the driver supports it
487
+ * const format = graphics.TEXTURE_FORMAT_RGB;
488
+ * if (format !== undefined) {
489
+ * const new_tex = resource.create_texture("/runtime/example_array.texturec", {
490
+ * type: graphics.TEXTURE_TYPE_2D_ARRAY,
491
+ * width: 512,
492
+ * height: 512,
493
+ * page_count: 5,
494
+ * format,
495
+ * });
496
+ * }
511
497
  * ```
512
498
  */
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;
499
+ 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
500
  /**
515
501
  * Creates a new texture resource that can be used in the same way as any texture created during build time.
516
502
  * The path used for creating the texture must be unique, trying to create a resource at a path that is already
@@ -529,13 +515,9 @@ declare global {
529
515
  * number The texture type. Supported values:
530
516
  *
531
517
  * - `graphics.TEXTURE_TYPE_2D`
532
- *
533
518
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
534
- *
535
519
  * - `graphics.TEXTURE_TYPE_3D`
536
- *
537
520
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
538
- *
539
521
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
540
522
  *
541
523
  * `width`
@@ -548,67 +530,45 @@ declare global {
548
530
  * number The texture format, note that some of these formats might not be supported by the running device. Supported values:
549
531
  *
550
532
  * - `graphics.TEXTURE_FORMAT_LUMINANCE`
551
- *
552
533
  * - `graphics.TEXTURE_FORMAT_RGB`
553
- *
554
534
  * - `graphics.TEXTURE_FORMAT_RGBA`
555
535
  *
556
536
  * These constants might not be available on the device:
557
537
  *
558
538
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_2BPPV1`
559
- *
560
539
  * - `graphics.TEXTURE_FORMAT_RGB_PVRTC_4BPPV1`
561
- *
562
540
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_2BPPV1`
563
- *
564
541
  * - `graphics.TEXTURE_FORMAT_RGBA_PVRTC_4BPPV1`
565
- *
566
542
  * - `graphics.TEXTURE_FORMAT_RGB_ETC1`
567
- *
568
543
  * - `graphics.TEXTURE_FORMAT_RGBA_ETC2`
569
- *
570
544
  * - `graphics.TEXTURE_FORMAT_RGBA_ASTC_4X4`
571
- *
572
545
  * - `graphics.TEXTURE_FORMAT_RGB_BC1`
573
- *
574
546
  * - `graphics.TEXTURE_FORMAT_RGBA_BC3`
575
- *
576
547
  * - `graphics.TEXTURE_FORMAT_R_BC4`
577
- *
578
548
  * - `graphics.TEXTURE_FORMAT_RG_BC5`
579
- *
580
549
  * - `graphics.TEXTURE_FORMAT_RGBA_BC7`
581
- *
582
550
  * - `graphics.TEXTURE_FORMAT_RGB16F`
583
- *
584
551
  * - `graphics.TEXTURE_FORMAT_RGB32F`
585
- *
586
552
  * - `graphics.TEXTURE_FORMAT_RGBA16F`
587
- *
588
553
  * - `graphics.TEXTURE_FORMAT_RGBA32F`
589
- *
590
554
  * - `graphics.TEXTURE_FORMAT_R16F`
591
- *
592
555
  * - `graphics.TEXTURE_FORMAT_RG16F`
593
- *
594
556
  * - `graphics.TEXTURE_FORMAT_R32F`
595
- *
596
557
  * - `graphics.TEXTURE_FORMAT_RG32F`
597
558
  *
598
559
  * You can test if the device supports these values by checking if a specific enum is nil or not:
599
560
  *
600
- * `if graphics.TEXTURE_FORMAT_RGBA16F ~= nil then
601
- * -- it is safe to use this format
602
- * end
603
- * `
561
+ * ```ts
562
+ * if (graphics.TEXTURE_FORMAT_RGBA16F !== undefined) {
563
+ * // it is safe to use this format
564
+ * }
565
+ * ```
604
566
  *
605
567
  * `flags`
606
568
  * number Texture creation flags that can be used to dictate how the texture is created. Supported values:
607
569
  *
608
570
  * - `graphics.TEXTURE_USAGE_FLAG_SAMPLE` - The texture can be sampled from a shader (default)
609
- *
610
571
  * - `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
572
  * - `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
573
  *
614
574
  * `max_mipmaps`
@@ -618,7 +578,6 @@ declare global {
618
578
  * 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
579
  *
620
580
  * - `COMPRESSION_TYPE_DEFAULT`
621
- *
622
581
  * - `COMPRESSION_TYPE_BASIS_UASTC`
623
582
  * @param buffer - optional buffer of precreated pixel data
624
583
  * @param callback - callback function when texture is created (self, request_id, resource)
@@ -667,17 +626,20 @@ declare global {
667
626
  * });
668
627
  * ```
669
628
  * @example
670
- * Create a texture resource asyncronously without a callback
629
+ * Create a texture resource asynchronously with a callback that does nothing
671
630
  * ```ts
672
- * // Create a texture resource asyncronously without a callback
631
+ * // Create a texture resource asyncronously without handling its completion
673
632
  * export default defineScript({
674
633
  * init() {
634
+ * // the engine registers a texture format only when the driver supports it
635
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
636
+ * if (format === undefined) return;
675
637
  * // Create a texture resource async
676
638
  * const tparams = {
677
639
  * width: 128,
678
640
  * height: 128,
679
641
  * type: graphics.TEXTURE_TYPE_2D,
680
- * format: graphics.TEXTURE_FORMAT_RGBA,
642
+ * format,
681
643
  * };
682
644
  *
683
645
  * // Create a new buffer with 4 components
@@ -695,7 +657,8 @@ declare global {
695
657
  * }
696
658
  * }
697
659
  * // create the texture
698
- * const [tpath, request_id] = resource.create_texture_async("/my_texture.texturec", tparams, tbuffer);
660
+ * // the binding requires a callback function, so pass one that does nothing
661
+ * const [tpath, request_id] = resource.create_texture_async("/my_texture.texturec", tparams, tbuffer, () => {});
699
662
  * // at this point you can use the resource as-is, but note that the texture will be a blank 1x1 texture
700
663
  * // that will be removed once the new texture has been updated
701
664
  * go.set("#model", "texture0", tpath);
@@ -703,12 +666,11 @@ declare global {
703
666
  * });
704
667
  * ```
705
668
  */
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]>;
669
+ 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
670
  /**
708
671
  * Constructor-like function with two purposes:
709
672
  *
710
673
  * - Load the specified resource as part of loading the script
711
- *
712
674
  * - Return a hash to the run-time version of the resource
713
675
  *
714
676
  * This function can only be called within go.property function calls.
@@ -752,14 +714,14 @@ declare global {
752
714
  * @returns A table with the following entries:
753
715
  *
754
716
  * - texture
755
- *
756
717
  * - geometries
757
- *
758
718
  * - animations
759
719
  *
760
720
  * Each animation entry also contains a `frames` table with indices into
761
721
  * `geometries`, preserving the frame-to-geometry mapping used by the atlas.
762
722
  * See resource.set_atlas for a detailed description of each field
723
+ *
724
+ * **⚠️ `frames` is 1-based; passed to Defold unchanged.** **0️⃣ `indices` is 0-based; passed to Defold unchanged.**
763
725
  */
764
726
  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
727
  /**
@@ -806,26 +768,18 @@ declare global {
806
768
  * number The texture type. Supported values:
807
769
  *
808
770
  * - `graphics.TEXTURE_TYPE_2D`
809
- *
810
771
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
811
- *
812
772
  * - `graphics.TEXTURE_TYPE_2D_ARRAY`
813
773
  *
814
774
  * `buffer_type`
815
775
  * number The attachment buffer type. Supported values:
816
776
  *
817
777
  * - `resource.BUFFER_TYPE_COLOR0`
818
- *
819
778
  * - `resource.BUFFER_TYPE_COLOR1`
820
- *
821
779
  * - `resource.BUFFER_TYPE_COLOR2`
822
- *
823
780
  * - `resource.BUFFER_TYPE_COLOR3`
824
- *
825
781
  * - `resource.BUFFER_TYPE_DEPTH`
826
- *
827
782
  * - `resource.BUFFER_TYPE_STENCIL`
828
- *
829
783
  * - `texture`
830
784
  * hash The hashed path to the attachment texture resource. This field is only available if the render target passed in is a resource.
831
785
  * @example
@@ -876,11 +830,8 @@ declare global {
876
830
  * @returns a table with the following fields:
877
831
  *
878
832
  * - width
879
- *
880
833
  * - height
881
- *
882
834
  * - max_ascent
883
- *
884
835
  * - max_descent
885
836
  * @example
886
837
  * ```ts
@@ -893,7 +844,7 @@ declare global {
893
844
  * });
894
845
  * ```
895
846
  */
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 };
847
+ 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
848
  /**
898
849
  * Gets texture info from a texture resource path or a texture handle
899
850
  *
@@ -918,15 +869,10 @@ declare global {
918
869
  * number The texture type. Supported values:
919
870
  *
920
871
  * - `graphics.TEXTURE_TYPE_2D`
921
- *
922
872
  * - `graphics.TEXTURE_TYPE_2D_ARRAY`
923
- *
924
873
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
925
- *
926
874
  * - `graphics.TEXTURE_TYPE_3D`
927
- *
928
875
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
929
- *
930
876
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
931
877
  * @example
932
878
  * Create a new texture and get the metadata from it
@@ -934,12 +880,15 @@ declare global {
934
880
  * // Create a new texture and get the metadata from it
935
881
  * export default defineScript({
936
882
  * init() {
883
+ * // the engine registers a texture format only when the driver supports it
884
+ * const format = graphics.TEXTURE_FORMAT_RGBA;
885
+ * if (format === undefined) return;
937
886
  * // create an empty texture
938
887
  * const tparams = {
939
888
  * width: 128,
940
889
  * height: 128,
941
890
  * type: graphics.TEXTURE_TYPE_2D,
942
- * format: graphics.TEXTURE_FORMAT_RGBA,
891
+ * format,
943
892
  * };
944
893
  *
945
894
  * const my_texture_path = resource.create_texture("/my_texture.texturec", tparams);
@@ -983,9 +932,11 @@ declare global {
983
932
  * ```ts
984
933
  * // read custom resource data into buffer
985
934
  * 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:
935
+ * ```
936
+ * @example
937
+ * In order for the engine to include custom resources in the build process, you need
938
+ * to specify them in the "game.project" settings file:
939
+ * ```ts
989
940
  * // [project]
990
941
  * // title = My project
991
942
  * // version = 0.1
@@ -997,7 +948,6 @@ declare global {
997
948
  * Constructor-like function with two purposes:
998
949
  *
999
950
  * - Load the specified resource as part of loading the script
1000
- *
1001
951
  * - Return a hash to the run-time version of the resource
1002
952
  *
1003
953
  * This function can only be called within go.property function calls.
@@ -1045,7 +995,6 @@ declare global {
1045
995
  * Constructor-like function with two purposes:
1046
996
  *
1047
997
  * - Load the specified resource as part of loading the script
1048
- *
1049
998
  * - Return a hash to the run-time version of the resource
1050
999
  *
1051
1000
  * This function can only be called within go.property function calls.
@@ -1142,6 +1091,8 @@ declare global {
1142
1091
  *
1143
1092
  * - `indices`
1144
1093
  * table a list of the indices of the geometry in the form {i0, i1, i2, ..., in}. Each tripe in the list represents a triangle.
1094
+ *
1095
+ * **⚠️ `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
1096
  * @example
1146
1097
  * Add a new animation to an existing atlas
1147
1098
  * ```ts
@@ -1160,8 +1111,22 @@ declare global {
1160
1111
  * flip_vertical: false,
1161
1112
  * flip_horizontal: false,
1162
1113
  * };
1163
- * data.animations.push(my_animation);
1164
- * resource.set_atlas("/main/my_atlas.a.texturesetc", data);
1114
+ * // set_atlas takes each animation's frames as a non-empty list
1115
+ * const animations = data.animations.flatMap((animation) => {
1116
+ * // an animation described by frame_start/frame_end passes through as-is
1117
+ * if (!("frames" in animation)) return [animation];
1118
+ * const [first, ...rest] = (animation.frames as number[] | undefined) ?? [];
1119
+ * return first === undefined ? [] : [{ ...animation, frames: [first, ...rest] as [number, ...number[]] }];
1120
+ * });
1121
+ * // set_atlas needs at least one animation and one geometry
1122
+ * const [first_geometry, ...geometries] = data.geometries;
1123
+ * if (first_geometry !== undefined) {
1124
+ * resource.set_atlas("/main/my_atlas.a.texturesetc", {
1125
+ * ...data,
1126
+ * animations: [my_animation, ...animations],
1127
+ * geometries: [first_geometry, ...geometries],
1128
+ * });
1129
+ * }
1165
1130
  * },
1166
1131
  * });
1167
1132
  * ```
@@ -1188,13 +1153,13 @@ declare global {
1188
1153
  * indices: [0, 1, 2, 0, 2, 3],
1189
1154
  * },
1190
1155
  * ],
1191
- * };
1156
+ * } satisfies Parameters<typeof resource.set_atlas>[1];
1192
1157
  * resource.set_atlas("/main/test.a.texturesetc", params);
1193
1158
  * },
1194
1159
  * });
1195
1160
  * ```
1196
1161
  */
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;
1162
+ 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
1163
  /**
1199
1164
  * Sets the buffer of a resource. By default, setting the resource buffer will either copy the data from the incoming buffer object
1200
1165
  * 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 +1227,9 @@ declare global {
1262
1227
  * number The texture type. Supported values:
1263
1228
  *
1264
1229
  * - `graphics.TEXTURE_TYPE_2D`
1265
- *
1266
1230
  * - `graphics.TEXTURE_TYPE_IMAGE_2D`
1267
- *
1268
1231
  * - `graphics.TEXTURE_TYPE_3D`
1269
- *
1270
1232
  * - `graphics.TEXTURE_TYPE_IMAGE_3D`
1271
- *
1272
1233
  * - `graphics.TEXTURE_TYPE_CUBE_MAP`
1273
1234
  *
1274
1235
  * `width`
@@ -1279,9 +1240,7 @@ declare global {
1279
1240
  * number The texture format, note that some of these formats are platform specific. Supported values:
1280
1241
  *
1281
1242
  * - `graphics.TEXTURE_FORMAT_LUMINANCE`
1282
- *
1283
1243
  * - `graphics.TEXTURE_FORMAT_RGB`
1284
- *
1285
1244
  * - `graphics.TEXTURE_FORMAT_RGBA`
1286
1245
  *
1287
1246
  * These constants might not be available on the device:
@@ -1307,10 +1266,11 @@ declare global {
1307
1266
  * - `graphics.TEXTURE_FORMAT_RG32F`
1308
1267
  * You can test if the device supports these values by checking if a specific enum is nil or not:
1309
1268
  *
1310
- * `if graphics.TEXTURE_FORMAT_RGBA16F ~= nil then
1311
- * -- it is safe to use this format
1312
- * end
1313
- * `
1269
+ * ```ts
1270
+ * if (graphics.TEXTURE_FORMAT_RGBA16F !== undefined) {
1271
+ * // it is safe to use this format
1272
+ * }
1273
+ * ```
1314
1274
  *
1315
1275
  * `x`
1316
1276
  * number optional x offset of the texture (in pixels)
@@ -1326,15 +1286,16 @@ declare global {
1326
1286
  * 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
1287
  *
1328
1288
  * - `COMPRESSION_TYPE_DEFAULT`
1329
- *
1330
1289
  * - `COMPRESSION_TYPE_BASIS_UASTC`
1290
+ *
1291
+ * **0️⃣ `page` is 0-based; passed to Defold unchanged.** **0️⃣ `mipmap` is 0-based; passed to Defold unchanged.**
1331
1292
  * @param buffer - The buffer of precreated pixel data
1332
1293
  * 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
1294
  * 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
1295
+ * ```ts
1296
+ * if (graphics.TEXTURE_TYPE_3D !== undefined) {
1297
+ * // Device and graphics adapter support 3D textures
1298
+ * }
1338
1299
  * ```
1339
1300
  * @example
1340
1301
  * How to set all pixels of an atlas
@@ -1356,9 +1317,13 @@ declare global {
1356
1317
  * }
1357
1318
  * }
1358
1319
  *
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);
1320
+ * // the engine registers a texture format only when the driver supports it
1321
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1322
+ * if (format !== undefined) {
1323
+ * const resource_path = go.get<model.properties>()("#model", "texture0");
1324
+ * const args = { width, height, type: graphics.TEXTURE_TYPE_2D, format, num_mip_maps: 1 };
1325
+ * resource.set_texture(resource_path, args, buf);
1326
+ * }
1362
1327
  * return { buffer: buf, stream };
1363
1328
  * },
1364
1329
  * });
@@ -1385,9 +1350,13 @@ declare global {
1385
1350
  * }
1386
1351
  * }
1387
1352
  *
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);
1353
+ * // the engine registers a texture format only when the driver supports it
1354
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1355
+ * if (format !== undefined) {
1356
+ * const resource_path = go.get<model.properties>()("#model", "texture0");
1357
+ * const args = { width, height, x, y, type: graphics.TEXTURE_TYPE_2D, format, num_mip_maps: 1 };
1358
+ * resource.set_texture(resource_path, args, buf);
1359
+ * }
1391
1360
  * return { buffer: buf, stream };
1392
1361
  * },
1393
1362
  * });
@@ -1402,13 +1371,16 @@ declare global {
1402
1371
  * properties: { my_buffer: resource.buffer("/my_default_buffer.buffer") },
1403
1372
  *
1404
1373
  * init(self) {
1374
+ * // the engine registers a texture format only when the driver supports it
1375
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1376
+ * if (format === undefined) return;
1405
1377
  * const resource_path = go.get<model.properties>()("#model", "texture0");
1406
1378
  * // the "my_buffer" resource is expected to hold 128 * 128 * 3 bytes!
1407
1379
  * const args = {
1408
1380
  * width: 128,
1409
1381
  * height: 128,
1410
1382
  * type: graphics.TEXTURE_TYPE_2D,
1411
- * format: graphics.TEXTURE_FORMAT_RGB,
1383
+ * format,
1412
1384
  * };
1413
1385
  * // Note that the extra resource.get_buffer call is a requirement here
1414
1386
  * // since the "self.my_buffer" is just pointing to a buffer resource path
@@ -1461,7 +1433,9 @@ declare global {
1461
1433
  * // Update texture 2nd array page with loaded texture from png
1462
1434
  * const tex_path = "/bundle_resources/page_02.png";
1463
1435
  * const [data] = sys.load_resource(tex_path);
1464
- * if (data !== undefined) {
1436
+ * // the engine registers a texture format only when the driver supports it
1437
+ * const format = graphics.TEXTURE_FORMAT_RGB;
1438
+ * if (data !== undefined && format !== undefined) {
1465
1439
  * const buf = image.load_buffer(data);
1466
1440
  * if (buf !== undefined) {
1467
1441
  * // new_tex is the resource handle of a texture created via resource.create_texture
@@ -1470,7 +1444,7 @@ declare global {
1470
1444
  * width: buf.width,
1471
1445
  * height: buf.height,
1472
1446
  * page_count: 2,
1473
- * format: graphics.TEXTURE_FORMAT_RGB,
1447
+ * format,
1474
1448
  * });
1475
1449
  * resource.set_texture(
1476
1450
  * new_tex,
@@ -1479,7 +1453,7 @@ declare global {
1479
1453
  * width: buf.width,
1480
1454
  * height: buf.height,
1481
1455
  * page: 1,
1482
- * format: graphics.TEXTURE_FORMAT_RGB,
1456
+ * format,
1483
1457
  * },
1484
1458
  * buf.buffer,
1485
1459
  * );
@@ -1488,12 +1462,11 @@ declare global {
1488
1462
  * }
1489
1463
  * ```
1490
1464
  */
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;
1465
+ 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
1466
  /**
1493
1467
  * Constructor-like function with two purposes:
1494
1468
  *
1495
1469
  * - Load the specified resource as part of loading the script
1496
- *
1497
1470
  * - Return a hash to the run-time version of the resource
1498
1471
  *
1499
1472
  * This function can only be called within go.property function calls.
@@ -1519,7 +1492,6 @@ declare global {
1519
1492
  * Constructor-like function with two purposes:
1520
1493
  *
1521
1494
  * - Load the specified resource as part of loading the script
1522
- *
1523
1495
  * - Return a hash to the run-time version of the resource
1524
1496
  *
1525
1497
  * This function can only be called within go.property function calls.