EM_Task/UnrealEd/Private/Fbx/SSceneReimportStaticMeshListView.h
Boshuang Zhao 5144a49c9b add
2026-02-13 16:18:33 +08:00

90 lines
3.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "Styling/SlateTypes.h"
#include "Widgets/Views/STableViewBase.h"
#include "Widgets/Views/STableRow.h"
#include "Fbx/SSceneBaseMeshListView.h"
struct FPropertyChangedEvent;
class SFbxSceneStaticMeshReimportListView: public SFbxSSceneBaseMeshListView
{
public:
~SFbxSceneStaticMeshReimportListView();
SLATE_BEGIN_ARGS(SFbxSceneStaticMeshReimportListView)
: _SceneInfo(nullptr), _SceneInfoOriginal(nullptr), _MeshStatusMap(nullptr), _GlobalImportSettings(nullptr), _OverrideNameOptionsMap(nullptr), _SceneImportOptionsStaticMeshDisplay(nullptr)
{}
SLATE_ARGUMENT(TSharedPtr<FFbxSceneInfo>, SceneInfo)
SLATE_ARGUMENT(TSharedPtr<FFbxSceneInfo>, SceneInfoOriginal)
SLATE_ARGUMENT(FbxSceneReimportStatusMapPtr, MeshStatusMap)
SLATE_ARGUMENT(UnFbx::FBXImportOptions*, GlobalImportSettings)
SLATE_ARGUMENT(FbxOverrideNameOptionsArrayPtr, OverrideNameOptions)
SLATE_ARGUMENT(ImportOptionsNameMapPtr, OverrideNameOptionsMap)
SLATE_ARGUMENT(class UFbxSceneImportOptionsStaticMesh*, SceneImportOptionsStaticMeshDisplay)
SLATE_END_ARGS()
/** Construct this widget */
void Construct(const FArguments& InArgs);
TSharedRef<ITableRow> OnGenerateRowFbxSceneListView(FbxMeshInfoPtr Item, const TSharedRef<STableViewBase>& OwnerTable);
void OnFinishedChangingProperties(const FPropertyChangedEvent& PropertyChangedEvent);
/** Filter show every reimport that will add content */
void OnToggleFilterAddContent(ECheckBoxState CheckType);
ECheckBoxState IsFilterAddContentChecked() const
{
return FilterAddContent ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
/** Filter show every reimport that will delete content */
void OnToggleFilterDeleteContent(ECheckBoxState CheckType);
ECheckBoxState IsFilterDeleteContentChecked() const
{
return FilterDeleteContent ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
/** Filter show every reimport that will override content */
void OnToggleFilterOverwriteContent(ECheckBoxState CheckType);
ECheckBoxState IsFilterOverwriteContentChecked() const
{
return FilterOverwriteContent ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
/** Filter show every reimport that dont match between the original fbx and the new one */
void OnToggleFilterDiff(ECheckBoxState CheckType);
ECheckBoxState IsFilterDiffChecked() const
{
return FilterDiff ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
protected:
TSharedPtr<FFbxSceneInfo> SceneInfoOriginal;
class UFbxSceneImportOptionsStaticMesh* SceneImportOptionsStaticMeshDisplay;
/** the elements we show in the list view */
TArray<FbxMeshInfoPtr> FilterFbxMeshesArray;
bool FilterAddContent;
bool FilterDeleteContent;
bool FilterOverwriteContent;
bool FilterDiff;
void UpdateFilterList();
FbxSceneReimportStatusMapPtr MeshStatusMap;
virtual void SetSelectionImportState(bool MarkForImport);
virtual void OnToggleSelectAll(ECheckBoxState CheckType);
/** Open a context menu for the current selection */
TSharedPtr<SWidget> OnOpenContextMenu();
void AssignToStaticMesh();
bool ShowResetAssignToStaticMesh();
void ResetAssignToStaticMesh();
virtual void OnChangedOverrideOptions(TSharedPtr<FString> ItemSelected, ESelectInfo::Type SelectInfo);
};