本文整理汇总了C++中FGeometry::GetDrawSize方法的典型用法代码示例。如果您正苦于以下问题:C++ FGeometry::GetDrawSize方法的具体用法?C++ FGeometry::GetDrawSize怎么用?C++ FGeometry::GetDrawSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FGeometry
的用法示例。
在下文中一共展示了FGeometry::GetDrawSize方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetScaleFactor
static FORCEINLINE float GetScaleFactor(const FGeometry& Geometry)
{
const float DesiredWidth = 1024.0f;
float UndoDPIScaling = 1.0f / Geometry.Scale;
return (Geometry.GetDrawSize().GetMax() / DesiredWidth) * UndoDPIScaling;
}
示例2: OnDrawViewport
void FSceneViewport::OnDrawViewport( const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled )
{
// Switch to the viewport clients world before resizing
FScopedConditionalWorldSwitcher WorldSwitcher( ViewportClient );
/** Check to see if the viewport should be resized */
FIntPoint DrawSize = FIntPoint( FMath::RoundToInt( AllottedGeometry.GetDrawSize().X ), FMath::RoundToInt( AllottedGeometry.GetDrawSize().Y ) );
if( GetSizeXY() != DrawSize )
{
TSharedPtr<SWindow> Window = FSlateApplication::Get().FindWidgetWindow( ViewportWidget.Pin().ToSharedRef() );
check(Window.IsValid());
ResizeViewport(FMath::Max(0, DrawSize.X), FMath::Max(0, DrawSize.Y), Window->GetWindowMode(), 0, 0);
}
// Cannot pass negative canvas positions
float CanvasMinX = FMath::Max(0.0f, AllottedGeometry.AbsolutePosition.X);
float CanvasMinY = FMath::Max(0.0f, AllottedGeometry.AbsolutePosition.Y);
FIntRect CanvasRect(
FMath::RoundToInt( CanvasMinX ),
FMath::RoundToInt( CanvasMinY ),
FMath::RoundToInt( CanvasMinX + AllottedGeometry.Size.X * AllottedGeometry.Scale ),
FMath::RoundToInt( CanvasMinY + AllottedGeometry.Size.Y * AllottedGeometry.Scale ) );
DebugCanvasDrawer->BeginRenderingCanvas( CanvasRect );
// Draw above everything else
uint32 MaxLayer = MAX_uint32;
FSlateDrawElement::MakeCustom( OutDrawElements, MAX_uint32, DebugCanvasDrawer );
}
示例3: VerticalMiddleRightOf
FVector2D FGeometryHelper::VerticalMiddleRightOf(const FGeometry& SomeGeometry)
{
const FVector2D GeometryDrawSize = SomeGeometry.GetDrawSize();
return FVector2D(
SomeGeometry.AbsolutePosition.X + GeometryDrawSize.X,
SomeGeometry.AbsolutePosition.Y + GeometryDrawSize.Y/2 );
}
示例4: GetKeyAreaGeometry
FGeometry SSection::GetKeyAreaGeometry( const struct FKeyAreaElement& KeyArea, const FGeometry& SectionGeometry ) const
{
// Get the height of the key area node. If the key area is top level then it is part of the section (and the same height ) and doesn't take up extra space
float KeyAreaHeight = KeyArea.KeyAreaNode.IsTopLevel() ? SectionGeometry.GetDrawSize().Y : KeyArea.KeyAreaNode.GetNodeHeight();
// Compute the geometry for the key area
return SectionGeometry.MakeChild( FVector2D( 0, KeyArea.HeightOffset ), FVector2D( SectionGeometry.Size.X, KeyAreaHeight ) );
}
示例5: ConvertToPoints
void FGeometryHelper::ConvertToPoints(const FGeometry& Geom, TArray<FVector2D>& Points)
{
const FVector2D Size = Geom.GetDrawSize();
const FVector2D Location = Geom.AbsolutePosition;
int32 Index = Points.AddUninitialized(4);
Points[Index++] = Location;
Points[Index++] = Location + FVector2D(0.0f, Size.Y);
Points[Index++] = Location + FVector2D(Size.X, Size.Y);
Points[Index++] = Location + FVector2D(Size.X, 0.0f);
}
示例6: Tick
void SMenuAnchor::Tick( const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime )
{
SPanel::Tick(AllottedGeometry, InCurrentTime, InDeltaTime);
TSharedPtr<SWindow> PopupWindow = PopupWindowPtr.Pin();
if ( PopupWindow.IsValid() && Method == CreateNewWindow )
{
// Figure out where our attached pop-up window should be placed.
const FVector2D PopupContentDesiredSize = PopupWindow->GetContent()->GetDesiredSize();
FGeometry PopupGeometry = ComputeMenuPlacement( AllottedGeometry, PopupContentDesiredSize, Placement.Get( ) );
const FVector2D NewPosition = PopupGeometry.AbsolutePosition;
const FVector2D NewSize = PopupGeometry.GetDrawSize( );
const FSlateRect NewShape = FSlateRect( NewPosition.X, NewPosition.Y, NewPosition.X + NewSize.X, NewPosition.Y + NewSize.Y );
// We made a window for showing the popup.
// Update the window's position!
if( PopupWindow->IsMorphing() )
{
if( NewShape != PopupWindow->GetMorphTargetShape() )
{
// Update the target shape
PopupWindow->UpdateMorphTargetShape( NewShape );
// Set size immediately if not morphing size
if(!PopupWindow->IsMorphingSize())
{
PopupWindow->ReshapeWindow( PopupWindow->GetPositionInScreen(), NewSize );
}
}
}
else
{
const FVector2D WindowPosition = PopupWindow->GetPositionInScreen();
const FVector2D WindowSize = PopupWindow->GetSizeInScreen();
if ( NewPosition != WindowPosition || NewSize != WindowSize )
{
#if PLATFORM_LINUX
// @FIXME: for some reason, popups reshaped here do not trigger OnWindowMoved() callback,
// so we manually set cached position to where we expect it to be. Note the order of operations - (before Reshape) -
// still giving the callback a chance to change it.
// This needs to be investigated (tracked as TTP #347674).
PopupWindow->SetCachedScreenPosition( NewPosition );
#endif // PLATFORM_LINUX
PopupWindow->ReshapeWindow( NewShape );
}
}
}
/** The tick is ending, so the window was not dismissed this tick. */
bDismissedThisTick = false;
}
示例7: OnPinNameMouseDown
FReply SGraphPin::OnPinNameMouseDown( const FGeometry& SenderGeometry, const FPointerEvent& MouseEvent )
{
const float LocalX = SenderGeometry.AbsoluteToLocal( MouseEvent.GetScreenSpacePosition() ).X;
if ((GetDirection() == EGPD_Input) || (LocalX > SenderGeometry.GetDrawSize().X * 0.5f))
{
// Right half of the output pin or all of the input pin, treat it like a connection attempt
return OnPinMouseDown(SenderGeometry, MouseEvent);
}
else
{
return FReply::Unhandled();
}
}
示例8: OnArrangeChildren
void SSequencerSectionAreaView::OnArrangeChildren( const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren ) const
{
int32 MaxRowIndex = 0;
for( int32 WidgetIndex = 0; WidgetIndex < Children.Num(); ++WidgetIndex )
{
const TSharedRef<SSection>& Widget = Children[WidgetIndex];
TSharedPtr<ISequencerSection> SectionInterface = Widget->GetSectionInterface();
MaxRowIndex = FMath::Max(MaxRowIndex, SectionInterface->GetSectionObject()->GetRowIndex());
}
int32 MaxTracks = MaxRowIndex + 1;
float SectionHeight = GetSectionAreaHeight();
FTimeToPixel TimeToPixelConverter = GetTimeToPixel( AllottedGeometry );
for( int32 WidgetIndex = 0; WidgetIndex < Children.Num(); ++WidgetIndex )
{
const TSharedRef<SSection>& Widget = Children[WidgetIndex];
TSharedPtr<ISequencerSection> SectionInterface = Widget->GetSectionInterface();
int32 RowIndex = SectionInterface->GetSectionObject()->GetRowIndex();
FGeometry SectionGeometry = SequencerSectionUtils::GetSectionGeometry( AllottedGeometry, RowIndex, MaxTracks, SectionHeight, SectionInterface, TimeToPixelConverter );
EVisibility Visibility = Widget->GetVisibility();
if( ArrangedChildren.Accepts( Visibility ) )
{
Widget->CacheParentGeometry(AllottedGeometry);
ArrangedChildren.AddWidget(
Visibility,
AllottedGeometry.MakeChild( Widget, SectionGeometry.Position, SectionGeometry.GetDrawSize() )
);
}
}
}
示例9: GetHeight
float FKeyAreaLayoutElement::GetHeight(const FGeometry& InParentGeometry) const
{
return Height.IsSet() ? Height.GetValue() : InParentGeometry.GetDrawSize().Y;
}
示例10: OnArrangeChildren
void SAnimationOutlinerView::OnArrangeChildren( const FGeometry& AllottedGeometry, FArrangedChildren& ArrangedChildren ) const
{
const float Padding = SequencerLayoutConstants::NodePadding;
const float IndentAmount = SequencerLayoutConstants::IndentAmount;
float CurrentHeight = 0;
for (int32 WidgetIndex = 0; WidgetIndex < Children.Num(); ++WidgetIndex)
{
const TSharedRef<SAnimationOutlinerTreeNode>& Widget = Children[WidgetIndex];
EVisibility Visibility = Widget->GetVisibility();
if( ArrangedChildren.Accepts( Visibility ) )
{
const TSharedPtr<const FSequencerDisplayNode>& DisplayNode = Widget->GetDisplayNode();
// How large to make this node
float HeightIncrement = DisplayNode->GetNodeHeight();
// How far to indent the widget
float WidgetIndentOffset = IndentAmount*DisplayNode->GetTreeLevel();
// Place the widget at the current height, at the nodes desired size
ArrangedChildren.AddWidget(
Visibility,
AllottedGeometry.MakeChild( Widget, FVector2D( WidgetIndentOffset, CurrentHeight ), FVector2D( AllottedGeometry.GetDrawSize().X-WidgetIndentOffset, HeightIncrement ) )
);
// Compute the start height for the next widget
CurrentHeight += HeightIncrement+Padding;
}
}
}
示例11: UpdateDropAreaPreviewBlock
void SMultiBoxWidget::UpdateDropAreaPreviewBlock( TSharedRef<const FMultiBlock> MultiBlock, TSharedPtr<FUICommandDragDropOp> DragDropContent, const FGeometry& DragAreaGeometry, const FVector2D& DragPos )
{
TSharedPtr<const FUICommandInfo> UICommand = DragDropContent->UICommand;
FName OriginMultiBox = DragDropContent->OriginMultiBox;
FVector2D LocalDragPos = DragAreaGeometry.AbsoluteToLocal( DragPos );
FVector2D DrawSize = DragAreaGeometry.GetDrawSize();
bool bAddedNewBlock = false;
bool bValidCommand = true;
if( DragPreview.UICommand != UICommand )
{
TSharedPtr<const FMultiBlock> ExistingBlock = MultiBox->FindBlockFromCommand( UICommand );
// Check that the command does not already exist and that we can create it or that we are dragging an exisiting block in this box
if( !ExistingBlock.IsValid() || ( ExistingBlock.IsValid() && OriginMultiBox == MultiBox->GetCustomizationName() ) )
{
TSharedPtr<const FMultiBlock> NewBlock = ExistingBlock;
if( !ExistingBlock.IsValid() )
{
NewBlock = MultiBox->MakeMultiBlockFromCommand( UICommand, true );
}
if( NewBlock.IsValid() )
{
DragPreview.Reset();
DragPreview.UICommand = UICommand;
DragPreview.PreviewBlock =
MakeShareable(
new FDropPreviewBlock(
NewBlock.ToSharedRef(),
NewBlock->MakeWidget( SharedThis(this), EMultiBlockLocation::None, NewBlock->HasIcon() ) )
);
bAddedNewBlock = true;
}
}
else
{
// this command cannot be dropped here
bValidCommand = false;
}
}
if( bValidCommand )
{
// determine whether or not to insert before or after
bool bInsertBefore = false;
if( MultiBox->GetType() == EMultiBoxType::ToolBar )
{
DragPreview.InsertOrientation = EOrientation::Orient_Horizontal;
if( LocalDragPos.X < DrawSize.X / 2 )
{
// Insert before horizontally
bInsertBefore = true;
}
else
{
// Insert after horizontally
bInsertBefore = false;
}
}
else
{
DragPreview.InsertOrientation = EOrientation::Orient_Vertical;
if( LocalDragPos.Y < DrawSize.Y / 2 )
{
// Insert before vertically
bInsertBefore = true;
}
else
{
// Insert after vertically
bInsertBefore = false;
}
}
int32 CurrentIndex = DragPreview.InsertIndex;
DragPreview.InsertIndex = INDEX_NONE;
// Find the index of the multiblock being dragged over. This is where we will insert the new block
if( DragPreview.PreviewBlock.IsValid() )
{
const TArray< TSharedRef< const FMultiBlock > >& Blocks = MultiBox->GetBlocks();
for (int32 BlockIdx = 0; BlockIdx < Blocks.Num(); ++BlockIdx)
{
TSharedRef<const FMultiBlock> Block = Blocks[BlockIdx];
if( Block == MultiBlock )
{
if( bInsertBefore)
{
DragPreview.InsertIndex = BlockIdx;
}
else
{
//.........这里部分代码省略.........
示例12: OnPaint
int32 STrack::OnPaint( const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const
{
int32 CustomLayerId = LayerId + 1;
FPaintGeometry MyGeometry = AllottedGeometry.ToPaintGeometry();
// Background
FSlateDrawElement::MakeBox(
OutDrawElements,
CustomLayerId++,
MyGeometry,
FEditorStyle::GetBrush(TEXT( "Persona.NotifyEditor.NotifyTrackBackground" )),
MyClippingRect,
ESlateDrawEffect::None,
TrackColor.Get()
);
// Draw Scrub Position
if ( ScrubPosition.Get() >= 0.f )
{
float XPos = DataToLocalX(ScrubPosition.Get(), AllottedGeometry);
TArray<FVector2D> LinePoints;
LinePoints.Add(FVector2D(XPos, 0.f));
LinePoints.Add(FVector2D(XPos, AllottedGeometry.Size.Y));
FSlateDrawElement::MakeLines(
OutDrawElements,
CustomLayerId++,
MyGeometry,
LinePoints,
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor(1, 0, 0)
);
}
// Draggable Bars
for ( int32 I=0; DraggableBars.IsBound() && I < DraggableBars.Get().Num(); I++ )
{
// Draw lines
float XPos = DataToLocalX(DraggableBars.Get()[I], AllottedGeometry);
TArray<FVector2D> LinePoints;
LinePoints.Add(FVector2D(XPos, 0.f));
LinePoints.Add(FVector2D(XPos, AllottedGeometry.Size.Y));
FSlateDrawElement::MakeLines(
OutDrawElements,
CustomLayerId,
MyGeometry,
LinePoints,
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor(0.0f, 1.0f, 0.0f, 1.0f)
);
// Draw Labels
if (DraggableBarLabels.IsBound() && DraggableBarLabels.Get().IsValidIndex(I))
{
//float EndPos = (DraggableBarIndex.Get().IsValidIndex(I+1) ? DraggableBarIndex.Get()(I+1)
FPaintGeometry TextGeometry = AllottedGeometry.ToPaintGeometry( FVector2D(XPos + 5.f, 5.f), AllottedGeometry.GetDrawSize() );
FSlateDrawElement::MakeText(
OutDrawElements,
CustomLayerId,
TextGeometry,
DraggableBarLabels.Get()[I],
Font,
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor::Black
);
}
}
// Ghost snap position
float SnapPos = 0.f;
if ( GetDraggableBarSnapPosition(AllottedGeometry, SnapPos) )
{
SnapPos = DataToLocalX(SnapPos, AllottedGeometry);
TArray<FVector2D> LinePoints;
LinePoints.Add(FVector2D(SnapPos, 0.f));
LinePoints.Add(FVector2D(SnapPos, AllottedGeometry.Size.Y));
FSlateDrawElement::MakeLines(
OutDrawElements,
CustomLayerId,
MyGeometry,
LinePoints,
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor(0.5f, 0.0f, 0.0f, 0.5f)
);
}
CustomLayerId++;
// draw line for every 1/4 length
if ( TrackMaxValue.Get() > 0.f && TrackNumDiscreteValues.Get() > 0 )
{
int32 Divider = SScrubWidget::GetDivider( ViewInputMin.Get(), ViewInputMax.Get(), AllottedGeometry.Size, TrackMaxValue.Get(), TrackNumDiscreteValues.Get());
//.........这里部分代码省略.........
示例13: GetKeyUnderMouse
FSelectedKey SSection::GetKeyUnderMouse( const FVector2D& MousePosition, const FGeometry& AllottedGeometry ) const
{
UMovieSceneSection& Section = *SectionInterface->GetSectionObject();
// Search every key area until we find the one under the mouse
for( int32 KeyAreaIndex = 0; KeyAreaIndex < KeyAreas.Num(); ++KeyAreaIndex )
{
const FKeyAreaElement& Element = KeyAreas[KeyAreaIndex];
TSharedRef<IKeyArea> KeyArea = Element.KeyAreaNode.GetKeyArea( SectionIndex );
// Compute the current key area geometry
FGeometry KeyAreaGeometryPadded = GetKeyAreaGeometry( Element, AllottedGeometry );
// Is the key area under the mouse
if( KeyAreaGeometryPadded.IsUnderLocation( MousePosition ) )
{
FGeometry SectionGeometry = AllottedGeometry.MakeChild(FVector2D(SequencerSectionConstants::SectionGripSize, 0), AllottedGeometry.GetDrawSize() - FVector2D(SequencerSectionConstants::SectionGripSize*2, 0.0f));
FGeometry KeyAreaGeometry = GetKeyAreaGeometry( Element, SectionGeometry );
FVector2D LocalSpaceMousePosition = KeyAreaGeometry.AbsoluteToLocal( MousePosition );
FTimeToPixel TimeToPixelConverter = Section.IsInfinite() ?
FTimeToPixel( ParentGeometry, GetSequencer().GetViewRange()) :
FTimeToPixel( KeyAreaGeometry, TRange<float>( Section.GetStartTime(), Section.GetEndTime() ) );
// Check each key until we find one under the mouse (if any)
TArray<FKeyHandle> KeyHandles = KeyArea->GetUnsortedKeyHandles();
for( int32 KeyIndex = 0; KeyIndex < KeyHandles.Num(); ++KeyIndex )
{
FKeyHandle KeyHandle = KeyHandles[KeyIndex];
float KeyPosition = TimeToPixelConverter.TimeToPixel( KeyArea->GetKeyTime(KeyHandle) );
FGeometry KeyGeometry = KeyAreaGeometry.MakeChild(
FVector2D( KeyPosition - FMath::TruncToFloat(SequencerSectionConstants::KeySize.X/2.0f), ((KeyAreaGeometry.Size.Y*.5f)-(SequencerSectionConstants::KeySize.Y*.5f)) ),
SequencerSectionConstants::KeySize );
if( KeyGeometry.IsUnderLocation( MousePosition ) )
{
// The current key is under the mouse
return FSelectedKey( Section, KeyArea, KeyHandle );
}
}
// no key was selected in the current key area but the mouse is in the key area so it cannot possibly be in any other key area
return FSelectedKey();
}
}
// No key was selected in any key area
return FSelectedKey();
}
示例14: DrawSectionBorders
void SSection::DrawSectionBorders( const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId ) const
{
UMovieSceneSection* SectionObject = SectionInterface->GetSectionObject();
FSequencerSelection& Selection = ParentSectionArea->GetSequencer().GetSelection();
const bool bSelected = Selection.IsSelected(SectionObject);
const bool bActive = Selection.GetActiveSelection() == FSequencerSelection::EActiveSelection::KeyAndSection;
static const FName SelectionColorName("SelectionColor");
static const FName SelectionInactiveColorName("SelectionColorInactive");
FLinearColor SelectionColor = FEditorStyle::GetSlateColor(SelectionColorName).GetColor(FWidgetStyle());
FLinearColor SelectionInactiveColor = FEditorStyle::GetSlateColor(SelectionInactiveColorName).GetColor(FWidgetStyle());
FLinearColor TransparentSelectionColor = SelectionColor;
static const FName SectionGripLeftName("Sequencer.SectionGripLeft");
static const FName SectionGripRightName("Sequencer.SectionGripRight");
// Left Grip
FSlateDrawElement::MakeBox(
OutDrawElements,
LayerId,
// Center the key along Y. Ensure the middle of the key is at the actual key time
AllottedGeometry.ToPaintGeometry( FVector2D( 0.0f, 0.0f ), FVector2D( SequencerSectionConstants::SectionGripSize, AllottedGeometry.GetDrawSize().Y) ) ,
FEditorStyle::GetBrush(SectionGripLeftName),
MyClippingRect,
ESlateDrawEffect::None,
(bLeftEdgePressed || bLeftEdgeHovered) ? TransparentSelectionColor : FLinearColor::White
);
// Right Grip
FSlateDrawElement::MakeBox(
OutDrawElements,
LayerId,
// Center the key along Y. Ensure the middle of the key is at the actual key time
AllottedGeometry.ToPaintGeometry( FVector2D( AllottedGeometry.Size.X-SequencerSectionConstants::SectionGripSize, 0.0f), FVector2D(SequencerSectionConstants::SectionGripSize, AllottedGeometry.GetDrawSize().Y)),
FEditorStyle::GetBrush(SectionGripRightName),
MyClippingRect,
ESlateDrawEffect::None,
(bRightEdgePressed || bRightEdgeHovered) ? TransparentSelectionColor : FLinearColor::White
);
// draw selection box
if(bSelected)
{
static const FName SelectionBorder("Sequencer.Section.SelectionBorder");
FSlateDrawElement::MakeBox(
OutDrawElements,
LayerId+1,
AllottedGeometry.ToPaintGeometry(),
FEditorStyle::GetBrush(SelectionBorder),
MyClippingRect,
ESlateDrawEffect::None,
bActive ? SelectionColor : SelectionInactiveColor
);
}
}
示例15: OnPaint
int32 SSection::OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const
{
int32 StartLayer = SCompoundWidget::OnPaint( Args, AllottedGeometry, MyClippingRect, OutDrawElements, LayerId, InWidgetStyle, bParentEnabled );
FGeometry SectionGeometry = AllottedGeometry.MakeChild( FVector2D( SequencerSectionConstants::SectionGripSize, 0 ), AllottedGeometry.GetDrawSize() - FVector2D( SequencerSectionConstants::SectionGripSize*2, 0.0f ) );
FSlateRect SectionClipRect = SectionGeometry.GetClippingRect().IntersectionWith( MyClippingRect );
// Ask the interface to draw the section
int32 PostSectionLayer = SectionInterface->OnPaintSection( SectionGeometry, SectionClipRect, OutDrawElements, LayerId, bParentEnabled );
DrawSectionBorders(AllottedGeometry, MyClippingRect, OutDrawElements, PostSectionLayer );
PaintKeys( SectionGeometry, MyClippingRect, OutDrawElements, PostSectionLayer, InWidgetStyle );
// Section name with drop shadow
FText SectionTitle = SectionInterface->GetSectionTitle();
if (!SectionTitle.IsEmpty())
{
FSlateDrawElement::MakeText(
OutDrawElements,
PostSectionLayer+1,
SectionGeometry.ToOffsetPaintGeometry(FVector2D(6, 6)),
SectionTitle,
FEditorStyle::GetFontStyle("NormalFont"),
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor::Black
);
FSlateDrawElement::MakeText(
OutDrawElements,
PostSectionLayer+2,
SectionGeometry.ToOffsetPaintGeometry(FVector2D(5, 5)),
SectionTitle,
FEditorStyle::GetFontStyle("NormalFont"),
MyClippingRect,
ESlateDrawEffect::None,
FLinearColor::White
);
}
return LayerId;
}