Files
UnrealEngineUWP/Engine/Source/Developer/Profiler/Private/Widgets/SProfilerGraphPanel.h
ionut matasaru 1502e84e56 Disabled Profiler if STATS is not enabled (so Editor can compile also when ENABLE_STATNAMEDEVENTS is on).
#jira UE-140874
#fyi Brandon.Schaefer
#preflight 6201451e6773a3612898bddb
#rb none

[CL 18886574 by ionut matasaru in ue5-main branch]
2022-02-07 11:35:37 -05:00

120 lines
3.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#if STATS
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "ProfilerManager.h"
#include "Widgets/SCompoundWidget.h"
class SDataGraph;
class SProfilerMiniView;
class SProfilerThreadView;
class SScrollBar;
/** A custom widget that acts as a container for widgets like SDataGraph or SEventTree. */
class SProfilerGraphPanel
: public SCompoundWidget
{
public:
/** Default constructor. */
SProfilerGraphPanel();
/** Virtual destructor. */
virtual ~SProfilerGraphPanel();
SLATE_BEGIN_ARGS(SProfilerGraphPanel){}
SLATE_END_ARGS()
/**
* Construct this widget
*
* @param InArgs The declaration data for this widget
*/
void Construct(const FArguments& InArgs);
TSharedPtr<SDataGraph>& GetMainDataGraph()
{
return DataGraph;
}
public:
//~ SWidget interface
virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override;
protected:
/** Called when the status of specified tracked stat has changed. */
void ProfilerManager_OnTrackedStatChanged(const TSharedPtr<FTrackedStat>& TrackedStat, bool bIsTracked);
/**
* Called when the user scrolls the scrollbar
*
* @param ScrollOffset Scroll offset as a fraction between 0 and 1.
*/
void HorizontalScrollBar_OnUserScrolled(float ScrollOffset);
void VerticalScrollBar_OnUserScrolled(float ScrollOffset);
/** Called when the frame offset has been changed in the data graph widget. */
void OnDataGraphGraphOffsetChanged(int32 InFrameOffset);
void ProfilerManager_OnViewModeChanged(EProfilerViewMode NewViewMode);
public:
/** Called when the selection box has been changed in the profiler mini-view widget. */
void MiniView_OnSelectionBoxChanged(int32 FrameStart, int32 FrameEnd);
void ThreadView_OnViewPositionXChanged(double FrameStartMS, double FrameEndMS, double MaxEndTimeMS, int32 FrameStart, int32 FrameEnd);
void ThreadView_OnViewPositionYChanged(double PosYStart, double PosYEnd, double MaxPosY);
protected:
/** Sets state of the scroll bar. */
void SetScrollBarState();
void UpdateInternals();
//protected:
public:
/** Holds the data graph widget. */
TSharedPtr<SDataGraph> DataGraph;
/** Holds the thread view widget. */
TSharedPtr<SProfilerThreadView> ThreadView;
/** Weak pointer to the profiler mini-view. */
TWeakPtr<SProfilerMiniView> ProfilerMiniView;
/** Temporary solution to avoid feedback loop when changing the selection box. */
bool bLockMiniViewState;
/** Horizontal scroll bar, used for scrolling graphs. */
TSharedPtr<SScrollBar> HorizontalScrollBar;
/** Vertical scroll bar, used for scrolling graphs. */
TSharedPtr<SScrollBar> VerticalScrollBar;
/** Number of graph points. */
int32 NumDataPoints;
/** Number of graph points that can be displayed at once in this widget. */
int32 NumVisiblePoints;
/** Current offset of the graph, index of the first visible graph point. */
int32 GraphOffset;
/** Current view mode. */
EProfilerViewMode ViewMode;
};
#endif // STATS