You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3096076 on 2016/08/22 by Matthew.Griffin
Fixes for building with -nosharedPCH
Added nodes for building with -nosharedPCH and -noPCH but not using them by default as they take so much longer than NonUnity and there are still errors with -noPCH
Change 3097064 on 2016/08/22 by Ben.Marsh
Core: Refactoring OutputDevice.h, OutputDevices.h, FeedbackDevice.h, CallbackDevice.h into one-class per file, and files named after their classes.
Change 3097102 on 2016/08/22 by Ben.Marsh
Core: Move log macros and related functionality into the Logging folder.
Change 3097240 on 2016/08/22 by Ben.Marsh
Core: Move FCommandLine into its own header.
Change 3097258 on 2016/08/22 by Ben.Marsh
Core: Move FFileHelper into its own header.
Change 3097279 on 2016/08/22 by Ben.Marsh
Core: Split FArchive derived classes into separate headers per class.
Change 3097742 on 2016/08/23 by Ben.Marsh
UnrealGameSync: Add the -r5 parameter to P4 sync command lines, to retry syncs on poor connections before failing.
Change 3099283 on 2016/08/24 by Ben.Marsh
Core: Move math functions which are dependent on multiple class definitions into individual class headers. This forces an include order, but allows us to include individual math classes separately. Would ideally split out the FMath class into a Math namespace and declare/implement things like intersection tests and interpolation routines in separate headers.
Change 3099417 on 2016/08/24 by Ben.Marsh
CoreUObject: Separating out UObject archive classes into separate headers.
Change 3099544 on 2016/08/24 by Ben.Marsh
CoreUObject: Rename UTextProperty.h/cpp to TextProperty.h/cpp
Change 3099678 on 2016/08/24 by Ben.Marsh
CoreUObject: Rename ObjectBase.h to ObjectMacros.h to avoid ambiguiity with UObjectBase.h, and move Interface.h/cpp into the UObject folder.
Change 3099951 on 2016/08/24 by Ben.Marsh
Core: Split out ThreadingBase into class-per-file headers.
Change 3102385 on 2016/08/26 by Matthew.Griffin
First round of fixes from attempting to compile Editor in Monolithic mode
Changed multiple DetermineOptimalSpacing free functions to be members of their respective classes
Changed duplicate FScopedTempFile classes to be named for their respective source control types (Git & SVN)
Export Declaration of LogUnrealAudioDevice extern instead of defining it in multiple modules
Changed duplicate FDiffResultItem struct to FTreeDiffResultItem
Added FORCEINLINE to FFeaturedClasses functions in .inl file
Change 3102728 on 2016/08/26 by Ben.Marsh
Core: Move threading classes from ThreadingBase.h into separate headers, and globals into CoreGlobals.h.
Change 3102850 on 2016/08/26 by Ben.Marsh
Core: Move FCriticalSection into its own file (CriticalSection.h and platform-specific versions).
Change 3102877 on 2016/08/26 by Ben.Marsh
Core: Move definitions of GLog, GError, GWarn into CoreGlobals.h
Change 3102898 on 2016/08/26 by Ben.Marsh
Core: Move supporting assert functionality (the FDebug class) into AssertionMacros.h to remove circular header dependencies.
Change 3102956 on 2016/08/26 by Ben.Marsh
Core: Move FExec into its own header (Misc/Exec.h)
Change 3102961 on 2016/08/26 by Ben.Marsh
Core: Fix matrix functions referencing the forceinline'd FMatrix constructor before it's declared.
Change 3102982 on 2016/08/26 by Ben.Marsh
Core: Move FMessageDialog into its own header (Misc/MessageDialog.h)
Change 3103008 on 2016/08/26 by Ben.Marsh
Core: Move definition of LowLevelFatalError into AssertionMacros.h.
Change 3103040 on 2016/08/26 by Ben.Marsh
Core: Move FError::Throwf (only enabled for UHT) into its own header in CoreUObject.
Change 3103057 on 2016/08/26 by Ben.Marsh
Core: Move FMsg function definitions into the LogMacros.h header, where it's primarily used from.
Change 3103102 on 2016/08/26 by Ben.Marsh
Core: Make the LogMacros.h header standalone. Untangles a few header dependencies necessary to include log macros early on. Global Core log channels are now defined in CoreGlobals.h
Change 3103160 on 2016/08/26 by Ben.Marsh
CoreUObject: Separate Linker.h into LinkerLoad.h, LinkerSave.h, PackageFileSummary.h, ObjectResource.h (matching existing cpp files).
Change 3103265 on 2016/08/26 by Ben.Marsh
Core: Split FScriptArray, TMRUArray, TTransArray, TIndirectArray into separate headers.
Change 3103642 on 2016/08/26 by Ben.Marsh
Core: Remove reference to FMath function from allocator, to avoid unnecessarily bringing in math library.
[CL 3104315 by Ben Marsh in Main branch]
209 lines
7.7 KiB
C++
209 lines
7.7 KiB
C++
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
|
|
#pragma once
|
|
#include "ObjectMacros.h"
|
|
#include "SDockTab.h"
|
|
#include "VisualLogger/VisualLogger.h"
|
|
|
|
struct FVisualLoggerDBRow;
|
|
|
|
struct FVisualLoggerDBEvents
|
|
{
|
|
DECLARE_MULTICAST_DELEGATE_TwoParams(FItemSelectionChangedEvent, const FVisualLoggerDBRow&, int32);
|
|
DECLARE_MULTICAST_DELEGATE_TwoParams(FNewItemEvent, const FVisualLoggerDBRow&, int32);
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FNewRowEvent, const FVisualLoggerDBRow&);
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FOnRowSelectionChangedEvent, const TArray<FName>&);
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FOnRowChangedVisibilityEvent, const FName&);
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FOnRowRemovedEvent, const FName&);
|
|
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FOnGraphChangedVisibilityEvent, const FName&);
|
|
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnGraphAddedEvent, const FName&, const FName&);
|
|
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnGraphDataNameAddedEvent, const FName&, const FName&, const FName&);
|
|
|
|
FNewItemEvent OnNewItem;
|
|
FItemSelectionChangedEvent OnItemSelectionChanged;
|
|
FNewRowEvent OnNewRow;
|
|
FOnRowSelectionChangedEvent OnRowSelectionChanged;
|
|
FOnRowChangedVisibilityEvent OnRowChangedVisibility;
|
|
FOnRowRemovedEvent OnRowRemoved;
|
|
|
|
FOnGraphChangedVisibilityEvent OnGraphChangedVisibilityEvent;
|
|
FOnGraphAddedEvent OnGraphAddedEvent;
|
|
FOnGraphDataNameAddedEvent OnGraphDataNameAddedEvent;
|
|
};
|
|
|
|
struct FVisualLoggerDBRow
|
|
{
|
|
public:
|
|
FVisualLoggerDBRow(FVisualLoggerDBEvents& InEvents, const FName& InOwnerName, const FName& InOwnerClassName) : DBEvents(InEvents), OwnerName(InOwnerName), OwnerClassName(InOwnerClassName), CurrentItemIndex(INDEX_NONE) {}
|
|
|
|
const FName& GetOwnerName() const { return OwnerName; }
|
|
const FName& GetOwnerClassName() const { return OwnerClassName; }
|
|
|
|
void AddItem(const FVisualLogDevice::FVisualLogEntryItem& NewItem);
|
|
const TArray<FVisualLogDevice::FVisualLogEntryItem>& GetItems() const { return Items; }
|
|
|
|
void MoveTo(int32 Index);
|
|
const FVisualLogDevice::FVisualLogEntryItem& GetCurrentItem() const;
|
|
int32 GetCurrentItemIndex() const { return CurrentItemIndex; }
|
|
|
|
void SetItemVisibility(int32 ItemIndex, bool IsVisible);
|
|
bool IsItemVisible(int32 ItemIndex) const { return HiddenItems.Find(ItemIndex) == INDEX_NONE; }
|
|
int32 GetNumberOfHiddenItems() const { return HiddenItems.Num(); }
|
|
|
|
int32 GetClosestItem(float Time) const;
|
|
int32 GetClosestItem(float Time, float ScrubTime) const;
|
|
|
|
protected:
|
|
FVisualLoggerDBEvents& DBEvents;
|
|
FName OwnerName;
|
|
FName OwnerClassName;
|
|
int32 CurrentItemIndex;
|
|
|
|
TArray<FVisualLogDevice::FVisualLogEntryItem> Items;
|
|
TArray<int32> HiddenItems;
|
|
};
|
|
|
|
struct FVisualLoggerDatabase
|
|
{
|
|
typedef TArray<FVisualLoggerDBRow>::TConstIterator FConstRowIterator;
|
|
typedef TArray<FVisualLoggerDBRow>::TIterator FRowIterator;
|
|
|
|
static FVisualLoggerDatabase& Get();
|
|
static void Initialize();
|
|
static void Shutdown();
|
|
|
|
void Reset();
|
|
FVisualLoggerDBEvents& GetEvents() { return DBEvents; }
|
|
|
|
int32 NumberOfRows() { return Rows.Num(); }
|
|
void AddItem(const FVisualLogDevice::FVisualLogEntryItem& NewItem);
|
|
FConstRowIterator GetConstRowIterator() const { return Rows.CreateConstIterator(); }
|
|
FRowIterator GetRowIterator() { return Rows.CreateIterator(); }
|
|
|
|
bool ContainsRowByName(FName InName);
|
|
FVisualLoggerDBRow& GetRowByName(FName InName);
|
|
|
|
void SelectRow(FName InName, bool bDeselectOtherNodes = false);
|
|
void DeselectRow(FName InName);
|
|
bool IsRowSelected(FName InName) const { return SelectedRows.Find(InName) != INDEX_NONE; }
|
|
const TArray<FName>& GetSelectedRows() const;
|
|
|
|
bool IsRowVisible(FName RowName) const { return HiddenRows.Find(RowName) == INDEX_NONE; }
|
|
void SetRowVisibility(FName RowName, bool IsVisible);
|
|
|
|
void RemoveRow(FName RowName);
|
|
|
|
protected:
|
|
TArray<FVisualLoggerDBRow> Rows;
|
|
TMap<FName, int32> RowNameToIndex;
|
|
TArray<FName> SelectedRows;
|
|
TArray<FName> HiddenRows;
|
|
|
|
FVisualLoggerDBEvents DBEvents;
|
|
|
|
private:
|
|
static TSharedPtr< struct FVisualLoggerDatabase > StaticInstance;
|
|
|
|
};
|
|
|
|
struct FVisualLoggerGraphData
|
|
{
|
|
FName DataName;
|
|
TArray<FVector2D> Samples;
|
|
TArray<float> TimeStamps;
|
|
|
|
FVisualLoggerGraphData(FName InDataName) : DataName(InDataName) {}
|
|
};
|
|
|
|
struct FVisualLoggerGraph
|
|
{
|
|
typedef TArray<FVisualLoggerGraphData>::TConstIterator FConstDataIterator;
|
|
typedef TArray<FVisualLoggerGraphData>::TIterator FDataIterator;
|
|
|
|
FVisualLoggerGraph(FName InOwnerName) : OwnerName(InOwnerName) {}
|
|
|
|
FName GetOwnerName() const { return OwnerName; }
|
|
FName GetGraphName() const { return GraphName; }
|
|
void SetGraphName(FName InGraphName) { GraphName = InGraphName; }
|
|
|
|
bool IsDataVisible(FName DataName) const;
|
|
void SetDataVisibility(FName DataName, bool IsVisible);
|
|
|
|
bool ContainsDataByName(FName DataName) const { return DataNameToIndex.Contains(DataName); };
|
|
FVisualLoggerGraphData& FindOrAddDataByName(FName DataName);
|
|
|
|
FConstDataIterator GetConstDataIterator() const { return DataGraphs.CreateConstIterator(); }
|
|
FDataIterator GetDataIterator() { return DataGraphs.CreateIterator(); }
|
|
|
|
protected:
|
|
FName OwnerName;
|
|
FName GraphName;
|
|
TArray<FVisualLoggerGraphData> DataGraphs;
|
|
TMap<FName, int32> DataNameToIndex;
|
|
TArray<FName> HiddenGraphs;
|
|
};
|
|
|
|
struct FVisualLoggerGraphsDatabase //histogram graphs database as separate structure to optimize access and category filters
|
|
{
|
|
protected:
|
|
struct FVisualLoggerGraphHelper
|
|
{
|
|
TArray<FVisualLoggerGraph> AllGraphs;
|
|
TMap<FName, int32> GraphNameToIndex;
|
|
};
|
|
|
|
public:
|
|
typedef TArray<FVisualLoggerGraph>::TConstIterator FConstGraphIterator;
|
|
typedef TArray<FVisualLoggerGraph>::TIterator FGraphIterator;
|
|
|
|
typedef TMap<FName, FVisualLoggerGraphHelper>::TConstIterator FConstOwnersIterator;
|
|
typedef TMap<FName, FVisualLoggerGraphHelper>::TIterator FOwnersIterator;
|
|
|
|
static FVisualLoggerGraphsDatabase& Get();
|
|
static void Initialize();
|
|
static void Shutdown();
|
|
void Reset();
|
|
|
|
void AddItem(const FVisualLogDevice::FVisualLogEntryItem& NewItem);
|
|
|
|
bool IsGraphVisible(FName OwnerName, FName GraphName);
|
|
void SetGraphVisibility(FName OwnerName, FName GraphName, bool IsVisible);
|
|
|
|
bool ContainsGraphByName(FName OwnerName, FName GraphName);
|
|
FVisualLoggerGraph& GetGraphByName(FName OwnerName, FName GraphName);
|
|
bool ContainsHistogramGraphs() const { return OwnerNameToGraphs.Num() > 0; }
|
|
|
|
const TArray<FVisualLoggerGraph>& GetGraphsByOwnerName(FName OwnerName);
|
|
|
|
FConstGraphIterator GetConstGraphsIterator(FName OwnerName) { return OwnerNameToGraphs.FindOrAdd(OwnerName).AllGraphs.CreateConstIterator(); }
|
|
FGraphIterator GetGraphsIterator(FName OwnerName) { return OwnerNameToGraphs.FindOrAdd(OwnerName).AllGraphs.CreateIterator(); }
|
|
|
|
FConstOwnersIterator GetConstOwnersIterator() { return OwnerNameToGraphs.CreateConstIterator(); }
|
|
FOwnersIterator GetOwnersIterator() { return OwnerNameToGraphs.CreateIterator(); }
|
|
|
|
protected:
|
|
TMap<FName, FVisualLoggerGraphHelper> OwnerNameToGraphs;
|
|
TArray<FName> HiddenGraphs; //encoded as "OwnerName$GraphName" for simplicity.
|
|
|
|
private:
|
|
static TSharedPtr< struct FVisualLoggerGraphsDatabase > StaticInstance;
|
|
};
|
|
|
|
struct FVisualLoggerEditorInterface : public IVisualLoggerEditorInterface
|
|
{
|
|
static IVisualLoggerEditorInterface* Get() { static FVisualLoggerEditorInterface EditorInterface; return &EditorInterface; }
|
|
|
|
const FName& GetRowClassName(FName RowName) const override;
|
|
int32 GetSelectedItemIndex(FName RowName) const override;
|
|
const TArray<FVisualLogDevice::FVisualLogEntryItem>& GetRowItems(FName RowName) override;
|
|
const FVisualLogDevice::FVisualLogEntryItem& GetSelectedItem(FName RowName) const override;
|
|
|
|
const TArray<FName>& GetSelectedRows() const override;
|
|
bool IsRowVisible(FName RowName) const override;
|
|
bool IsItemVisible(FName RowName, int32 ItemIndex) const override;
|
|
UWorld* GetWorld() const override;
|
|
AActor* GetHelperActor(UWorld* InWorld = nullptr) const override;
|
|
|
|
bool MatchCategoryFilters(const FString& String, ELogVerbosity::Type Verbosity = ELogVerbosity::All) override;
|
|
};
|