DefineClass.DuckingParam = { __parents = { "Preset" }, GlobalMap = "DuckingParams", properties = { { id = "Name", name = "Name", editor = "text", default = "" , help = "The name with which this ducking tier will appear in the sound type editor." }, { id = "Tier", name = "Tier", editor = "number", default = 0, min = -1, max = 100, help = "Which tiers will be affected by this one - lower tiers affect higher ones." }, { id = "Strength", name = "Strength", editor = "number", default = 100, min = 0, max = 1000, scale = 1, slider = true, help = "How much will this tier duck the ones below it." }, { id = "Attack", name = "Attack Duration", editor = "number", default = 100, min = 0, max = 1000, scale = 1, slider = true, help = "How long will this tier take to go from no effect to full ducking in ms." }, { id = "Release", name = "Release Duration", editor = "number", default = 100, min = 0, max = 1000, scale = 1, slider = true, help = "How long will this tier take to go from full ducking to no effect in ms." }, { id = "Hold", name = "Hold Duration", editor = "number", default = 100, min = 0, max = 5000, scale = 1, slider = true, help = "How long will this tier take, before starting to decay the ducking strength, after the sound strength decreases." }, { id = "Envelope", name = "Use side chain", editor = "bool", default = true, help = "Should the sounds in this preset modify the other sounds based on the current strength of their sound, or apply a constant static effect." }, }, OnEditorSetProperty = function(properties) ReloadDucking() end, Apply = function(self) ReloadDucking() end, EditorMenubarName = "Ducking Editor", EditorMenubar = "Editors.Audio", EditorIcon = "CommonAssets/UI/Icons/church.png", } function ReloadDucking() local names = {} local tiers = {} local strengths = {} local attacks = {} local releases = {} local hold = {} local envelopes = {} local i = 1 for _, p in pairs(DuckingParams) do names[i] = p.id tiers[i] = p.Tier strengths[i] = p.Strength attacks[i] = p.Attack releases[i] = p.Release hold[i] = p.Hold envelopes[i] = p.Envelope and 1 or 0 i = i + 1 end LoadDuckingParams(names, tiers, strengths, attacks, releases, hold, envelopes) ReloadSoundTypes() end function ChangeDuckingPreset(id, tier, str, attack, release, hold) if tier then DuckingParams[id].Tier = tier end if str then DuckingParams[id].Strength = str end if attack then DuckingParams[id].Attack = attack end if release then DuckingParams[id].Release = release end if hold then DuckingParams[id].Hold = hold end ReloadDucking() end OnMsg.DataLoaded = ReloadDucking