Files
UnrealEngine/Engine/Source/Editor/DetailCustomizations/Private/MeshComponentDetails.cpp
2025-05-18 13:04:45 +08:00

33 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MeshComponentDetails.h"
#include "AssetSelection.h"
#include "Components/MeshComponent.h"
#include "DetailCategoryBuilder.h"
#include "DetailLayoutBuilder.h"
#include "IDetailsView.h"
#include "Misc/AssertionMacros.h"
#include "PropertyHandle.h"
TSharedRef<IDetailCustomization> FMeshComponentDetails::MakeInstance()
{
return MakeShareable( new FMeshComponentDetails );
}
void FMeshComponentDetails::CustomizeDetails( IDetailLayoutBuilder& DetailLayout )
{
RenderingCategory = &DetailLayout.EditCategory("Rendering");
TSharedRef<IPropertyHandle> MaterialProperty = DetailLayout.GetProperty( GET_MEMBER_NAME_CHECKED(UMeshComponent, OverrideMaterials) );
if( MaterialProperty->IsValidHandle() )
{
// Only show this in the advanced section of the category if we have selected actors (which will show a separate material section)
TSharedPtr<IDetailsView> DetailsView = DetailLayout.GetDetailsViewSharedPtr();
bool bIsAdvanced = DetailsView && DetailsView->GetSelectedActorInfo().NumSelected > 0;
RenderingCategory->AddProperty( MaterialProperty, bIsAdvanced ? EPropertyLocation::Advanced : EPropertyLocation::Default );
}
}