// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MetasoundNodeConfigurationCustomization.h" #include "SCurveEditor.h" #include "Curves/CurveFloat.h" class FMappingFunctionNodeConfigurationCustomization : public Metasound::Editor::FMetaSoundNodeConfigurationDataDetails, public FCurveOwnerInterface { public: FMappingFunctionNodeConfigurationCustomization(TSharedPtr InStructProperty, TWeakObjectPtr InNode); virtual void OnChildRowAdded(IDetailPropertyRow& ChildRow) override; // FCurveOwnerInterface interface virtual TArray GetCurves() override; virtual void GetCurves(TAdderReserverRef Curves) const override; virtual TArray GetCurves() const override; virtual bool HasRichCurves() const override { return true; } virtual bool IsLinearColorCurve() const override { return false; } virtual bool IsValidCurve(FRichCurveEditInfo CurveInfo) override; virtual void MakeTransactional() override; virtual void ModifyOwner() override; virtual void ModifyOwnerChange() override; virtual void OnCurveChanged(const TArray& ChangedCurveEditInfos) override; virtual TArray GetOwners() const override; private: void OnChildPropertyChanged(const FPropertyChangedEvent& InPropertyChangedEvent); void UpdateMappingFunctionData(); FString StructPropertyPath; TSharedPtr CurvePropertyHandle; TSharedPtr bWrapInputsPropertyHandle; FRuntimeFloatCurve* RuntimeCurve = nullptr; TArray OwnerObjects; TSharedPtr CurveEditorWidget; };