Create custom button widget
This commit is contained in:
parent
c50d32c3bd
commit
784a373c33
BIN
Content/Widgets/BP_CustomButton.uasset
(Stored with Git LFS)
Normal file
BIN
Content/Widgets/BP_CustomButton.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
16
Source/vampires/DetectGamepad.h
Normal file
16
Source/vampires/DetectGamepad.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// Louis Hobbs | 2024-2025
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Kismet/BlueprintFunctionLibrary.h"
|
||||||
|
#include "DetectGamepad.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class VAMPIRES_API UDetectGamepad : public UBlueprintFunctionLibrary
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
};
|
52
Source/vampires/Widgets/CustomButton.cpp
Normal file
52
Source/vampires/Widgets/CustomButton.cpp
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Louis Hobbs | 2024-2025
|
||||||
|
|
||||||
|
|
||||||
|
#include "CustomButton.h"
|
||||||
|
|
||||||
|
#include "Components/Button.h"
|
||||||
|
#include "Components/TextBlock.h"
|
||||||
|
|
||||||
|
void UCustomButton::NativeConstruct()
|
||||||
|
{
|
||||||
|
Super::NativeConstruct();
|
||||||
|
|
||||||
|
ButtonBody->OnClicked.AddUniqueDynamic(this, &UCustomButton::OnButtonClicked);
|
||||||
|
ButtonBody->OnPressed.AddUniqueDynamic(this, &UCustomButton::OnButtonPressed);
|
||||||
|
ButtonBody->OnReleased.AddUniqueDynamic(this, &UCustomButton::OnButtonReleased);
|
||||||
|
ButtonBody->OnHovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
|
||||||
|
ButtonBody->OnUnhovered.AddUniqueDynamic(this, &UCustomButton::OnButtonHovered);
|
||||||
|
|
||||||
|
TextBlock->SetText(ButtonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCustomButton::SynchronizeProperties()
|
||||||
|
{
|
||||||
|
Super::SynchronizeProperties();
|
||||||
|
|
||||||
|
TextBlock->SetText(ButtonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
TObjectPtr<UTextBlock> UCustomButton::GetTextBlock()
|
||||||
|
{
|
||||||
|
return TextBlock;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCustomButton::OnButtonClicked()
|
||||||
|
{
|
||||||
|
OnClicked.Broadcast();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCustomButton::OnButtonPressed()
|
||||||
|
{
|
||||||
|
OnPressed.Broadcast();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCustomButton::OnButtonReleased()
|
||||||
|
{
|
||||||
|
OnReleased.Broadcast();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UCustomButton::OnButtonHovered()
|
||||||
|
{
|
||||||
|
OnHovered.Broadcast();
|
||||||
|
}
|
71
Source/vampires/Widgets/CustomButton.h
Normal file
71
Source/vampires/Widgets/CustomButton.h
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// Louis Hobbs | 2024-2025
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "CustomButton.generated.h"
|
||||||
|
|
||||||
|
class UTextBlock;
|
||||||
|
class UButton;
|
||||||
|
|
||||||
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonClickedEventCustom);
|
||||||
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonPressedEventCustom);
|
||||||
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonReleasedEventCustom);
|
||||||
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnButtonHoverEventCustom);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class VAMPIRES_API UCustomButton : public UUserWidget
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintAssignable)
|
||||||
|
FOnButtonClickedEventCustom OnClicked;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintAssignable)
|
||||||
|
FOnButtonPressedEventCustom OnPressed;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintAssignable)
|
||||||
|
FOnButtonReleasedEventCustom OnReleased;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintAssignable)
|
||||||
|
FOnButtonHoverEventCustom OnHovered;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly)
|
||||||
|
FText ButtonText = FText::FromString("Default");
|
||||||
|
|
||||||
|
private:
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
TObjectPtr<UButton> ButtonBody;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
TObjectPtr<UTextBlock> TextBlock;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual void NativeConstruct() override;
|
||||||
|
|
||||||
|
virtual void SynchronizeProperties() override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
TObjectPtr<UTextBlock> GetTextBlock();
|
||||||
|
|
||||||
|
private:
|
||||||
|
UFUNCTION()
|
||||||
|
void OnButtonClicked();
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void OnButtonPressed();
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void OnButtonReleased();
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void OnButtonHovered();
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user