Files
UnrealEngineUWP/Engine/Source/Editor/EnvironmentQueryEditor/Private/DetailCustomizations/EnvQueryTestDetails.h
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

118 lines
3.5 KiB
C++

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Misc/Attribute.h"
#include "UObject/WeakObjectPtr.h"
#include "Layout/Visibility.h"
#include "IDetailCustomization.h"
class IDetailLayoutBuilder;
class IPropertyHandle;
class STestFunctionWidget;
class SWidget;
class FEnvQueryTestDetails : public IDetailCustomization
{
public:
/** Makes a new instance of this detail layout class for a specific detail view requesting it */
static TSharedRef<IDetailCustomization> MakeInstance();
/** IDetailCustomization interface */
virtual void CustomizeDetails( IDetailLayoutBuilder& DetailLayout ) override;
protected:
/** cached name, value pairs of enums that may change available options based on other options. */
struct FTextIntPair
{
FText Text;
int32 Int;
FTextIntPair() {}
FTextIntPair(FText InText, int32 InInt) : Text(InText), Int(InInt) {}
};
TSharedPtr<IPropertyHandle> FilterTypeHandle;
TSharedPtr<IPropertyHandle> ScoreEquationHandle;
TSharedPtr<IPropertyHandle> TestPurposeHandle;
TSharedPtr<IPropertyHandle> ClampMinTypeHandle;
TSharedPtr<IPropertyHandle> ClampMaxTypeHandle;
TSharedPtr<IPropertyHandle> ScoreClampMinHandle;
TSharedPtr<IPropertyHandle> FloatValueMinHandle;
TSharedPtr<IPropertyHandle> ScoreClampMaxHandle;
TSharedPtr<IPropertyHandle> FloatValueMaxHandle;
TSharedPtr<IPropertyHandle> ScoreHandle;
bool IsFiltering() const;
bool IsScoring() const;
bool UsesFilterMin() const;
bool UsesFilterMax() const;
FText GetCurrentFilterTestDesc() const;
FText GetScoreEquationInfo() const;
EVisibility GetScoreVisibility() const;
EVisibility GetClampingVisibility() const;
TSharedRef<SWidget> OnGetFilterTestContent();
void BuildFilterTestValues();
void BuildScoreEquationValues();
TSharedRef<SWidget> OnGetEquationValuesContent();
FText GetEquationValuesDesc() const;
void OnScoreEquationChange(int32 Index);
void OnFilterTestChange(int32 Index);
void OnClampMinTestChange(int32 Index);
void OnClampMaxTestChange(int32 Index);
TSharedRef<SWidget> OnGetClampMaxTypeContent();
FText GetClampMaxTypeDesc() const;
TSharedRef<SWidget> OnGetClampMinTypeContent();
FText GetClampMinTypeDesc() const;
bool IsMatchingBoolValue() const;
// Is this a float test at all?
EVisibility GetFloatTestVisibility() const;
// Is this a float test that is filtering?
EVisibility GetFloatFilterVisibility() const;
// Is this a float test that is scoring?
EVisibility GetFloatScoreVisibility() const;
EVisibility GetTestPreviewVisibility() const;
EVisibility GetVisibilityOfFloatValueMin() const;
EVisibility GetVisibilityOfFloatValueMax() const;
EVisibility GetVisibilityOfValueMinForScoreClamping() const;
EVisibility GetVisibilityOfValueMaxForScoreClamping() const;
EVisibility GetBoolValueVisibilityForScoring() const;
EVisibility GetBoolValueVisibility() const;
EVisibility GetVisibilityOfScoreClampMinimum() const;
EVisibility GetVisibilityOfScoreClampMaximum() const;
void BuildScoreClampingTypeValues(bool bBuildMinValues, TArray<FTextIntPair>& ClampTypeValues) const;
void UpdateTestFunctionPreview() const;
void FillEquationSamples(uint8 EquationType, bool bInversed, TArray<float>& Samples) const;
TSharedPtr<STestFunctionWidget> PreviewWidget;
TArray<FTextIntPair> FilterTestValues;
TArray<FTextIntPair> ClampMinTypeValues;
TArray<FTextIntPair> ClampMaxTypeValues;
TArray<FTextIntPair> ScoreEquationValues;
TWeakObjectPtr<UObject> MyTest;
FORCEINLINE bool AllowWritingToFiltersFromScore() const { return false; }
TAttribute<bool> AllowWriting;
};