You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
NOTE: Old tutorials not deprecated (yet), but widget highlights in old tutorials will stop working with this change! Added new Blueprintable UEditorTutorial object. Added suite of widgets and details customizations to display tutorials. New system is available on command line switch -NewTutorials. Slate changes: Tag names are now stored in SWidgets, rather than simply being discarded. Removed STutorialWrapper in favour of using Tags. Added Tags to more multibox widgets, so virtually all can now be picked. Added SWindow::HasOverlay so we dont attempt to add overlays to widows that cannot have them. [CL 2244216 by Thomas Sarkanen in Main branch]
113 lines
4.0 KiB
C++
113 lines
4.0 KiB
C++
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "IDocumentation.h"
|
|
#include "IDocumentationPage.h"
|
|
#include "EditorTutorial.h"
|
|
|
|
/**
|
|
* The widget which displays 'floating' content
|
|
*/
|
|
class STutorialContent : public SCompoundWidget
|
|
{
|
|
SLATE_BEGIN_ARGS( STutorialContent )
|
|
{
|
|
_Visibility = EVisibility::SelfHitTestInvisible;
|
|
_IsStandalone = false;
|
|
}
|
|
|
|
/** Alignment of content relative to widget, note "Fill" is not supported */
|
|
SLATE_ATTRIBUTE(EVerticalAlignment, VAlign)
|
|
|
|
/** Alignment of content relative to widget, note "Fill" is not supported */
|
|
SLATE_ATTRIBUTE(EHorizontalAlignment, HAlign)
|
|
|
|
/** Offset form the widget we annotate */
|
|
SLATE_ATTRIBUTE(FVector2D, Offset)
|
|
|
|
/** Whether this a standalone widget (with its own close button) or part of a group of other widgets, paired with tutorial navigation */
|
|
SLATE_ARGUMENT(bool, IsStandalone)
|
|
|
|
/** Delegate fired when the close button is clicked */
|
|
SLATE_ARGUMENT(FSimpleDelegate, OnClosed)
|
|
|
|
/** Where text should be wrapped */
|
|
SLATE_ARGUMENT(float, WrapTextAt)
|
|
|
|
/** Anchor if required */
|
|
SLATE_ARGUMENT(FTutorialContentAnchor, Anchor)
|
|
|
|
SLATE_END_ARGS()
|
|
|
|
void Construct(const FArguments& InArgs, const FTutorialContent& InContent);
|
|
|
|
/** SWidget implementation */
|
|
virtual int32 OnPaint( const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyClippingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled ) const override;
|
|
|
|
/** Helper function to generate widgets from an FTutorialContent struct */
|
|
static TSharedRef<SWidget> GenerateContentWidget(const FTutorialContent& InContent, float WrapTextAt, bool bForWidget, TSharedPtr<IDocumentationPage>& OutDocumentationPage);
|
|
|
|
/** Handle repositioning the widget */
|
|
FVector2D GetPosition() const;
|
|
|
|
/** Handle resizing the widget */
|
|
FVector2D GetSize() const;
|
|
|
|
/** Delegate handler called back from the overlay paint routines to flag whether we should paint as well (i.e. if this widget content is highlighted for the current stage) */
|
|
void HandlePaintNamedWidget(TSharedRef<SWidget> InWidget, const FGeometry& InGeometry);
|
|
|
|
/** Called back from the overlay paint routines to reset the flag we check for painting with */
|
|
void HandleResetNamedWidget();
|
|
|
|
/** Handle caching window size - called back from overlay paint routine */
|
|
void HandleCacheWindowSize(const FVector2D& InWindowSize);
|
|
|
|
private:
|
|
|
|
/** Get the visibility of this content */
|
|
EVisibility GetVisibility() const;
|
|
|
|
/** Handle close button clicked - forward to delegate */
|
|
FReply OnCloseButtonClicked();
|
|
|
|
/** Get close button visibility - varies depending on whether we are standalone or not */
|
|
EVisibility GetCloseButtonVisibility() const;
|
|
|
|
/** Copy of the window size we were last draw at */
|
|
FVector2D CachedWindowSize;
|
|
|
|
/** Copy of the geometry our widget was last drawn with */
|
|
FGeometry CachedGeometry;
|
|
|
|
/** Container for widget content */
|
|
TSharedPtr<SWidget> ContentWidget;
|
|
|
|
/** Alignment of content relative to widget, note "Fill" is not supported */
|
|
TAttribute<EVerticalAlignment> VerticalAlignment;
|
|
|
|
/** Alignment of content relative to widget, note "Fill" is not supported */
|
|
TAttribute<EHorizontalAlignment> HorizontalAlignment;
|
|
|
|
/** Offset form the widget we annotate */
|
|
TAttribute<FVector2D> WidgetOffset;
|
|
|
|
/** Copy of the anchor for this tutorial content */
|
|
FTutorialContentAnchor Anchor;
|
|
|
|
/** Whether this a standalone widget (with its own close button) or part of a group of other widgets, paired with tutorial navigation */
|
|
bool bIsStandalone;
|
|
|
|
/** Whether this overlay is currently visible */
|
|
bool bIsVisible;
|
|
|
|
/** Delegate fired when the close button is clicked */
|
|
FSimpleDelegate OnClosed;
|
|
|
|
/** Animation curves for displaying border */
|
|
FCurveSequence BorderPulseAnimation;
|
|
FCurveSequence BorderIntroAnimation;
|
|
|
|
/** Documentation page reference to use if we are displaying a UDN doc - we need this otherwise the page will be freed */
|
|
TSharedPtr<IDocumentationPage> DocumentationPage;
|
|
}; |