From ccd36f87aeddc747459eea2b198fffae8089e1fb Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 11 Sep 2026 08:56:26 +0200 Subject: [PATCH] Update Luau definition file Also expose STREAM_MAX_CHILDREN --- .../src/services/audio_res/audio_res.cpp | 1 + sdk/luau/dusklight.d.luau | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/mods/luau_runtime/src/services/audio_res/audio_res.cpp b/mods/luau_runtime/src/services/audio_res/audio_res.cpp index 32db2766ec..98fada0c88 100644 --- a/mods/luau_runtime/src/services/audio_res/audio_res.cpp +++ b/mods/luau_runtime/src/services/audio_res/audio_res.cpp @@ -37,6 +37,7 @@ int open_audio_res(lua_State* state) { .addFunction("default_effect_info", default_effect_info) .addFunction("replace_sound_table_effect", replace_sound_table_effect) .addFunction("add_sound_table_effect", add_sound_table_effect) + .addVariable("STREAM_MAX_CHILDREN", STREAM_MAX_CHILDREN) .addFunction("default_stream_info", default_stream_info) .addFunction("replace_sound_table_stream", replace_sound_table_stream) .addFunction("add_sound_table_stream", add_sound_table_stream) diff --git a/sdk/luau/dusklight.d.luau b/sdk/luau/dusklight.d.luau index 619e2f4124..46333d8b90 100644 --- a/sdk/luau/dusklight.d.luau +++ b/sdk/luau/dusklight.d.luau @@ -150,6 +150,85 @@ export type HostModule = { } export type ResourceModule = { load: (relativePath: string) -> string } +-- +-- audio_res +-- + +export type AudioWaveFormat = "adpcm4" | "adpcm2" | "pcm8" | "pcm16" + +export type AudioRawWave = { + format: AudioWaveFormat, + sample_rate: number, + sample_value_last: number | nil, + sample_value_penult: number | nil +} + +export type AudioWaveInfo = { + base_key: number | nil, + loop: boolean | nil, + loop_start_sample: number | nil, + loop_end_sample: number | nil, + raw_wave: AudioRawWave | nil +} + +export type AudioWaveHandle = { + unregister: (self: AudioWaveHandle) -> (), +} + +export type AudioWaveBank = "sound_effects" | "music_samples" + +export type AudioSoundTableEffectInfo = { + priority: number, + volume: number, + pitch: number, + always_max_priority: boolean, + ignore_distance_volume: boolean, + ignore_distance_fx_mix: boolean, + ignore_pan: boolean, + ignore_dolby: boolean, + random_volume: number, + random_pitch: number, + doppler_power: number, + volume_dist_class: number, + clamp_min_volume: boolean, + cull_at_max_distance: boolean, +} + +export type SoundEffectCategory = "system_se" | "player_voice" | "player_se" | "footnote_se" | "collision_se" | "chara_voice" | "chara_se" | "enemy_se" | "object_se" | "env_se" + +export type AudioSoundTableHandle = { + unregister: (self: AudioSoundTableHandle) -> () +} + +export type StreamPan = "center" | "left" | "right" + +export type AudioSoundTableStreamInfo = { + priority: number, + volume: number, + pan_parameters: {StreamPan}, -- max STREAM_MAX_CHILDREN elems + stop_on_scene_change: boolean, +} + +export type AudioResModule = { + -- wsys + DEFAULT_KEY: number, + default_wave_info: () -> AudioWaveInfo, + replace_wave: (bank: AudioWaveBank, wave_id: number, file: string, info: AudioWaveInfo | nil) -> AudioWaveHandle, + add_wave: (bank: AudioWaveBank, file: string, info: AudioWaveInfo | nil) -> (number, AudioWaveHandle), + + -- bst + default_effect_info: () -> AudioSoundTableEffectInfo, + replace_sound_table_effect: (category: SoundEffectCategory, effect_id: number, info: AudioSoundTableEffectInfo | nil) -> AudioSoundTableHandle, + add_sound_table_effect: (category: SoundEffectCategory, info: AudioSoundTableEffectInfo | nil) -> (number, AudioSoundTableHandle), + + STREAM_MAX_CHILDREN: number, + default_stream_info: () -> AudioSoundTableStreamInfo, + replace_sound_table_stream: (stream_id: number, file_path: string, info: AudioSoundTableStreamInfo | nil) -> AudioSoundTableHandle, + add_sound_table_stream: (file_path: string, info: AudioSoundTableStreamInfo | nil) -> (number, AudioSoundTableHandle), +} + + + declare function require(path: "dusklight.log"): LogModule declare function require(path: "dusklight.host"): HostModule declare function require(path: "dusklight.config"): ConfigModule @@ -157,4 +236,5 @@ declare function require(path: "dusklight.resource"): ResourceModule declare function require(path: "dusklight.overlay"): OverlayModule declare function require(path: "dusklight.texture"): TextureModule declare function require(path: "dusklight.ui"): UiModule +declare function require(path: "dusklight.audio_res"): AudioResModule declare function require(path: string): any