mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-08-20 00:05:41 -05:00
Add "current transition" support to scene item visibility action
This commit is contained in:
@@ -160,12 +160,11 @@ static void attachRestoreContext(obs_sceneitem_t *item,
|
||||
|
||||
static void setSceneItemVisibility(obs_sceneitem_t *item,
|
||||
const bool setTransition,
|
||||
const OBSWeakSource &transitionWeak,
|
||||
const TransitionSelection &transitionSel,
|
||||
const bool setDuration,
|
||||
const Duration &duration,
|
||||
MacroActionSceneVisibility::Action action)
|
||||
{
|
||||
const OBSSourceAutoRelease transition = OBSGetStrongRef(transitionWeak);
|
||||
const bool itemIsVisible = obs_sceneitem_visible(item);
|
||||
|
||||
const OBSSource currentTransition =
|
||||
@@ -175,6 +174,16 @@ static void setSceneItemVisibility(obs_sceneitem_t *item,
|
||||
|
||||
OBSSource privateTransitionSource = nullptr;
|
||||
if (setTransition) {
|
||||
OBSSourceAutoRelease transition;
|
||||
if (transitionSel.GetType() ==
|
||||
TransitionSelection::Type::CURRENT) {
|
||||
transition = obs_source_get_ref(
|
||||
obs_sceneitem_get_transition(item,
|
||||
!itemIsVisible));
|
||||
} else {
|
||||
transition =
|
||||
OBSGetStrongRef(transitionSel.GetTransition());
|
||||
}
|
||||
privateTransitionSource = SetSceneItemTransition(
|
||||
item, transition, !itemIsVisible);
|
||||
} else {
|
||||
@@ -229,8 +238,7 @@ bool MacroActionSceneVisibility::PerformAction()
|
||||
{
|
||||
auto items = _source.GetSceneItems(_scene);
|
||||
for (const auto &item : items) {
|
||||
setSceneItemVisibility(item, _updateTransition,
|
||||
_transition.GetTransition(),
|
||||
setSceneItemVisibility(item, _updateTransition, _transition,
|
||||
_updateDuration, _duration, _action);
|
||||
}
|
||||
return true;
|
||||
@@ -340,7 +348,7 @@ MacroActionSceneVisibilityEdit::MacroActionSceneVisibilityEdit(
|
||||
},
|
||||
SceneItemSelectionWidget::NameClashMode::ALL)),
|
||||
_updateTransition(new QCheckBox(this)),
|
||||
_transitions(new TransitionSelectionWidget(this, false, false)),
|
||||
_transitions(new TransitionSelectionWidget(this, true, false)),
|
||||
_updateDuration(new QCheckBox(this)),
|
||||
_duration(new DurationSelection(this, false)),
|
||||
_durationLayout(new QHBoxLayout),
|
||||
@@ -476,6 +484,8 @@ void MacroActionSceneVisibilityEdit::SetWidgetVisibility()
|
||||
{
|
||||
const bool hideDurationSelection =
|
||||
_entryData->_updateTransition &&
|
||||
_entryData->_transition.GetType() !=
|
||||
TransitionSelection::Type::CURRENT &&
|
||||
IsFixedLengthTransition(
|
||||
_entryData->_transition.GetTransition());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user