mod animation;
mod effect;
mod project;
mod scene;
mod show;
use super::Engine;
use crate::action::UiAction;
impl Engine {
#[cfg_attr(feature = "profiling", profiling::function)]
pub(super) fn handle_actions(&mut self) {
while let Ok(Some(action)) = self.actions.try_recv() {
self.apply_action(action);
}
}
pub(super) fn apply_action(&mut self, action: UiAction) {
tracing::trace!("Handling ui action: {action:?}");
match action {
UiAction::AddScene(..)
| UiAction::DeleteSceneInstance { .. }
| UiAction::DeleteSceneInstancePath(..)
| UiAction::CloneSceneInstance(..)
| UiAction::CloneSceneInstancePath(..)
| UiAction::SetSceneOpacity(..)
| UiAction::ToggleSceneActive(..)
| UiAction::SetSceneActive(..)
| UiAction::SetSceneFlash(..)
| UiAction::SelectScene(..)
| UiAction::SelectSceneByLocation(..)
| UiAction::SwapScenes(..)
| UiAction::SetSceneName(..)
| UiAction::SetSceneColor(..)
| UiAction::SetSceneInputDimmer(..)
| UiAction::SetSceneIgnoreMainDimmer(..)
| UiAction::SetSceneBeatOffset(..)
| UiAction::SetSceneOpacityMultiplier(..)
| UiAction::SetSceneOpacityCurve(..)
| UiAction::SetSceneBeatOffsetMultiplier(..)
| UiAction::SetSceneBeatOffsetCurve(..)
| UiAction::SetSceneSetOffsetOnFlash(..)
| UiAction::SetSceneActivationInput(..)
| UiAction::SetSceneFlashInput(..)
| UiAction::SetSceneDimmerInput(..)
| UiAction::ReplaceSceneInstance(..) => self.apply_scene_action(action),
UiAction::SelectSceneRelative(..)
| UiAction::SelectSceneRowRelative(..)
| UiAction::SelectSceneColumnRelative(..)
| UiAction::SetMidiMode { .. }
| UiAction::SetTouchedControl { .. }
| UiAction::SelectSceneEffect(..)
| UiAction::SelectSceneEffectRelative(..) => self.apply_selection_action(action),
UiAction::SetSceneEffectOpacity(..)
| UiAction::SetSceneEffectOpacityMultiplier(..)
| UiAction::SetSceneEffectOpacityCurve(..)
| UiAction::SetSceneEffectColorShift(..)
| UiAction::SetSceneEffectColorShiftMultiplier(..)
| UiAction::SetSceneEffectColorShiftCurve(..)
| UiAction::SetSceneEffectBeatProgression(..)
| UiAction::SetSceneEffectBeatProgressionMultiplier(..)
| UiAction::SetSceneEffectBeatProgressionCurve(..)
| UiAction::SetSceneEffectBeatOffset(..)
| UiAction::SetSceneEffectBeatOffsetMultiplier(..)
| UiAction::SetSceneEffectBeatOffsetCurve(..)
| UiAction::SetSceneEffectSpeedExponent(..)
| UiAction::SetSceneEffectLayout(..)
| UiAction::SetSceneEffectAnimation(..)
| UiAction::SetSceneEffectAnimationConfigU32(..)
| UiAction::SetSceneEffectAnimationConfigF32(..)
| UiAction::SetSceneEffectAnimationConfigF32Multiplier(..)
| UiAction::AddSceneEffect(..)
| UiAction::RemoveSceneEffect(..)
| UiAction::CloneSceneEffect(..) => self.apply_effect_action(action),
UiAction::SetMainDimmer(..)
| UiAction::AddMainDimmer(..)
| UiAction::SetProjectArtnetControlActive(..)
| UiAction::SetProjectArtnetControlUniverse(..)
| UiAction::SetProjectOscActive(..)
| UiAction::SetProjectOscPort(..)
| UiAction::AddProjectTapInputArtnet(..)
| UiAction::RemoveProjectTapInputArtnet(..)
| UiAction::ClearProjectTapInput
| UiAction::AddProjectBlackoutInputArtnet(..)
| UiAction::RemoveProjectBlackoutInputArtnet(..)
| UiAction::ClearProjectBlackoutInput
| UiAction::AddProjectBlackoutHoldInputArtnet(..)
| UiAction::RemoveProjectBlackoutHoldInputArtnet(..)
| UiAction::ClearProjectBlackoutHoldInput
| UiAction::AddProjectHalfInputArtnet(..)
| UiAction::RemoveProjectHalfInputArtnet(..)
| UiAction::ClearProjectHalfInput
| UiAction::AddProjectDoubleInputArtnet(..)
| UiAction::RemoveProjectDoubleInputArtnet(..)
| UiAction::ClearProjectDoubleInput
| UiAction::SetProjectPaletteFromAsset(..)
| UiAction::SetProjectPalettePrimary(..)
| UiAction::SetProjectPaletteSecondary(..)
| UiAction::SetProjectPaletteGradient(..)
| UiAction::SetScenePaletteOverwriteFromAsset(..)
| UiAction::SetScenePaletteOverwritePrimary(..)
| UiAction::SetScenePaletteOverwriteSecondary(..)
| UiAction::SetScenePaletteOverwriteGradient(..)
| UiAction::SetProjectPalette(..)
| UiAction::SetProjectPatch(..)
| UiAction::SetGridSize(..)
| UiAction::SetGridHighlight(..)
| UiAction::SetProjectChannelOverwrites(..)
| UiAction::SetProjectOutputRoutings(..)
| UiAction::SetProjectArtnetConfig(..)
| UiAction::SetProjectTriggerInputs(..)
| UiAction::SetMidiActiveMappings(..)
| UiAction::SetProjectArtnetControl(..)
| UiAction::SetProjectOsc(..) => self.apply_project_action(action),
UiAction::ReloadShaderCode(..)
| UiAction::SetAnimationShaderCode(..)
| UiAction::AddAnimationArgument(..)
| UiAction::RemoveAnimationArgument(..)
| UiAction::SetAnimationArgumentName(..)
| UiAction::SetAnimationArgumentKind(..) => self.apply_animation_action(action),
UiAction::SetAudioDevice(..)
| UiAction::Tap
| UiAction::SpeedAdd(..)
| UiAction::SpeedMultiply(..)
| UiAction::SetBlackout(..)
| UiAction::ToggleBlackout
| UiAction::SetProject(..)
| UiAction::MidiOutputActive(..)
| UiAction::Error(..)
| UiAction::CloseProject
| UiAction::SetOutputRoutings(..) => self.apply_show_action(action),
}
}
}
fn ignore_without_project() {
tracing::trace!("Ingoring ui action which needs a loaded project");
}