// Copyright 2022 Just2Devs. All Rights Reserved. #include "K2Node_WidgetConstructObjectDetailsCustomisation.h" #include "DetailCategoryBuilder.h" #include "DetailLayoutBuilder.h" #include "DetailWidgetRow.h" #include "K2Node_WidgetConstructObject.h" void FK2Node_WidgetConstructObjectDetailsCustomisation::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) { DetailBuilder.HideProperty(GET_MEMBER_NAME_CHECKED(UK2Node_WidgetConstructObject, PinsNames)); DetailBuilder.HideProperty(GET_MEMBER_NAME_CHECKED(UK2Node_WidgetConstructObject, PinsEnabled)); TArray> ObjectsCustomised; DetailBuilder.GetObjectsBeingCustomized(ObjectsCustomised); if(ObjectsCustomised.Num() == 0) return; UK2Node_WidgetConstructObject* Node = Cast(ObjectsCustomised[0]); if(!Node) return; IDetailCategoryBuilder& Category = DetailBuilder.EditCategory(TEXT("Pin Properties")); const TSharedPtr PinsEnabledHandle = DetailBuilder.GetProperty(TEXT("PinsEnabled")); TSharedPtr PinsEnabledArrayHandle = PinsEnabledHandle->AsArray(); const TSharedPtr PinsNamesHandle = DetailBuilder.GetProperty(TEXT("PinsNames")); TSharedPtr PinsNamesArrayHandle = PinsNamesHandle->AsArray(); const FSlateFontInfo DetailFontInfo = IDetailLayoutBuilder::GetDetailFont(); if(PinsEnabledArrayHandle.IsValid() && PinsNamesArrayHandle.IsValid()) { uint32 ArrayLength = 0; PinsEnabledArrayHandle->GetNumElements(ArrayLength); for(uint32 i = 0; i < ArrayLength; i++) { Category.AddCustomRow(FText::FromName(Node->PinsNames[i]), false).NameContent() [ SNew(SBox) .Padding(FMargin(15, 0)) .Content() [ SNew(STextBlock) .Text(FText::FromName(Node->PinsNames[i])) .Font(DetailFontInfo) ] ].ValueContent() [ PinsEnabledArrayHandle->GetElement(i)->CreatePropertyValueWidget() ]; } } }