Initial code for radial rendering

This commit is contained in:
2026-05-11 00:13:30 -04:00
parent e669140e2c
commit ff9c045c8e
3 changed files with 133 additions and 9 deletions

View File

@@ -6,8 +6,11 @@
#pragma once
#include "CoreMinimal.h"
#include "Components/Widget.h"
#include "RadialMenu.generated.h"
class SRadialMenu;
USTRUCT(BlueprintType)
struct FRadialMenuItem
@@ -21,7 +24,7 @@ struct FRadialMenuItem
};
UCLASS(BlueprintType)
class URadialMenu : public UObject
class URadialMenuLayout : public UObject
{
GENERATED_BODY()
@@ -36,7 +39,7 @@ public:
int32 RightNum() const { return NumRight; }
UFUNCTION(BlueprintCallable)
const TArray<FRadialMenuItem> GetItems() const { return Items; }
const TArray<FRadialMenuItem> &GetItems() const { return Items; }
private:
@@ -75,3 +78,27 @@ private:
int32 NumRight = 0;
};
UCLASS(BlueprintType, Blueprintable)
class URadialMenuWidget : public UWidget
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void Configure(int32 NItems, float ItemHeight, float InnerRadius, float MinSpoke, float Spread);
UFUNCTION(BlueprintCallable)
URadialMenuLayout* GetLayout() const { return Layout; }
protected:
virtual TSharedRef<SWidget> RebuildWidget() override;
virtual void ReleaseSlateResources(bool bReleaseChildren) override;
private:
UPROPERTY()
TObjectPtr<URadialMenuLayout> Layout;
TSharedPtr<SRadialMenu> MySlateWidget;
};