haxis/Source/UnrealProject/GUI/Menu/MenuSlider.h

61 lines
1.4 KiB
C++

#pragma once
#include "MenuButton.h"
#include "MenuSlider.generated.h"
UCLASS()
class UMenuSliderButton : public UMenuItemBase
{
GENERATED_BODY()
public:
void NativeConstruct() override ;
void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
void UpdateText();
void SetSelected(bool selected);
private:
UFUNCTION()
void m_OnPressed();
void m_EndDrag();
FReply NativeOnMouseButtonUp(const FGeometry& InGeometry, const FPointerEvent& InMouseEvent) override;
friend class UMenuSlider;
class UMenuSlider* m_parent;
UBorder* m_dragBorder;
UButton* m_button;
UTextBlock* m_text;
UCanvasPanel* m_panel;
FVector2D m_dragStart;
float m_dragStartValue;
bool m_dragging;
};
UCLASS()
class UMenuSlider : public UMenuButton
{
GENERATED_BODY()
public:
UMenuSlider(const FObjectInitializer& init);
void NativeConstruct() override;
void NativeOnMenuAction(EMenuActionBinding binding) override;
void NativeOnSelectionChanged(bool selected, bool controller) override;
UFUNCTION(BlueprintCallable, Category="Slider")
void SetValue(float value);
UPROPERTY(BlueprintReadOnly, Category = "Slider")
float value;
UPROPERTY(EditAnywhere, Category = "Slider")
float stepGranularity;
private:
friend class UMenuSliderButton;
class USizeBorder* m_sizeBorder;
class UMenuSliderButton* m_sliderButton;
};