@defold-typescript/types 0.50.1 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-availability.json +4 -58
- package/api-signatures.json +1128 -1552
- package/api-targets.json +15 -5
- package/examples/translations.json +19 -71
- package/fixtures/messages_doc.json +20 -39
- package/generated/b2d_world.d.ts +10 -10
- package/generated/buffer.d.ts +9 -9
- package/generated/builtin-messages.d.ts +16 -14
- package/generated/bullet3d_collision_object.d.ts +1 -1
- package/generated/bullet3d_constraint.d.ts +109 -7
- package/generated/bullet3d_shape.d.ts +2 -2
- package/generated/collectionfactory.d.ts +1 -1
- package/generated/collectionproxy.d.ts +2 -2
- package/generated/factory.d.ts +4 -2
- package/generated/go.d.ts +114 -220
- package/generated/graphics.d.ts +5 -0
- package/generated/gui.d.ts +148 -371
- package/generated/http.d.ts +4 -2
- package/generated/image.d.ts +56 -4
- package/generated/kinds/gui-script.d.ts +3 -0
- package/generated/kinds/render-script.d.ts +15 -15
- package/generated/kinds/script.d.ts +1 -0
- package/generated/liveupdate.d.ts +5 -1
- package/generated/material.d.ts +3 -3
- package/generated/model.d.ts +4 -5
- package/generated/particlefx.d.ts +20 -1
- package/generated/physics.d.ts +48 -4
- package/generated/render-script-modules/b2d.d.ts +711 -0
- package/generated/render-script-modules/bullet3d.d.ts +73 -0
- package/generated/render-script-modules/collectionfactory.d.ts +25 -0
- package/generated/render-script-modules/collectionproxy.d.ts +39 -0
- package/generated/render-script-modules/factory.d.ts +25 -0
- package/generated/render-script-modules/go.d.ts +436 -0
- package/generated/render-script-modules/label.d.ts +105 -0
- package/generated/render-script-modules/model.d.ts +89 -0
- package/generated/render-script-modules/particlefx.d.ts +59 -0
- package/generated/render-script-modules/physics.d.ts +333 -0
- package/generated/render-script-modules/resource.d.ts +1233 -0
- package/generated/render-script-modules/sound.d.ts +227 -0
- package/generated/render-script-modules/sprite.d.ts +68 -0
- package/generated/render-script-modules/tilemap.d.ts +43 -0
- package/generated/render.d.ts +175 -21
- package/generated/resource.d.ts +31 -10
- package/generated/sprite.d.ts +49 -1
- package/generated/sys.d.ts +78 -10
- package/generated/tilemap.d.ts +4 -4
- package/generated/versions/defold-1.12.4/buffer.d.ts +8 -8
- package/generated/versions/defold-1.12.4/collectionfactory.d.ts +1 -1
- package/generated/versions/defold-1.12.4/collectionproxy.d.ts +1 -1
- package/generated/versions/defold-1.12.4/factory.d.ts +4 -2
- package/generated/versions/defold-1.12.4/go.d.ts +115 -343
- package/generated/versions/defold-1.12.4/graphics.d.ts +1 -0
- package/generated/versions/defold-1.12.4/gui.d.ts +151 -513
- package/generated/versions/defold-1.12.4/http.d.ts +4 -2
- package/generated/versions/defold-1.12.4/image.d.ts +83 -3
- package/generated/versions/defold-1.12.4/index.d.ts +2 -0
- package/generated/versions/defold-1.12.4/liveupdate.d.ts +4 -0
- package/generated/versions/defold-1.12.4/model.d.ts +4 -5
- package/generated/versions/defold-1.12.4/particlefx.d.ts +22 -1
- package/generated/versions/defold-1.12.4/physics.d.ts +47 -3
- package/generated/versions/defold-1.12.4/render.d.ts +119 -15
- package/generated/versions/defold-1.12.4/resource.d.ts +43 -10
- package/generated/versions/defold-1.12.4/sprite.d.ts +58 -1
- package/generated/versions/defold-1.12.4/sys.d.ts +101 -6
- package/generated/versions/defold-1.12.4/tilemap.d.ts +4 -4
- package/generated/versions/defold-1.12.4/vmath.d.ts +0 -24
- package/generated/versions/defold-1.13.0/buffer.d.ts +8 -8
- package/generated/versions/defold-1.13.0/collectionfactory.d.ts +1 -1
- package/generated/versions/defold-1.13.0/collectionproxy.d.ts +1 -1
- package/generated/versions/defold-1.13.0/factory.d.ts +4 -2
- package/generated/versions/defold-1.13.0/go.d.ts +115 -370
- package/generated/versions/defold-1.13.0/graphics.d.ts +1 -0
- package/generated/versions/defold-1.13.0/gui.d.ts +151 -513
- package/generated/versions/defold-1.13.0/http.d.ts +4 -2
- package/generated/versions/defold-1.13.0/image.d.ts +83 -3
- package/generated/versions/defold-1.13.0/index.d.ts +2 -0
- package/generated/versions/defold-1.13.0/liveupdate.d.ts +4 -0
- package/generated/versions/defold-1.13.0/material.d.ts +3 -1
- package/generated/versions/defold-1.13.0/model.d.ts +4 -5
- package/generated/versions/defold-1.13.0/particlefx.d.ts +22 -1
- package/generated/versions/defold-1.13.0/physics.d.ts +47 -3
- package/generated/versions/defold-1.13.0/render.d.ts +182 -16
- package/generated/versions/defold-1.13.0/resource.d.ts +43 -10
- package/generated/versions/defold-1.13.0/sprite.d.ts +58 -1
- package/generated/versions/defold-1.13.0/sys.d.ts +101 -6
- package/generated/versions/defold-1.13.0/tilemap.d.ts +4 -4
- package/generated/versions/defold-1.13.0/vmath.d.ts +0 -24
- package/generated/versions/defold-1.13.1/buffer.d.ts +8 -8
- package/generated/versions/defold-1.13.1/collectionfactory.d.ts +1 -1
- package/generated/versions/defold-1.13.1/collectionproxy.d.ts +1 -1
- package/generated/versions/defold-1.13.1/factory.d.ts +4 -2
- package/generated/versions/defold-1.13.1/go.d.ts +115 -370
- package/generated/versions/defold-1.13.1/graphics.d.ts +1 -0
- package/generated/versions/defold-1.13.1/gui.d.ts +151 -529
- package/generated/versions/defold-1.13.1/http.d.ts +4 -2
- package/generated/versions/defold-1.13.1/image.d.ts +83 -3
- package/generated/versions/defold-1.13.1/index.d.ts +3 -0
- package/generated/versions/defold-1.13.1/liveupdate.d.ts +4 -0
- package/generated/versions/defold-1.13.1/material.d.ts +3 -1
- package/generated/versions/defold-1.13.1/model.d.ts +4 -5
- package/generated/versions/defold-1.13.1/particlefx.d.ts +22 -1
- package/generated/versions/defold-1.13.1/physics.d.ts +47 -3
- package/generated/versions/defold-1.13.1/render.d.ts +182 -16
- package/generated/versions/defold-1.13.1/resource.d.ts +43 -10
- package/generated/versions/defold-1.13.1/sprite.d.ts +58 -1
- package/generated/versions/defold-1.13.1/sys.d.ts +101 -6
- package/generated/versions/defold-1.13.1/tilemap.d.ts +4 -4
- package/generated/versions/defold-1.13.1/vmath.d.ts +0 -24
- package/generated/versions/defold-1.13.2/b2d_world.d.ts +10 -10
- package/generated/versions/defold-1.13.2/buffer.d.ts +9 -9
- package/generated/versions/defold-1.13.2/bullet3d_collision_object.d.ts +1 -1
- package/generated/versions/defold-1.13.2/bullet3d_constraint.d.ts +109 -7
- package/generated/versions/defold-1.13.2/bullet3d_shape.d.ts +2 -2
- package/generated/versions/defold-1.13.2/collectionfactory.d.ts +1 -1
- package/generated/versions/defold-1.13.2/collectionproxy.d.ts +2 -2
- package/generated/versions/defold-1.13.2/factory.d.ts +4 -2
- package/generated/versions/defold-1.13.2/go.d.ts +114 -220
- package/generated/versions/defold-1.13.2/graphics.d.ts +1 -0
- package/generated/versions/defold-1.13.2/gui.d.ts +148 -371
- package/generated/versions/defold-1.13.2/http.d.ts +4 -2
- package/generated/versions/defold-1.13.2/image.d.ts +56 -4
- package/generated/versions/defold-1.13.2/index.d.ts +3 -0
- package/generated/versions/defold-1.13.2/liveupdate.d.ts +5 -1
- package/generated/versions/defold-1.13.2/material.d.ts +3 -3
- package/generated/versions/defold-1.13.2/model.d.ts +4 -5
- package/generated/versions/defold-1.13.2/particlefx.d.ts +20 -1
- package/generated/versions/defold-1.13.2/physics.d.ts +48 -4
- package/generated/versions/defold-1.13.2/render.d.ts +164 -20
- package/generated/versions/defold-1.13.2/resource.d.ts +31 -10
- package/generated/versions/defold-1.13.2/sprite.d.ts +49 -1
- package/generated/versions/defold-1.13.2/sys.d.ts +78 -10
- package/generated/versions/defold-1.13.2/tilemap.d.ts +4 -4
- package/generated/versions/defold-1.13.2/vmath.d.ts +0 -24
- package/generated/versions/defold-1.13.2/window.d.ts +1 -1
- package/generated/vmath.d.ts +0 -24
- package/generated/window.d.ts +1 -1
- package/identity-vocabulary.json +98 -7
- package/index.d.ts +3 -0
- package/package.json +3 -1
- package/scripts/generate-api-availability.ts +6 -22
- package/scripts/generate-api-signatures.ts +87 -21
- package/scripts/materialize-version.ts +53 -6
- package/scripts/regen.ts +256 -44
- package/scripts/signature-store-fs.ts +1 -0
- package/scripts/target-version.ts +26 -0
- package/src/api-doc.ts +26 -0
- package/src/component-properties.d.ts +226 -6
- package/src/core-types.ts +82 -20
- package/src/doc-corrections.ts +53 -5
- package/src/emit-dts.ts +1300 -269
- package/src/emit-messages.ts +289 -0
- package/src/engine-globals.d.ts +8 -2
- package/src/go-overloads.d.ts +80 -15
- package/src/gui-overloads.d.ts +489 -0
- package/src/gui-texture-removal.d.ts +41 -0
- package/src/index.ts +2 -0
- package/src/lifecycle.ts +46 -37
- package/src/luals-type-expr.ts +6 -1
- package/src/msg-overloads.d.ts +25 -13
- package/src/physics-event-guard.d.ts +39 -0
- package/src/render-overloads.d.ts +2 -2
- package/src/return-correction-provenance.ts +36 -6
- package/src/signature-store.ts +50 -0
- package/src/timers.d.ts +2 -1
- package/src/vmath-overloads.d.ts +26 -0
- package/src/window-event-guard.d.ts +5 -3
package/src/emit-messages.ts
CHANGED
|
@@ -137,6 +137,295 @@ export function applyMessageFieldCorrections(
|
|
|
137
137
|
return { entries };
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
+
// What only the engine states about a message the catalog mirrors from the
|
|
141
|
+
// reference: proto optionality, a field the handler reads or the sender fills,
|
|
142
|
+
// a message a component handles or posts, or the shape of a field the reference
|
|
143
|
+
// types only as `table`. `evidence` names `<path>:<symbol>` in the 1.14.0 engine
|
|
144
|
+
// source. Each kind throws once the catalog already states its fact, since that
|
|
145
|
+
// means upstream fixed the reference and the entry is deleted; a `retype` throws
|
|
146
|
+
// once the catalog stops declaring its pinned `upstream` types, since upstream
|
|
147
|
+
// retyped the field and the entry is re-verified against what it now says.
|
|
148
|
+
export type MessageEngineCorrection = {
|
|
149
|
+
readonly origin: string;
|
|
150
|
+
readonly name: string;
|
|
151
|
+
readonly evidence: string;
|
|
152
|
+
} & (
|
|
153
|
+
| { readonly kind: "optional" | "required"; readonly fields: readonly string[] }
|
|
154
|
+
| { readonly kind: "add-field"; readonly fields: readonly MessageField[] }
|
|
155
|
+
| {
|
|
156
|
+
readonly kind: "add-message";
|
|
157
|
+
readonly description: string;
|
|
158
|
+
readonly fields: readonly MessageField[];
|
|
159
|
+
}
|
|
160
|
+
| {
|
|
161
|
+
readonly kind: "retype";
|
|
162
|
+
readonly fields: readonly string[];
|
|
163
|
+
readonly tsType: string;
|
|
164
|
+
readonly upstream: readonly string[];
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
const SCRIPT_DDF_DEFAULTS =
|
|
169
|
+
"script/src/script_ddf.cpp:DoLuaTableToDDF fills an omitted optional field with its default";
|
|
170
|
+
const SOUND_EVENT =
|
|
171
|
+
"gamesys/src/gamesys/components/comp_sound.cpp:DispatchSoundEvent always sets play_id, and HandleEntryFinishedPlaying sends the event only for a play_sound that supplied one";
|
|
172
|
+
|
|
173
|
+
function optionalField(name: string, types: string[], doc: string): MessageField {
|
|
174
|
+
return { name, types, optional: true, doc };
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function requiredField(name: string, types: string[], doc: string): MessageField {
|
|
178
|
+
return { name, types, optional: false, doc };
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// The listener and `on_message` paths agree: the DDF the message carries
|
|
182
|
+
// declares the same sub-message fields the listener push sets.
|
|
183
|
+
function physicsBody(message: string): string {
|
|
184
|
+
return `gamesys/proto/gamesys/physics_ddf.proto:${message} declares the same required fields for the on_message payload`;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function otherGroupField(): MessageField {
|
|
188
|
+
return {
|
|
189
|
+
name: "group",
|
|
190
|
+
types: ["hash"],
|
|
191
|
+
optional: false,
|
|
192
|
+
doc: "Collision group of the other object, equal to other_group.",
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export const MESSAGE_ENGINE_CORRECTIONS: readonly MessageEngineCorrection[] = [
|
|
197
|
+
{
|
|
198
|
+
kind: "optional",
|
|
199
|
+
origin: "camera",
|
|
200
|
+
name: "set_camera",
|
|
201
|
+
fields: ["orthographic_projection", "orthographic_zoom", "orthographic_mode"],
|
|
202
|
+
evidence: `gamesys/proto/gamesys/camera_ddf.proto:SetCamera declares them optional with defaults, CompCameraOnMessage handles it, and ${SCRIPT_DDF_DEFAULTS}`,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
kind: "optional",
|
|
206
|
+
origin: "sys",
|
|
207
|
+
name: "reboot",
|
|
208
|
+
fields: ["arg1", "arg2", "arg3", "arg4", "arg5", "arg6"],
|
|
209
|
+
evidence: `script/src/script/sys_ddf.proto:Reboot declares every argument optional, engine/src/engine.cpp:Dispatch handles it, and ${SCRIPT_DDF_DEFAULTS}`,
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
kind: "optional",
|
|
213
|
+
origin: "sys",
|
|
214
|
+
name: "start_record",
|
|
215
|
+
fields: ["frame_period", "fps"],
|
|
216
|
+
evidence: `script/src/script/sys_ddf.proto:StartRecord declares both optional with defaults 2 and 30, engine/src/engine.cpp:Dispatch handles it, and ${SCRIPT_DDF_DEFAULTS}`,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
kind: "optional",
|
|
220
|
+
origin: "sprite",
|
|
221
|
+
name: "play_animation",
|
|
222
|
+
fields: ["offset", "playback_rate"],
|
|
223
|
+
evidence: `gamesys/proto/gamesys/sprite_ddf.proto:PlayAnimation declares both optional with defaults 0 and 1, comp_sprite.cpp:CompSpriteOnMessage passes both to PlayAnimation, and ${SCRIPT_DDF_DEFAULTS}`,
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
kind: "optional",
|
|
227
|
+
origin: "go",
|
|
228
|
+
name: "set_parent",
|
|
229
|
+
fields: ["parent_id", "keep_world_transform"],
|
|
230
|
+
evidence: `gameobject/proto/gameobject/gameobject_ddf.proto:SetParent declares both optional with defaults 0 and 1, gameobject.cpp:DispatchMessagesFunction handles it, and ${SCRIPT_DDF_DEFAULTS}`,
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
kind: "required",
|
|
234
|
+
origin: "sound",
|
|
235
|
+
name: "sound_done",
|
|
236
|
+
fields: ["play_id"],
|
|
237
|
+
evidence: SOUND_EVENT,
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
kind: "required",
|
|
241
|
+
origin: "sound",
|
|
242
|
+
name: "sound_stopped",
|
|
243
|
+
fields: ["play_id"],
|
|
244
|
+
evidence: SOUND_EVENT,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
kind: "add-field",
|
|
248
|
+
origin: "sound",
|
|
249
|
+
name: "play_sound",
|
|
250
|
+
fields: [
|
|
251
|
+
optionalField("pan", ["number"], "Pan between -1 and 1, added to the component's pan."),
|
|
252
|
+
optionalField("speed", ["number"], "Speed factor, multiplied with the component's speed."),
|
|
253
|
+
],
|
|
254
|
+
evidence:
|
|
255
|
+
"gamesys/proto/gamesys/gamesys_ddf.proto:PlaySound declares pan and speed, and comp_sound.cpp:CompSoundOnMessage applies both to the voice",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
kind: "add-field",
|
|
259
|
+
origin: "sound",
|
|
260
|
+
name: "stop_sound",
|
|
261
|
+
fields: [
|
|
262
|
+
optionalField(
|
|
263
|
+
"play_id",
|
|
264
|
+
["number"],
|
|
265
|
+
"Id passed to play_sound; stops only that voice. Omit to stop every voice.",
|
|
266
|
+
),
|
|
267
|
+
],
|
|
268
|
+
evidence:
|
|
269
|
+
"gamesys/proto/gamesys/gamesys_ddf.proto:StopSound declares play_id, and comp_sound.cpp:CompSoundOnMessage stops only the voice that matches it",
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
kind: "add-message",
|
|
273
|
+
origin: "sound",
|
|
274
|
+
name: "pause_sound",
|
|
275
|
+
description: "Pause or resume every voice the receiving sound component plays.",
|
|
276
|
+
fields: [optionalField("pause", ["boolean"], "true (default) to pause, false to resume.")],
|
|
277
|
+
evidence:
|
|
278
|
+
"gamesys/proto/gamesys/gamesys_ddf.proto:PauseSound declares pause, and comp_sound.cpp:CompSoundOnMessage pauses every voice of the component",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
kind: "add-message",
|
|
282
|
+
origin: "sound",
|
|
283
|
+
name: "set_pan",
|
|
284
|
+
description: "Set the pan on the receiving sound component.",
|
|
285
|
+
fields: [optionalField("pan", ["number"], "Pan between -1 and 1, default 0.")],
|
|
286
|
+
evidence:
|
|
287
|
+
"gamesys/proto/gamesys/gamesys_ddf.proto:SetPan declares pan, and comp_sound.cpp:CompSoundOnMessage sets the component's pan",
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
kind: "add-message",
|
|
291
|
+
origin: "render",
|
|
292
|
+
name: "set_view_projection",
|
|
293
|
+
description:
|
|
294
|
+
"Posted automatically by camera components to the render script with the active view and projection matrices.",
|
|
295
|
+
fields: [
|
|
296
|
+
requiredField("id", ["hash"], "Id of the camera component that posted the matrices."),
|
|
297
|
+
requiredField("view", ["matrix4"], "View matrix of the camera."),
|
|
298
|
+
requiredField("projection", ["matrix4"], "Projection matrix of the camera."),
|
|
299
|
+
],
|
|
300
|
+
evidence:
|
|
301
|
+
"gamesys/proto/gamesys/gamesys_ddf.proto:SetViewProjection declares id, view and projection required, and comp_camera.cpp:PostRenderScriptSetViewProjectionMsg posts it to the render socket on every camera update",
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
kind: "add-field",
|
|
305
|
+
origin: "physics",
|
|
306
|
+
name: "collision_response",
|
|
307
|
+
fields: [otherGroupField()],
|
|
308
|
+
evidence:
|
|
309
|
+
"gamesys/proto/gamesys/physics_ddf.proto:CollisionResponse declares a required group, and comp_collision_object.cpp:CollisionCallback sets it to the other object's group",
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
kind: "add-field",
|
|
313
|
+
origin: "physics",
|
|
314
|
+
name: "contact_point_response",
|
|
315
|
+
fields: [otherGroupField()],
|
|
316
|
+
evidence:
|
|
317
|
+
"gamesys/proto/gamesys/physics_ddf.proto:ContactPointResponse declares a required group, and comp_collision_object.cpp:ContactPointCallback sets it to the other object's group",
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
kind: "add-field",
|
|
321
|
+
origin: "physics",
|
|
322
|
+
name: "trigger_response",
|
|
323
|
+
fields: [otherGroupField()],
|
|
324
|
+
evidence:
|
|
325
|
+
"gamesys/proto/gamesys/physics_ddf.proto:TriggerResponse declares a required group, and comp_collision_object.cpp:TriggerEnteredCallback sets it to the other object's group",
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
kind: "retype",
|
|
329
|
+
origin: "physics",
|
|
330
|
+
name: "contact_point_event",
|
|
331
|
+
fields: ["a", "b"],
|
|
332
|
+
tsType:
|
|
333
|
+
"{ position: Vector3; instance_position: Vector3; normal: Vector3; relative_velocity: Vector3; mass: number; id: Hash; group: Hash }",
|
|
334
|
+
upstream: ["table"],
|
|
335
|
+
evidence: `gamesys/src/gamesys/scripts/script_physics.cpp:PushContactPoint sets these seven fields on each body, and ${physicsBody("ContactPoint")}`,
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
kind: "retype",
|
|
339
|
+
origin: "physics",
|
|
340
|
+
name: "collision_event",
|
|
341
|
+
fields: ["a", "b"],
|
|
342
|
+
tsType: "{ position: Vector3; id: Hash; group: Hash }",
|
|
343
|
+
upstream: ["table"],
|
|
344
|
+
evidence: `gamesys/src/gamesys/scripts/script_physics.cpp:PushCollision sets these three fields on each body, and ${physicsBody("Collision")}`,
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
kind: "retype",
|
|
348
|
+
origin: "physics",
|
|
349
|
+
name: "trigger_event",
|
|
350
|
+
fields: ["a", "b"],
|
|
351
|
+
tsType: "{ id: Hash; group: Hash }",
|
|
352
|
+
upstream: ["table"],
|
|
353
|
+
evidence: `gamesys/src/gamesys/scripts/script_physics.cpp:PushTrigger sets these two fields on each body, and ${physicsBody("Trigger")}`,
|
|
354
|
+
},
|
|
355
|
+
];
|
|
356
|
+
|
|
357
|
+
export function applyMessageEngineCorrections(
|
|
358
|
+
catalog: MessageCatalog,
|
|
359
|
+
overlay: readonly MessageEngineCorrection[] = MESSAGE_ENGINE_CORRECTIONS,
|
|
360
|
+
): MessageCatalog {
|
|
361
|
+
const entries = catalog.entries.map((entry) => ({
|
|
362
|
+
...entry,
|
|
363
|
+
payload: entry.payload.map((field) => ({ ...field })),
|
|
364
|
+
}));
|
|
365
|
+
for (const correction of overlay) {
|
|
366
|
+
const identity = `(origin=${correction.origin}, name=${correction.name})`;
|
|
367
|
+
const stale = (fact: string) =>
|
|
368
|
+
new Error(
|
|
369
|
+
`applyMessageEngineCorrections: the catalog ${fact} for ${identity}; delete the correction`,
|
|
370
|
+
);
|
|
371
|
+
const entry = entries.find(
|
|
372
|
+
(candidate) => candidate.origin === correction.origin && candidate.name === correction.name,
|
|
373
|
+
);
|
|
374
|
+
if (correction.kind === "add-message") {
|
|
375
|
+
if (entry) throw stale("already declares message");
|
|
376
|
+
entries.push({
|
|
377
|
+
name: correction.name,
|
|
378
|
+
origin: correction.origin,
|
|
379
|
+
description: correction.description,
|
|
380
|
+
payload: correction.fields.map((field) => ({ ...field, types: [...field.types] })),
|
|
381
|
+
});
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
if (!entry) {
|
|
385
|
+
throw new Error(`applyMessageEngineCorrections: no catalog message matches ${identity}`);
|
|
386
|
+
}
|
|
387
|
+
if (correction.kind === "add-field") {
|
|
388
|
+
for (const field of correction.fields) {
|
|
389
|
+
if (entry.payload.some((candidate) => candidate.name === field.name)) {
|
|
390
|
+
throw stale(`already declares field ${field.name}`);
|
|
391
|
+
}
|
|
392
|
+
entry.payload.push({ ...field, types: [...field.types] });
|
|
393
|
+
}
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
for (const name of correction.fields) {
|
|
397
|
+
const field = entry.payload.find((candidate) => candidate.name === name);
|
|
398
|
+
if (!field) {
|
|
399
|
+
throw new Error(
|
|
400
|
+
`applyMessageEngineCorrections: no catalog field matches ${identity} field=${name}`,
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
if (correction.kind === "retype") {
|
|
404
|
+
if (field.types.join("|") !== correction.upstream.join("|")) {
|
|
405
|
+
throw new Error(
|
|
406
|
+
`applyMessageEngineCorrections: the catalog now declares ${field.types.join("|")} for field ${name} of ${identity}, not the pinned ${correction.upstream.join("|")}; re-verify the correction`,
|
|
407
|
+
);
|
|
408
|
+
}
|
|
409
|
+
field.types = [correction.tsType];
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
const optional = correction.kind === "optional";
|
|
413
|
+
if (field.optional === optional) throw stale(`field ${name} is already ${correction.kind}`);
|
|
414
|
+
field.optional = optional;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return { entries };
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// The built-in message surface is the catalog plus these overlays. Every reader
|
|
421
|
+
// of it goes through here, so a message the engine overlay adds is never missing
|
|
422
|
+
// from one of them.
|
|
423
|
+
export function applyMessageOverlays(catalog: MessageCatalog): MessageCatalog {
|
|
424
|
+
return applyMessageEngineCorrections(
|
|
425
|
+
applyMessageFieldCorrections(applyMessageDeprecations(catalog)),
|
|
426
|
+
);
|
|
427
|
+
}
|
|
428
|
+
|
|
140
429
|
const TS_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
141
430
|
const ENGINE_TYPES = [
|
|
142
431
|
"Hash",
|
package/src/engine-globals.d.ts
CHANGED
|
@@ -4,12 +4,16 @@ import type * as Core from "./core-types";
|
|
|
4
4
|
// Hand-maintained surface: Defold ships no machine-readable export for the
|
|
5
5
|
// prefixless globals, so add or remove entries here from the Defold API
|
|
6
6
|
// reference and mirror the change in fixtures/globals_doc.json — the
|
|
7
|
-
// engine-globals test fails if the two fall out of sync.
|
|
7
|
+
// engine-globals test fails if the two fall out of sync. That canonical file
|
|
8
|
+
// seeds each new target on release import; also mirror the change into every
|
|
9
|
+
// committed fixtures/defold-*/globals_doc.json, which the API reference reads.
|
|
8
10
|
declare global {
|
|
9
11
|
/** An opaque, branded handle to a hashed name; see {@link Core.Hash}. */
|
|
10
12
|
type Hash<S extends string = string> = Core.Hash<S>;
|
|
11
13
|
/** Hash a string into the engine's `Hash` handle. */
|
|
12
14
|
function hash<S extends string>(s: S): Core.Hash<S>;
|
|
15
|
+
/** Return a `Hash` unchanged. */
|
|
16
|
+
function hash<S extends string>(h: Core.Hash<S>): Core.Hash<S>;
|
|
13
17
|
/** Render a `Hash` handle as its hexadecimal string. */
|
|
14
18
|
function hash_to_hex(h: Core.Hash): string;
|
|
15
19
|
/** Pretty-print any values to the console for debugging. */
|
|
@@ -36,7 +40,7 @@ declare global {
|
|
|
36
40
|
type Opaque<Name extends string> = Core.Opaque<Name>;
|
|
37
41
|
/** A message-passing address with `socket`, `path`, and `fragment`; see {@link Core.Url}. */
|
|
38
42
|
type Url = Core.Url;
|
|
39
|
-
/** A
|
|
43
|
+
/** A numeric vector read and written by 1-based index; see {@link Core.Vector}. */
|
|
40
44
|
type Vector = Core.Vector;
|
|
41
45
|
/** A three-component vector with `x`, `y`, `z`; see {@link Core.Vector3}. */
|
|
42
46
|
type Vector3 = Core.Vector3;
|
|
@@ -46,4 +50,6 @@ declare global {
|
|
|
46
50
|
type Quaternion = Core.Quaternion;
|
|
47
51
|
/** A 4x4 transformation matrix; see {@link Core.Matrix4}. */
|
|
48
52
|
type Matrix4 = Core.Matrix4;
|
|
53
|
+
/** An array constant read back from a constant buffer, 1-based with no length; see {@link Core.ConstantArray}. */
|
|
54
|
+
type ConstantArray<T> = Core.ConstantArray<T>;
|
|
49
55
|
}
|
package/src/go-overloads.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
|
|
3
|
-
import type { Hash, Quaternion, Url, Vector3, Vector4 } from "./core-types";
|
|
3
|
+
import type { Hash, Matrix4, Quaternion, Url, Vector3, Vector4 } from "./core-types";
|
|
4
4
|
|
|
5
5
|
interface ScriptProperty<TValue> {
|
|
6
6
|
readonly __defoldScriptProperty: TValue;
|
|
@@ -21,12 +21,17 @@ type WritableKey<P> = {
|
|
|
21
21
|
|
|
22
22
|
declare global {
|
|
23
23
|
namespace go {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
// LuaToPropertyOptions raises when more than one of the three is non-nil, and
|
|
25
|
+
// reads a nil one as absent.
|
|
26
|
+
type GoPropertyOptions =
|
|
27
|
+
| {
|
|
28
|
+
/** **⚠️ 1-based index into an array property; passed to Defold unchanged.** */
|
|
29
|
+
index?: number;
|
|
30
|
+
key?: undefined;
|
|
31
|
+
keys?: undefined;
|
|
32
|
+
}
|
|
33
|
+
| { index?: undefined; key?: Hash | string; keys?: undefined }
|
|
34
|
+
| { index?: undefined; key?: undefined; keys?: (Hash | string)[] };
|
|
30
35
|
|
|
31
36
|
/**
|
|
32
37
|
* gets a named property of the specified game object or component
|
|
@@ -39,6 +44,8 @@ declare global {
|
|
|
39
44
|
* - keys array of hashes or strings identifying internal component resources (e.g. a particle fx emitter, see examples below)
|
|
40
45
|
* @returns the value of the specified property
|
|
41
46
|
* A `string` value is a text property, which needs Defold 1.13.2 or later.
|
|
47
|
+
* An array material constant read without `index` returns every element as a
|
|
48
|
+
* `Vector4[]`.
|
|
42
49
|
* @example
|
|
43
50
|
* ```ts
|
|
44
51
|
* const position = go.get("#sprite", "position");
|
|
@@ -50,18 +57,46 @@ declare global {
|
|
|
50
57
|
function get<P>(): <K extends keyof P>(
|
|
51
58
|
url: SceneAddress | Hash | Url,
|
|
52
59
|
property: K,
|
|
53
|
-
options
|
|
60
|
+
...options: [] | [GoPropertyOptions]
|
|
54
61
|
) => P[K];
|
|
55
62
|
function get<K extends keyof go.properties>(
|
|
56
63
|
url: SceneAddress | Hash | Url,
|
|
57
64
|
property: K,
|
|
58
|
-
|
|
65
|
+
): go.properties[K];
|
|
66
|
+
function get<K extends keyof go.properties>(
|
|
67
|
+
url: SceneAddress | Hash | Url,
|
|
68
|
+
property: K,
|
|
69
|
+
options: GoPropertyOptions,
|
|
59
70
|
): go.properties[K];
|
|
60
71
|
function get(
|
|
61
72
|
url: SceneAddress | Hash | Url,
|
|
62
73
|
property: string | Hash,
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
):
|
|
75
|
+
| number
|
|
76
|
+
| boolean
|
|
77
|
+
| string
|
|
78
|
+
| Hash
|
|
79
|
+
| Url
|
|
80
|
+
| Vector3
|
|
81
|
+
| Vector4
|
|
82
|
+
| Quaternion
|
|
83
|
+
| Matrix4
|
|
84
|
+
| Vector4[];
|
|
85
|
+
function get(
|
|
86
|
+
url: SceneAddress | Hash | Url,
|
|
87
|
+
property: string | Hash,
|
|
88
|
+
options: GoPropertyOptions,
|
|
89
|
+
):
|
|
90
|
+
| number
|
|
91
|
+
| boolean
|
|
92
|
+
| string
|
|
93
|
+
| Hash
|
|
94
|
+
| Url
|
|
95
|
+
| Vector3
|
|
96
|
+
| Vector4
|
|
97
|
+
| Quaternion
|
|
98
|
+
| Matrix4
|
|
99
|
+
| Vector4[];
|
|
65
100
|
/**
|
|
66
101
|
* sets a named property of the specified game object or component, or a material constant
|
|
67
102
|
*
|
|
@@ -86,19 +121,49 @@ declare global {
|
|
|
86
121
|
url: SceneAddress | Hash | Url,
|
|
87
122
|
property: K,
|
|
88
123
|
value: P[K],
|
|
89
|
-
options
|
|
124
|
+
...options: [] | [GoPropertyOptions]
|
|
90
125
|
) => void;
|
|
91
126
|
function set<K extends keyof go.properties>(
|
|
92
127
|
url: SceneAddress | Hash | Url,
|
|
93
128
|
property: K,
|
|
94
129
|
value: go.properties[K],
|
|
95
|
-
|
|
130
|
+
): void;
|
|
131
|
+
function set<K extends keyof go.properties>(
|
|
132
|
+
url: SceneAddress | Hash | Url,
|
|
133
|
+
property: K,
|
|
134
|
+
value: go.properties[K],
|
|
135
|
+
options: GoPropertyOptions,
|
|
136
|
+
): void;
|
|
137
|
+
function set(
|
|
138
|
+
url: SceneAddress | Hash | Url,
|
|
139
|
+
property: string | Hash,
|
|
140
|
+
value:
|
|
141
|
+
| number
|
|
142
|
+
| boolean
|
|
143
|
+
| string
|
|
144
|
+
| Hash
|
|
145
|
+
| Url
|
|
146
|
+
| Vector3
|
|
147
|
+
| Vector4
|
|
148
|
+
| Quaternion
|
|
149
|
+
| Matrix4
|
|
150
|
+
| Vector4[],
|
|
96
151
|
): void;
|
|
97
152
|
function set(
|
|
98
153
|
url: SceneAddress | Hash | Url,
|
|
99
154
|
property: string | Hash,
|
|
100
|
-
value:
|
|
101
|
-
|
|
155
|
+
value:
|
|
156
|
+
| number
|
|
157
|
+
| boolean
|
|
158
|
+
| string
|
|
159
|
+
| Hash
|
|
160
|
+
| Url
|
|
161
|
+
| Vector3
|
|
162
|
+
| Vector4
|
|
163
|
+
| Quaternion
|
|
164
|
+
| Matrix4
|
|
165
|
+
| Vector4[],
|
|
166
|
+
options: GoPropertyOptions,
|
|
102
167
|
): void;
|
|
103
168
|
/**
|
|
104
169
|
* Registers a script property, which the Defold editor exposes on every game
|