// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved. #include "NiagaraParameterCollectionViewModel.h" #include "NiagaraParameterViewModel.h" #include "NiagaraTypes.h" #define LOCTEXT_NAMESPACE "NiagaraParameterCollectionViewModel" void INiagaraParameterCollectionViewModel::SortViewModels(TArray>& InOutViewModels) { auto SortVars = [](const TSharedRef& A, const TSharedRef& B) { if (A->GetSortOrder() < B->GetSortOrder()) { return true; } else if (A->GetSortOrder() > B->GetSortOrder()) { return false; } //If equal priority, sort lexicographically. return A->GetName().ToString() < B->GetName().ToString(); }; InOutViewModels.Sort(SortVars); } FNiagaraParameterCollectionViewModel::FNiagaraParameterCollectionViewModel(ENiagaraParameterEditMode InParameterEditMode) : ParameterEditMode(InParameterEditMode) , bIsExpanded(true) { } bool FNiagaraParameterCollectionViewModel::GetIsExpanded() const { return bIsExpanded; } void FNiagaraParameterCollectionViewModel::SetIsExpanded(bool bInIsExpanded) { if (bIsExpanded != bInIsExpanded) { bIsExpanded = bInIsExpanded; OnExpandedChangedDelegate.Broadcast(); } } EVisibility FNiagaraParameterCollectionViewModel::GetAddButtonVisibility() const { return ParameterEditMode == ENiagaraParameterEditMode::EditAll ? EVisibility::Visible : EVisibility::Collapsed; } FText FNiagaraParameterCollectionViewModel::GetAddButtonText() const { return LOCTEXT("AddButtonText", "Add Parameter"); } bool FNiagaraParameterCollectionViewModel::CanDeleteParameters() const { return ParameterEditMode == ENiagaraParameterEditMode::EditAll; } TSet FNiagaraParameterCollectionViewModel::GetParameterNames() { TSet ParameterNames; for (TSharedRef Parameter : GetParameters()) { ParameterNames.Add(Parameter->GetName()); } return ParameterNames; } const TArray>& FNiagaraParameterCollectionViewModel::GetAvailableTypes() { if (AvailableTypes.IsValid() == false) { RefreshAvailableTypes(); } return *AvailableTypes; } FText FNiagaraParameterCollectionViewModel::GetTypeDisplayName(TSharedPtr Type) const { return Type->GetStruct()->GetDisplayNameText(); } void FNiagaraParameterCollectionViewModel::RefreshAvailableTypes() { if (AvailableTypes.IsValid() == false) { AvailableTypes = MakeShareable(new TArray>()); } AvailableTypes->Empty(); for (const FNiagaraTypeDefinition& RegisteredType : FNiagaraTypeRegistry::GetRegisteredParameterTypes()) { if (SupportsType(RegisteredType)) { AvailableTypes->Add(MakeShareable(new FNiagaraTypeDefinition(RegisteredType))); } } } void FNiagaraParameterCollectionViewModel::NotifyParameterChangedExternally(FGuid ParameterId) { for (TSharedRef ParameterViewModel : GetParameters()) { if (ParameterViewModel->GetId() == ParameterId) { ParameterViewModel->NotifyDefaultValueChanged(); } } } #undef LOCTEXT_NAMESPACE // NiagaraParameterCollectionViewModel