Space Plunder
Loading...
Searching...
No Matches
SCircumferenceMarkerWidget.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "Styling/CoreStyle.h"
6#include "Widgets/Accessibility/SlateWidgetAccessibleTypes.h"
7#include "Widgets/DeclarativeSyntaxSupport.h"
8#include "Widgets/SLeafWidget.h"
9#include "SCircumferenceMarkerWidget.generated.h"
10
11class FPaintArgs;
12class FSlateRect;
13class FSlateWindowElementList;
14class FWidgetStyle;
15struct FGeometry;
16struct FSlateBrush;
17
18USTRUCT(BlueprintType)
20{
21 GENERATED_BODY()
22
23 // The angle to place this marker around the circle (in degrees)
24 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(ForceUnits=deg))
25 float PositionAngle = 0.0f;
26
27 // The angle to rotate the marker image (in degrees)
28 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(ForceUnits=deg))
29 float ImageRotationAngle = 0.0f;
30};
31
32class SCircumferenceMarkerWidget : public SLeafWidget
33{
35 : _MarkerBrush(FCoreStyle::Get().GetBrush("Throbber.CircleChunk"))
36 , _Radius(48.0f)
37 {
38 }
40 SLATE_ARGUMENT(const FSlateBrush*, MarkerBrush)
42 SLATE_ARGUMENT(TArray<FCircumferenceMarkerEntry>, MarkerList)
44 SLATE_ATTRIBUTE(float, Radius)
46 SLATE_ATTRIBUTE(FSlateColor, ColorAndOpacity)
47 SLATE_END_ARGS()
48
49public:
50 void Construct(const FArguments& InArgs);
51
53
54 //~SWidget interface
55 virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
56 virtual FVector2D ComputeDesiredSize(float) const override;
57 virtual bool ComputeVolatility() const override { return true; }
58 //~End of SWidget interface
59
60 void SetRadius(float NewRadius);
61 void SetMarkerList(TArray<FCircumferenceMarkerEntry>& NewMarkerList);
62
63private:
64 FSlateRenderTransform GetMarkerRenderTransform(const FCircumferenceMarkerEntry& Marker, const float BaseRadius, const float HUDScale) const;
65
66private:
68 const FSlateBrush* MarkerBrush;
69
71 TArray<FCircumferenceMarkerEntry> MarkerList;
72
74 TAttribute<float> Radius;
75
77 TAttribute<FSlateColor> ColorAndOpacity;
79
81 //@TODO: Make this a 0-1 float alignment instead (e.g., inside/on/outside the radius)?
83};
Definition SCircumferenceMarkerWidget.h:33
TAttribute< float > Radius
Definition SCircumferenceMarkerWidget.h:74
TArray< FCircumferenceMarkerEntry > MarkerList
Definition SCircumferenceMarkerWidget.h:71
const FSlateBrush * MarkerBrush
Definition SCircumferenceMarkerWidget.h:68
SLATE_BEGIN_ARGS(SCircumferenceMarkerWidget)
Definition SCircumferenceMarkerWidget.h:34
bool bColorAndOpacitySet
Definition SCircumferenceMarkerWidget.h:78
uint8 bReticleCornerOutsideSpreadRadius
Definition SCircumferenceMarkerWidget.h:82
TAttribute< FSlateColor > ColorAndOpacity
Definition SCircumferenceMarkerWidget.h:77
Definition SCircumferenceMarkerWidget.h:20