2019-12-26 15:33:43 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2019-05-20 15:02:25 -04:00
# include "DebugCameraControllerSettingsCustomization.h"
# include "Engine/DebugCameraControllerSettings.h"
# include "Widgets/Text/STextBlock.h"
# include "PropertyRestriction.h"
# include "IDetailChildrenBuilder.h"
# include "DetailLayoutBuilder.h"
# include "DetailCategoryBuilder.h"
# include "DetailWidgetRow.h"
# include "IDetailPropertyRow.h"
# include "ShowFlags.h"
2019-06-06 17:21:36 -04:00
# include "RHI.h"
2019-05-20 15:02:25 -04:00
TSharedRef < IPropertyTypeCustomization > FDebugCameraControllerSettingsViewModeIndexCustomization : : MakeInstance ( )
{
return MakeShareable ( new FDebugCameraControllerSettingsViewModeIndexCustomization ) ;
}
FDebugCameraControllerSettingsViewModeIndexCustomization : : FDebugCameraControllerSettingsViewModeIndexCustomization ( )
{
}
void FDebugCameraControllerSettingsViewModeIndexCustomization : : CustomizeHeader ( TSharedRef < class IPropertyHandle > StructPropertyHandle , class FDetailWidgetRow & HeaderRow , IPropertyTypeCustomizationUtils & StructCustomizationUtils )
{
// We'll set up reset to default ourselves
const bool bDisplayResetToDefault = false ;
const FText DisplayNameOverride = FText : : GetEmpty ( ) ;
const FText DisplayToolTipOverride = FText : : GetEmpty ( ) ;
uint32 NumChildren ;
StructPropertyHandle - > GetNumChildren ( NumChildren ) ;
TSharedPtr < IPropertyHandle > ViewModeIndexHandle ;
for ( uint32 ChildIndex = 0 ; ChildIndex < NumChildren ; + + ChildIndex )
{
const TSharedRef < IPropertyHandle > ChildHandle = StructPropertyHandle - > GetChildHandle ( ChildIndex ) . ToSharedRef ( ) ;
if ( ChildHandle - > GetProperty ( ) - > GetName ( ) = = TEXT ( " ViewModeIndex " ) )
{
ViewModeIndexHandle = ChildHandle ;
}
}
check ( ViewModeIndexHandle . IsValid ( ) ) ;
TSharedPtr < FPropertyRestriction > EnumRestriction = MakeShareable ( new FPropertyRestriction ( NSLOCTEXT ( " DebugCycleViewModes " , " DebugCycleViewModes " , " Cycle view modes for debug camera controller " ) ) ) ;
const UEnum * const ViewModeIndexEnum = StaticEnum < EViewModeIndex > ( ) ;
EnumRestriction - > AddHiddenValue ( ViewModeIndexEnum - > GetNameStringByValue ( ( uint8 ) EViewModeIndex : : VMI_VisualizeBuffer ) ) ;
2021-03-21 04:07:16 -04:00
EnumRestriction - > AddHiddenValue ( ViewModeIndexEnum - > GetNameStringByValue ( ( uint8 ) EViewModeIndex : : VMI_VisualizeNanite ) ) ;
2019-06-06 17:21:36 -04:00
EnumRestriction - > AddHiddenValue ( ViewModeIndexEnum - > GetNameStringByValue ( ( uint8 ) EViewModeIndex : : VMI_StationaryLightOverlap ) ) ;
# if RHI_RAYTRACING
2021-11-23 10:25:31 -05:00
if ( ! GRHISupportsRayTracing | | ! GRHISupportsRayTracingShaders )
2019-06-06 17:21:36 -04:00
{
EnumRestriction - > AddHiddenValue ( ViewModeIndexEnum - > GetNameStringByValue ( ( uint8 ) EViewModeIndex : : VMI_PathTracing ) ) ;
EnumRestriction - > AddHiddenValue ( ViewModeIndexEnum - > GetNameStringByValue ( ( uint8 ) EViewModeIndex : : VMI_RayTracingDebug ) ) ;
}
# endif
2019-05-20 15:02:25 -04:00
ViewModeIndexHandle - > AddRestriction ( EnumRestriction . ToSharedRef ( ) ) ;
HeaderRow
. NameContent ( )
[
StructPropertyHandle - > CreatePropertyNameWidget ( DisplayNameOverride , DisplayToolTipOverride , bDisplayResetToDefault )
]
. ValueContent ( )
. MinDesiredWidth ( 500 )
[
ViewModeIndexHandle - > CreatePropertyValueWidget ( )
] ;
}
void FDebugCameraControllerSettingsViewModeIndexCustomization : : CustomizeChildren ( TSharedRef < IPropertyHandle > StructPropertyHandle , class IDetailChildrenBuilder & ChildBuilder , IPropertyTypeCustomizationUtils & StructCustomizationUtils )
{
}