// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "SlateFwd.h" #include "Input/Reply.h" #include "Factories/FbxSceneImportFactory.h" #include "Widgets/Views/SListView.h" enum class EFbxSceneReimportStatusFlags : uint8; typedef TSharedPtr FbxMeshInfoPtr; typedef TMap FbxSceneReimportStatusMap; typedef FbxSceneReimportStatusMap* FbxSceneReimportStatusMapPtr; typedef TArray> FbxOverrideNameOptionsArray; typedef FbxOverrideNameOptionsArray* FbxOverrideNameOptionsArrayPtr; namespace FbxSceneBaseListViewColumn { const FName PivotColumnId(TEXT("PivotNameHeaderId")); } class SFbxSSceneBaseMeshListView: public SListView { public: ~SFbxSSceneBaseMeshListView(); virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime); FReply OnCreateOverrideOptions(); TSharedPtr CreateOverrideOptionComboBox(); bool CanDeleteOverride() const; FReply OnDeleteOverride(); void OnCreateOverrideOptionsWithName(const FText& CommittedText, ETextCommit::Type CommitType); virtual void OnChangedOverrideOptions(TSharedPtr ItemSelected, ESelectInfo::Type SelectInfo) = 0; FReply OnSelectAssetUsing(); void OnSelectionChanged(FbxMeshInfoPtr Item, ESelectInfo::Type SelectionType); virtual void OnToggleSelectAll(ECheckBoxState CheckType); static void FillMeshStatusMap(FbxSceneReimportStatusMapPtr MeshStatusMap, TSharedPtr SceneInfo, TSharedPtr SceneInfoOriginal, bool bFillSkeletalMeshStatusMap, TArray* FilterFbxMeshesArrayPtr = nullptr, TArray* FbxMeshesArrayPtr = nullptr); static TSharedPtr FindNodeInfoByUid(uint64 NodeUid, TSharedPtr SceneInfoOriginal); protected: TSharedPtr SceneInfo; UnFbx::FBXImportOptions* GlobalImportSettings; UnFbx::FBXImportOptions* CurrentMeshImportOptions; /** the elements we show in the tree view */ TArray FbxMeshesArray; void AddSelectionToImport(); void RemoveSelectionFromImport(); virtual void SetSelectionImportState(bool MarkForImport); TSharedPtr FindOptionNameFromName(FString OptionName); void AssignToOptions(FString OptionName); FString FindUniqueOptionName(FString OverrideName, bool bForceNumber); void AddBakePivotMenu(class FMenuBuilder& MenuBuilder); void FillPivotContextMenu(class FMenuBuilder& MenuBuilder); void AssignToPivot(uint64 NodeUid); FbxOverrideNameOptionsArrayPtr OverrideNameOptions; ImportOptionsNameMapPtr OverrideNameOptionsMap; TSharedPtr OptionComboBox; TSharedPtr DefaultOptionNamePtr; };