// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Widgets/SWidget.h" #include "IStatsViewer.h" #include "Framework/Application/IMenu.h" #include "StatsPage.h" #include "StaticMeshLightingInfo.h" class SComboButton; struct ESwapOptions { enum Type { Swap = 0, SwapAskRes }; }; struct ESetToOptions { enum Type { Vertex = 0, Texture, TextureAskRes }; }; /** Stats page representing static mesh lighting info */ class FStaticMeshLightingInfoStatsPage : public FStatsPage, public TSharedFromThis { public: /** Singleton accessor */ static FStaticMeshLightingInfoStatsPage& Get(); /** Begin IStatsPage interface */ virtual void Generate( TArray< TWeakObjectPtr >& OutObjects ) const override; virtual void GenerateTotals( const TArray< TWeakObjectPtr >& InObjects, TMap& OutTotals ) const override; virtual TSharedPtr GetCustomWidget(TWeakPtr< class IStatsViewer > InParentStatsViewer) override; virtual void OnShow( TWeakPtr< class IStatsViewer > InParentStatsViewer ) override; virtual void OnHide() override; /** End IStatsPage interface */ virtual ~FStaticMeshLightingInfoStatsPage() {} private: /** * Get the content for the swap combo button menu * @param InParentStatsViewer The parent stats viewer of this page */ TSharedRef OnGetSwapComboButtonMenuContent(TWeakPtr< class IStatsViewer > InParentStatsViewer) const; /** * Get the content for the 'set to' combo button menu * @param InParentStatsViewer The parent stats viewer of this page */ TSharedRef OnGetSetToComboButtonMenuContent(TWeakPtr< class IStatsViewer > InParentStatsViewer) const; /** * Swap button was clicked * @param InParentStatsViewer The parent stats viewer of this page * @param InSwapOption The type to swap to */ void OnSwapClicked(TWeakPtr< class IStatsViewer > InParentStatsViewer, ESwapOptions::Type InSwapOption) const; /** * 'Set to' button was clicked * @param InParentStatsViewer The parent stats viewer of this page * @param InSetToOption The type to set to */ void OnSetToClicked(TWeakPtr< class IStatsViewer > InParentStatsViewer, ESetToOptions::Type InSetToOption) const; /** * Helper function to set the mapping method on selected components * @param InParentStatsViewer The parent stats viewer of this page * @param bInTextureMapping Whether to set to texture mode or not * @param InStaticLightingResolution The lightmap resolution to set the selected components to */ void SetMappingMethodOnSelectedComponents(TWeakPtr< class IStatsViewer > InParentStatsViewer, bool bInTextureMapping, int32 InStaticLightingResolution) const; /** * Helper function to swap the mapping method on selected components * @param InParentStatsViewer The parent stats viewer of this page * @param InStaticLightingResolution The lightmap resolution to set the selected components to */ void SwapMappingMethodOnSelectedComponents(TWeakPtr< class IStatsViewer > InParentStatsViewer, int32 InStaticLightingResolution) const; /** * Helper function to set static lighting resolution - displays a type-in popup * that calls back to OnResolutionCommitted when a value is entered * @param InParentStatsViewer The parent stats viewer of this page * @param bSwap Whether we are swapping or setting the value */ void GetUserSetStaticLightmapResolution(TWeakPtr< class IStatsViewer > InParentStatsViewer, bool bSwap) const; /** * Helper function to set static lighting resolution * @param ResolutionText The text the user typed in * @param CommitInfo The type of commit * @param InParentStatsViewer The parent stats viewer of this page * @param bSwap Whether we are swapping or setting the value */ void OnResolutionCommitted(const FText& ResolutionText, ETextCommit::Type CommitInfo, TWeakPtr< class IStatsViewer > InParentStatsViewer, bool bSwap) const; /** * Delegate to allow is to trigger a refresh on new level * @param InParentStatsViewer The parent stats viewer of this page */ void OnEditorNewCurrentLevel( TWeakPtr< class IStatsViewer > InParentStatsViewer ); /** * Delegate to allow is to trigger a refresh level selection * @param InParentStatsViewer The parent stats viewer of this page */ void OnEditorLevelSelected( TWeakPtr< class IStatsViewer > InParentStatsViewer ); private: /** Swap combo button */ TSharedPtr SwapComboButton; /** 'Set to' combo button */ TSharedPtr SetToComboButton; /** Custom widget for this page */ TSharedPtr CustomWidget; /** Reference to owner of the current popup */ mutable TWeakPtr ResolutionEntryMenu; };