add ignored presets for butterchurn

This commit is contained in:
jeffvli
2025-12-25 13:49:14 -08:00
parent f78a572a3c
commit 800074dced
4 changed files with 18 additions and 1 deletions
+1
View File
@@ -1104,6 +1104,7 @@
"cyclePresets": "Cycle Presets", "cyclePresets": "Cycle Presets",
"cycleTime": "Cycle Time (seconds)", "cycleTime": "Cycle Time (seconds)",
"includeAllPresets": "Include All Presets", "includeAllPresets": "Include All Presets",
"ignoredPresets": "Ignored Presets",
"selectedPresets": "Selected Presets", "selectedPresets": "Selected Presets",
"randomizeNextPreset": "Randomize Next Preset", "randomizeNextPreset": "Randomize Next Preset",
"blendTime": "Blend Time", "blendTime": "Blend Time",
@@ -2022,6 +2022,13 @@ const ButterChurnCycleSettings = () => {
onChange={(values) => updateProperty('selectedPresets', values)} onChange={(values) => updateProperty('selectedPresets', values)}
value={visualizer.butterchurn.selectedPresets} value={visualizer.butterchurn.selectedPresets}
/> />
<MultiSelect
data={presetOptions}
disabled={!visualizer.butterchurn.cyclePresets}
label={t('visualizer.ignoredPresets')}
onChange={(values) => updateProperty('ignoredPresets', values)}
value={visualizer.butterchurn.ignoredPresets}
/>
<Group grow> <Group grow>
<VisualizerSlider <VisualizerSlider
@@ -179,12 +179,19 @@ const VisualizerInner = () => {
const allPresetNames = Object.keys(presets); const allPresetNames = Object.keys(presets);
// Get the list of presets to cycle through // Get the list of presets to cycle through
const presetList = butterchurnSettings.includeAllPresets let presetList = butterchurnSettings.includeAllPresets
? allPresetNames ? allPresetNames
: butterchurnSettings.selectedPresets.length > 0 : butterchurnSettings.selectedPresets.length > 0
? butterchurnSettings.selectedPresets.filter((name) => presets[name]) ? butterchurnSettings.selectedPresets.filter((name) => presets[name])
: allPresetNames; : allPresetNames;
// Filter out ignored presets
if (butterchurnSettings.ignoredPresets && butterchurnSettings.ignoredPresets.length > 0) {
presetList = presetList.filter(
(name) => !butterchurnSettings.ignoredPresets.includes(name),
);
}
if (presetList.length === 0) return; if (presetList.length === 0) return;
// Reset cycle timer when settings change // Reset cycle timer when settings change
+2
View File
@@ -320,6 +320,7 @@ const ButterchurnSettingsSchema = z.object({
currentPreset: z.string().optional(), currentPreset: z.string().optional(),
cyclePresets: z.boolean(), cyclePresets: z.boolean(),
cycleTime: z.number().min(1).max(300), cycleTime: z.number().min(1).max(300),
ignoredPresets: z.array(z.string()),
includeAllPresets: z.boolean(), includeAllPresets: z.boolean(),
maxFPS: z.number().min(0), maxFPS: z.number().min(0),
randomizeNextPreset: z.boolean(), randomizeNextPreset: z.boolean(),
@@ -1480,6 +1481,7 @@ const initialState: SettingsState = {
currentPreset: undefined, currentPreset: undefined,
cyclePresets: true, cyclePresets: true,
cycleTime: 30, cycleTime: 30,
ignoredPresets: [],
includeAllPresets: true, includeAllPresets: true,
maxFPS: 0, maxFPS: 0,
randomizeNextPreset: true, randomizeNextPreset: true,