EM_Task/UnrealEd/Public/EditorComponents.h

131 lines
3.6 KiB
C
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
EditorComponents.h: Scene components used by the editor modes.
=============================================================================*/
#pragma once
#include "CoreMinimal.h"
#include "Engine/EngineTypes.h"
#include "UObject/GCObject.h"
class FPrimitiveDrawInterface;
class FSceneView;
class UMaterial;
class UMaterialInstanceDynamic;
class FGridWidget: public FGCObject
{
public:
FGridWidget();
void DrawNewGrid(const FSceneView* View, FPrimitiveDrawInterface* PDI);
/**
* FGCObject interface: Serializes the widget reference so they dont get garbage collected.
*
* @param Ar FArchive to serialize with
*/
virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
virtual FString GetReferencerName() const override
{
return "FGridWidget";
}
private:
// ALU based
UMaterial* LevelGridMaterial;
UMaterialInstanceDynamic* LevelGridMaterialInst;
// texture based
UMaterial* LevelGridMaterial2;
UMaterialInstanceDynamic* LevelGridMaterialInst2;
};
/**
* Implements some basic functionality used by all editor viewports.
*/
class FEditorCommonDrawHelper
{
public:
UNREALED_API FEditorCommonDrawHelper();
virtual UNREALED_API ~FEditorCommonDrawHelper();
/** Renders the grid, pivot, and base info. */
virtual void UNREALED_API Draw(const FSceneView* View, FPrimitiveDrawInterface* PDI);
/**
* Renders the editor's pivot.
*/
void DrawPivot(const FSceneView* View, FPrimitiveDrawInterface* PDI);
/** Draw green lines to indicate what the selected actor(s) are based on. */
void DrawBaseInfo(const FSceneView* View, FPrimitiveDrawInterface* PDI);
private:
/** Types of axis lines we can draw for orthographic views */
struct EAxisLines
{
enum Type
{
// Major lines
Major,
// Minor lines
Minor,
};
};
/**
* Draws a section(vertical lines or horizontal lines) of a viewport's grid.
*/
static void DrawGridSection(float ViewportGridY, FVector* A, FVector* B, float* AX, float* BX, int32 Axis, const FSceneView* View, FPrimitiveDrawInterface* PDI);
/**
* Draws an origin axis line for the orthographic grid
*/
static void DrawOriginAxisLine(FVector* A, FVector* B, float* AX, float* BX, const FSceneView* View, FPrimitiveDrawInterface* PDI, const FLinearColor& Color);
/** Draws the viewport grid. */
void DrawOldGrid(const FSceneView* View, FPrimitiveDrawInterface* PDI);
public:
uint32 bDrawGrid : 1;
uint32 bDrawPivot : 1;
uint32 bDrawBaseInfo : 1;
uint32 bDrawWorldBox : 1;
uint32 bDrawKillZ : 1;
float AxesLineThickness;
/** Color of the grid on the main axes lines */
FColor GridColorAxis;
/** Color of the grid on major axes lines (every Nth grid step line) */
FColor GridColorMajor;
/** Color of grid lines at each grid interval */
FColor GridColorMinor;
float PerspectiveGridSize;
FColor PivotColor;
float PivotSize;
/** The number of cells to draw. */
int32 NumCells;
FColor BaseBoxColor;
ESceneDepthPriorityGroup DepthPriorityGroup;
float GridDepthBias;
FGridWidget* GridWidget;
};
namespace EditorActorSelectionDefs
{
/** The maximum number of actors we should select before a performance warning message is displayed to the user */
static const int32 MaxActorsToSelectBeforeWarning = 5000;
}; // namespace EditorActorSelectionDefs