Ulevelleveldirtiedevent broadcast

==============================

UnrealEdSrv.cpp/EditorServer.cpp/UEditorEngine/UUnrealEdEngine is good place to see commands and what things need to be broadcast

  • Also useful for most editor actions (like building map, rebuilding volumes, cooking, replaceactors, etc etc )

  • edact prefixed things are editor actions (e.g. edactCopySelected, edactPasteSelected, etc)

ConvertLightActors/ReplaceActors/ConvertActors

SetPreviewMeshMode/UpdatePreviewMesh/CyclePreviewMesh

CopySelectedActorsToClipboard/PasteSelectedActorsFromClipboard

SyncBrowserToObjects/SyncToContentBrowser/SyncActorLevelsToContentBrowser

FindSelectedActorsInLevelScript

FEditorFileUtils::SaveCurrentLevel/GetDirtyWorldPackages/GetDirtyContentPackages/SaveDirtyPackages/SaveMap

EditorLevelUtils::MakeLevelCurrent( LevelToMakeCurrent );

UEditorLevelUtils::MoveSelectedActorsToLevel()

MoveActorInFrontOfCamera

MoveViewportCamerasToActor

MoveViewportCamerasToComponent

SnapObjectTo

MoveViewportCamerasToBox

GetPIEViewport/GetActiveViewport

SpawnPlayFromHereStart

ParseMapSectionIni/LoadMapListFromIni

PackageUsingExternalObjects

FindReferencesToActorFromLevelScript/ModifyActorReferencedGraphNodes

FindActorsThatReferenceActor/GetActorReferenceMap/ReplaceAllActorRefrences

FBlueprintEditorUtils: Lots of useful blueprint nodes

GetGraphFunctionMetaData/GetEntryNode/GetEntryAndResultNodes/CheckIfGraphHasLatentFunctions

OpenReparentBlueprintMenu

===========================

FSelfRegisteringExec for POD structs to register for console commands

FStringOutputDevice Archive;

const FExportObjectInnerContext Context;

UExporter::ExportToOutputDevice(&Context, Object, NULL, Archive, TEXT("copy"), 0, PPF_Copy | PPF_DebugDump, false);

Archive.Log(TEXT("\r\n\r\n"));

FString ExportedText;

ExportedText = Archive;

========================================

AHUD::HandleBugScreenShot() override for bug screenshots and use bugscreenshotwithhudinfo to screenshot

==================

GetCurrentViewportPlacementTransform

Add Slate Window To Game:

​ FSlateApplication::Get().AddWindow

​ (

​ SNew(SWindow)

​ .ClientSize(FVector2D(400,600))

​ .Title( FText::FromString( Object->GetName() ) )

​ [

​ SNew(SBorder)

​ .BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder"))

[

​ SNew(SVerticalBox)

​ +SVerticalBox::Slot()

​ .FillHeight(1)

​ [

​ DetailsView.ToSharedRef()

​ ]

​ ]

​ ]

​ );

Create Detail View of all properties in an object:

FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");

​ TSharedPtr<IDetailsView> DetailsView = PropertyModule.CreateDetailView(Args);

​ DetailsView->SetIsPropertyVisibleDelegate(FIsPropertyVisible::CreateStatic(&Local::IsPropertyVisible, bShouldShowNonEditable));

​ DetailsView->SetObject(Object);

​ // create Slate property window

​ FSlateApplication::Get().AddWindow

​ (

​ SNew(SWindow)

​ .ClientSize(FVector2D(400,600))

​ .Title( FText::FromString( Object->GetName() ) )

​ [

​ SNew(SBorder)

​ .BorderImage(FEditorStyle::GetBrush("ToolPanel.GroupBorder"))

​ [

​ SNew(SVerticalBox)

​ +SVerticalBox::Slot()

​ .FillHeight(1)

​ [

​ DetailsView.ToSharedRef()

​ ]

​ ]

​ ]

​ \;

================

// HOW TO GET AN IN-DEPTH PERFORMANCE ANALYSIS OF SLATE

//

// Step 1)

// Set WITH_VERY_VERBOSE_SLATE_STATS to 1.

//

// Step 2)

// When running the game (outside of the editor), run these commandline options

// in order and you'll get a large dump of where all the time is going in Slate.

//

// stat group enable slateverbose

// stat group enable slateveryverbose

// stat dumpave -root=stat_slate -num=120 -ms=0