Files
UnrealEngineUWP/Engine/Source/Editor/Sequencer/Private/SequencerSelectionPreview.cpp
Max Chen 0167d4ea0f Sequencer: MVVM2 branch and Layer Bars
Copying //Tasks/UE5/Dev-SequencerMVVM2 to Main (//UE5/Main) @20364093

#preflight 628866dfb94f739b152c1e29
#preflight 628866e4585e8f793ee80943
#rb ludovic.chabant, andrew.rodham
#fyi ludovic.chabant, andrew.rodham, andrew.porter
#jira UE-105322

[CL 20364493 by Max Chen in ue5-main branch]
2022-05-25 10:39:33 -04:00

89 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SequencerSelectionPreview.h"
#include "MovieSceneSection.h"
void FSequencerSelectionPreview::SetSelectionState(FSequencerSelectedKey Key, ESelectionPreviewState InState)
{
if (InState == ESelectionPreviewState::Undefined)
{
DefinedKeyStates.Remove(Key);
}
else
{
DefinedKeyStates.Add(Key, InState);
}
CachedSelectionHash.Reset();
}
void FSequencerSelectionPreview::SetSelectionState(TWeakPtr<UE::Sequencer::FViewModel> InModel, ESelectionPreviewState InState)
{
if (InState == ESelectionPreviewState::Undefined)
{
DefinedModelStates.Remove(InModel);
}
else
{
DefinedModelStates.Add(InModel, InState);
}
CachedSelectionHash.Reset();
}
ESelectionPreviewState FSequencerSelectionPreview::GetSelectionState(const FSequencerSelectedKey& Key) const
{
if (const ESelectionPreviewState* State = DefinedKeyStates.Find(Key))
{
return *State;
}
return ESelectionPreviewState::Undefined;
}
ESelectionPreviewState FSequencerSelectionPreview::GetSelectionState(TWeakPtr<UE::Sequencer::FViewModel> InModel) const
{
if (const ESelectionPreviewState* State = DefinedModelStates.Find(InModel))
{
return *State;
}
return ESelectionPreviewState::Undefined;
}
void FSequencerSelectionPreview::Empty()
{
EmptyDefinedKeyStates();
EmptyDefinedModelStates();
}
void FSequencerSelectionPreview::EmptyDefinedKeyStates()
{
DefinedKeyStates.Reset();
CachedSelectionHash.Reset();
}
void FSequencerSelectionPreview::EmptyDefinedModelStates()
{
DefinedModelStates.Reset();
CachedSelectionHash.Reset();
}
uint32 FSequencerSelectionPreview::GetSelectionHash() const
{
if (!CachedSelectionHash.IsSet())
{
uint32 NewHash = 0;
for (TPair<FSequencerSelectedKey, ESelectionPreviewState> Pair : DefinedKeyStates)
{
NewHash = HashCombine(NewHash, HashCombine(GetTypeHash(Pair.Key), GetTypeHash(Pair.Value)));
}
for (TPair<TWeakPtr<UE::Sequencer::FViewModel>, ESelectionPreviewState> Pair : DefinedModelStates)
{
NewHash = HashCombine(NewHash, HashCombine(GetTypeHash(Pair.Key), GetTypeHash(Pair.Value)));
}
CachedSelectionHash = NewHash;
}
return CachedSelectionHash.GetValue();
}