32. Overlay Widget Controller
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AbilitySystemInterface.h"
|
||||
|
||||
#include "GasaCommon.h"
|
||||
|
||||
@ -14,16 +13,3 @@ class GASA_API UGasaAbilitySystemComp : public UAbilitySystemComponent
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
};
|
||||
|
||||
namespace Gasa
|
||||
{
|
||||
inline
|
||||
UGasaAbilitySystemComp* GetAbilitySystem(UObject* Object)
|
||||
{
|
||||
if (Object->Implements<UAbilitySystemInterface>())
|
||||
{
|
||||
return Cast<UGasaAbilitySystemComp>( Cast<IAbilitySystemInterface>(Object)->GetAbilitySystemComponent() );
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
#include "GasaAbilitySystemComponent.h"
|
||||
#include "AbilitySystemInterface.h"
|
||||
|
||||
namespace Gasa
|
||||
{
|
||||
inline
|
||||
UGasaAbilitySystemComp* GetAbilitySystem(UObject* Object)
|
||||
{
|
||||
if (Object->Implements<UAbilitySystemInterface>())
|
||||
{
|
||||
return Cast<UGasaAbilitySystemComp>( Cast<IAbilitySystemInterface>(Object)->GetAbilitySystemComponent() );
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
// This was generated by GasaGen/GasaGen.cpp
|
||||
// Generated by GasaGen/GasaGen_UGasaAttributeSet.cpp
|
||||
#include "GasaAttributeSet.h"
|
||||
#include "GasaAttributeSet_Inlines.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "Net/UnrealNetwork.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
// This was generated by GasaGen/GasaGen.cpp
|
||||
// Generated by GasaGen/GasaGen_UGasaAttributeSet.cpp
|
||||
#pragma once
|
||||
|
||||
#include "AttributeSet.h"
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "GasaAttributeSet.generated.h"
|
||||
|
||||
UCLASS()
|
||||
@ -53,6 +53,7 @@ public:
|
||||
static FProperty* Prop = FindFieldChecked<FProperty>( UGasaAttributeSet::StaticClass(), GET_MEMBER_NAME_CHECKED( UGasaAttributeSet, MaxMana ) );
|
||||
return Prop;
|
||||
}
|
||||
|
||||
FORCEINLINE float GetHealth() const { return Health.GetCurrentValue(); }
|
||||
FORCEINLINE float GetMaxHealth() const { return MaxHealth.GetCurrentValue(); }
|
||||
FORCEINLINE float GetMana() const { return Mana.GetCurrentValue(); }
|
||||
@ -61,38 +62,11 @@ public:
|
||||
|
||||
#pragma region Setters
|
||||
FORCEINLINE void
|
||||
SetHealth( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetHealthAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE void SetMaxHealth( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetMaxHealthAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE void SetMana( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetManaAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE void SetMaxMana( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetMaxManaAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
SetHealth( float NewVal );
|
||||
FORCEINLINE void SetMaxHealth( float NewVal );
|
||||
FORCEINLINE void SetMana( float NewVal );
|
||||
FORCEINLINE void SetMaxMana( float NewVal );
|
||||
|
||||
FORCEINLINE void InitHealth( float NewVal )
|
||||
{
|
||||
Health.SetBaseValue( NewVal );
|
||||
@ -121,11 +95,3 @@ public:
|
||||
GetLifetimeReplicatedProps( TArray<FLifetimeProperty>& OutLifetimeProps ) const override;
|
||||
#pragma endregion UObject
|
||||
};
|
||||
namespace Gasa
|
||||
{
|
||||
inline UGasaAttributeSet const* GetAttributeSet( UAbilitySystemComponent* ASC )
|
||||
{
|
||||
return Cast<UGasaAttributeSet>( ASC->GetAttributeSet( UGasaAttributeSet::StaticClass() ) );
|
||||
}
|
||||
|
||||
}
|
||||
|
51
Project/Source/Gasa/AbilitySystem/GasaAttributeSet_Inlines.h
Normal file
51
Project/Source/Gasa/AbilitySystem/GasaAttributeSet_Inlines.h
Normal file
@ -0,0 +1,51 @@
|
||||
// Generated by GasaGen/GasaGen_UGasaAttributeSet.cpp
|
||||
#pragma once
|
||||
|
||||
#include "GasaAttributeSet.h"
|
||||
#include "AbilitySystemComponent.h"
|
||||
|
||||
FORCEINLINE
|
||||
void UGasaAttributeSet::SetHealth( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetHealthAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE
|
||||
void UGasaAttributeSet::SetMaxHealth( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetMaxHealthAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE
|
||||
void UGasaAttributeSet::SetMana( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetManaAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
FORCEINLINE
|
||||
void UGasaAttributeSet::SetMaxMana( float NewVal )
|
||||
{
|
||||
UAbilitySystemComponent* AbilityComp = GetOwningAbilitySystemComponent();
|
||||
if ( ensure( AbilityComp ) )
|
||||
{
|
||||
AbilityComp->SetNumericAttributeBase( GetMaxManaAttribute(), NewVal );
|
||||
};
|
||||
}
|
||||
|
||||
namespace Gasa
|
||||
{
|
||||
inline UGasaAttributeSet const* GetAttributeSet( UAbilitySystemComponent* ASC )
|
||||
{
|
||||
return Cast<UGasaAttributeSet>( ASC->GetAttributeSet( UGasaAttributeSet::StaticClass() ) );
|
||||
}
|
||||
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
#include "GasaEffectActor.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "AbilitySystemInterface.h"
|
||||
#include "GasaAttributeSet.h"
|
||||
#include "GasaAttributeSet_Inlines.h"
|
||||
#include "Components/SphereComponent.h"
|
||||
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
#include "PlayerCharacter.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "Game/GasaPlayerController.h"
|
||||
#include "UI/GasaHUD.h"
|
||||
#include "UI/WidgetController.h"
|
||||
|
||||
APlayerCharacter::APlayerCharacter()
|
||||
{
|
||||
@ -9,6 +12,7 @@ APlayerCharacter::APlayerCharacter()
|
||||
bAutoAbilitySystem = false;
|
||||
}
|
||||
|
||||
// TODO(Ed): We need to setup Net Slime...
|
||||
void APlayerCharacter::PossessedBy(AController* NewController)
|
||||
{
|
||||
Super::PossessedBy(NewController);
|
||||
@ -20,8 +24,14 @@ void APlayerCharacter::PossessedBy(AController* NewController)
|
||||
Attributes = PS->Attributes;
|
||||
AbilitySystem->InitAbilityActorInfo(PS, this);
|
||||
}
|
||||
|
||||
AGasaPlayerController* PC = GetController<AGasaPlayerController>();
|
||||
AGasaHUD* HUD = PC->GetHUD<AGasaHUD>();
|
||||
FWidgetControllerData Data = { PC, PS, AbilitySystem, Attributes };
|
||||
HUD->InitOverlay(& Data);
|
||||
}
|
||||
|
||||
// TODO(Ed): We need to setup Net Slime...
|
||||
void APlayerCharacter::OnRep_PlayerState()
|
||||
{
|
||||
Super::OnRep_PlayerState();
|
||||
@ -33,4 +43,12 @@ void APlayerCharacter::OnRep_PlayerState()
|
||||
Attributes = PS->Attributes;
|
||||
AbilitySystem->InitAbilityActorInfo(PS, this);
|
||||
}
|
||||
|
||||
if (IsLocallyControlled())
|
||||
{
|
||||
AGasaPlayerController* PC = GetController<AGasaPlayerController>();
|
||||
AGasaHUD* HUD = PC->GetHUD<AGasaHUD>();
|
||||
FWidgetControllerData Data = { PC, PS, AbilitySystem, Attributes };
|
||||
HUD->InitOverlay(& Data);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "GasaPlayerController.h"
|
||||
#include "GasaPlayerController_Inlines.h"
|
||||
|
||||
#include "AbilitySystemComponent.h"
|
||||
#include "Engine/LocalPlayer.h"
|
||||
@ -12,7 +13,6 @@
|
||||
#include "Components/CapsuleComponent.h"
|
||||
#include "GameFramework/SpringArmComponent.h"
|
||||
#include "Kismet/KismetSystemLibrary.h"
|
||||
|
||||
using namespace Gasa;
|
||||
|
||||
AGasaPlayerController::AGasaPlayerController()
|
||||
@ -24,6 +24,8 @@ AGasaPlayerController::AGasaPlayerController()
|
||||
bReplicates = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma region Input
|
||||
void AGasaPlayerController::Move(FInputActionValue const& ActionValue)
|
||||
{
|
||||
@ -31,8 +33,6 @@ void AGasaPlayerController::Move(FInputActionValue const& ActionValue)
|
||||
if (pawn == nullptr )
|
||||
return;
|
||||
|
||||
|
||||
|
||||
// Note(Ed): I did the follow optimization for practice, they are completely unnecessary for this context.
|
||||
#if 0
|
||||
FVector2D AxisV = ActionValue.Get<FVector2D>();
|
||||
@ -77,6 +77,7 @@ void AGasaPlayerController::SpawnDefaultHUD()
|
||||
Super::SpawnDefaultHUD();
|
||||
}
|
||||
|
||||
// TODO(Ed): We need to setup Net Slime...
|
||||
void AGasaPlayerController::OnPossess(APawn* InPawn)
|
||||
{
|
||||
Super::OnPossess(InPawn);
|
||||
|
@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "GasaCommon.h"
|
||||
#include "GasaPlayerState.h"
|
||||
#include "GameFramework/PlayerController.h"
|
||||
|
||||
#include "GasaPlayerController.generated.h"
|
||||
@ -51,10 +50,7 @@ public:
|
||||
|
||||
AGasaPlayerController();
|
||||
|
||||
AGasaPlayerState* GetPlayerState()
|
||||
{
|
||||
return Cast<AGasaPlayerState>( PlayerState );
|
||||
}
|
||||
inline AGasaPlayerState* GetPlayerState();
|
||||
|
||||
#pragma region PlayerController
|
||||
void SpawnDefaultHUD() override;
|
||||
|
8
Project/Source/Gasa/Game/GasaPlayerController_Inlines.h
Normal file
8
Project/Source/Gasa/Game/GasaPlayerController_Inlines.h
Normal file
@ -0,0 +1,8 @@
|
||||
#include "GasaPlayerController.h"
|
||||
#include "GasaPlayerState.h"
|
||||
|
||||
inline
|
||||
AGasaPlayerState* AGasaPlayerController::GetPlayerState()
|
||||
{
|
||||
return Cast<AGasaPlayerState>( PlayerState );
|
||||
}
|
@ -40,6 +40,7 @@ class AGasaGameInstance;
|
||||
class AGasaGameState;
|
||||
class AGasaLevelScriptActor;
|
||||
class AGasaPlayerController;
|
||||
class AGasaPlayerState;
|
||||
|
||||
class UGasaAbilitySystemComp;
|
||||
class UGasaAttributeSet;
|
||||
@ -48,7 +49,11 @@ class UGasaImage;
|
||||
class UGasaOverlay;
|
||||
class UGasaProgressBar;
|
||||
class UGasaSizeBox;
|
||||
class UUI_HostWidget;
|
||||
class UHostWidgetController;
|
||||
class UHUDHostWidget;
|
||||
class UWidgetController;
|
||||
|
||||
struct FWidgetControllerData;
|
||||
#pragma endregion Forwards
|
||||
|
||||
#pragma region Logging
|
||||
|
@ -1,7 +1,8 @@
|
||||
#include "GasaDevOptions.h"
|
||||
|
||||
#include "Actors/CameraMount.h"
|
||||
#include "UI/UI_HostWidget.h"
|
||||
#include "UI/HUDHostWidget.h"
|
||||
#include "UI/HostWidgetController.h"
|
||||
|
||||
using namespace Gasa;
|
||||
|
||||
|
@ -19,7 +19,10 @@ public:
|
||||
TSoftClassPtr<ACameraMount> Template_PlayerCamera;
|
||||
|
||||
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="UI")
|
||||
TSoftClassPtr<UUI_HostWidget> Template_HUD_HostUI;
|
||||
TSoftClassPtr<UHUDHostWidget> Template_HUD_HostUI;
|
||||
|
||||
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="UI")
|
||||
TSoftClassPtr<UHostWidgetController> Template_HostWidgetController;
|
||||
|
||||
UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="Tags")
|
||||
FName Tag_GlobalPPV;
|
||||
|
@ -1,9 +1,10 @@
|
||||
// This was generated by GasaGen/GasaGen.cpp
|
||||
// Generated by GasaGen/GasaGen_DevOptionsCache.cpp
|
||||
#include "GasaDevOptionsCache.h"
|
||||
|
||||
#include "GasaDevOptions.h"
|
||||
#include "Actors/CameraMount.h"
|
||||
#include "UI/UI_HostWidget.h"
|
||||
#include "UI/HUDHostWidget.h"
|
||||
#include "UI/HostWidgetController.h"
|
||||
using namespace Gasa;
|
||||
|
||||
void FGasaDevOptionsCache::CachedDevOptions()
|
||||
@ -11,7 +12,13 @@ void FGasaDevOptionsCache::CachedDevOptions()
|
||||
UGasaDevOptions* DevOpts = GetMutDevOptions();
|
||||
|
||||
Template_PlayerCamera = DevOpts->Template_PlayerCamera.LoadSynchronous();
|
||||
Template_HUD_HostUI = DevOpts->Template_HUD_HostUI.LoadSynchronous();
|
||||
ensureMsgf( Template_PlayerCamera != nullptr, TEXT( "Template_PlayerCamera is null, DO NOT RUN PIE or else you may get a crash if not handled in BP or C++" ) );
|
||||
|
||||
Template_HUD_HostUI = DevOpts->Template_HUD_HostUI.LoadSynchronous();
|
||||
ensureMsgf( Template_HUD_HostUI != nullptr, TEXT( "Template_HUD_HostUI is null, DO NOT RUN PIE or else you may get a crash if not handled in BP or C++" ) );
|
||||
|
||||
Template_HostWidgetController = DevOpts->Template_HostWidgetController.LoadSynchronous();
|
||||
ensureMsgf( Template_HostWidgetController != nullptr, TEXT( "Template_HostWidgetController is null, DO NOT RUN PIE or else you may get a crash if not handled in BP or C++" ) );
|
||||
|
||||
Tag_GlobalPPV = DevOpts->Tag_GlobalPPV;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
// This was generated by GasaGen/GasaGen.cpp
|
||||
// Generated by GasaGen/GasaGen_DevOptionsCache.cpp
|
||||
#pragma once
|
||||
|
||||
#include "GasaDevOptionsCache.generated.h"
|
||||
@ -12,6 +12,8 @@ struct GASA_API FGasaDevOptionsCache
|
||||
UClass* Template_PlayerCamera;
|
||||
UPROPERTY()
|
||||
UClass* Template_HUD_HostUI;
|
||||
UPROPERTY()
|
||||
UClass* Template_HostWidgetController;
|
||||
|
||||
void CachedDevOptions();
|
||||
};
|
||||
|
@ -1,11 +1,21 @@
|
||||
#include "GasaHUD.h"
|
||||
#include "GasaHUD_Inlines.h"
|
||||
|
||||
#include "GasaDevOptions.h"
|
||||
#include "UI_HostWidget.h"
|
||||
#include "HUDHostWidget.h"
|
||||
#include "Blueprint/UserWidget.h"
|
||||
|
||||
using namespace Gasa;
|
||||
|
||||
void AGasaHUD::InitOverlay(FWidgetControllerData const* WidgetControllerData)
|
||||
{
|
||||
HostWidget = CreateWidget<UHUDHostWidget>( GetWorld()
|
||||
, GetDevOptions()->Template_HUD_HostUI.LoadSynchronous() );
|
||||
|
||||
HostWidgetController = NewObject<UHostWidgetController>(this, GetDevOptions()->Template_HostWidgetController.Get());
|
||||
HostWidget->SetWidgetController(HostWidgetController);
|
||||
|
||||
HostWidget->AddToViewport();
|
||||
}
|
||||
|
||||
#pragma region HUD
|
||||
void AGasaHUD::ShowHUD()
|
||||
@ -15,17 +25,8 @@ void AGasaHUD::ShowHUD()
|
||||
#pragma endregion HUD
|
||||
|
||||
#pragma region Actor
|
||||
UE_DISABLE_OPTIMIZATION
|
||||
void AGasaHUD::BeginPlay()
|
||||
{
|
||||
Super::BeginPlay();
|
||||
|
||||
HostWidget = CreateWidget<UUI_HostWidget>( GetWorld()
|
||||
, GetDevOptions()->Template_HUD_HostUI.LoadSynchronous() );
|
||||
HostWidget->AddToViewport();
|
||||
|
||||
bool bHostVis = HostWidget->IsVisible();
|
||||
Log(FString::Printf(TEXT("HostVIs: %s"), *FString::FromInt(bHostVis)));
|
||||
}
|
||||
UE_ENABLE_OPTIMIZATION
|
||||
#pragma endregion Actor
|
||||
|
@ -12,14 +12,20 @@ class GASA_API AGasaHUD : public AHUD
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||
TObjectPtr<UUI_HostWidget> HostWidget;
|
||||
TObjectPtr<UHUDHostWidget> HostWidget;
|
||||
|
||||
// This should only be accessed AFTER InitOverlay is called. Otherwise, it will be null
|
||||
// See references to InitOverlay or docs for lifetime.
|
||||
UPROPERTY(VisibleAnywhere, BlueprintReadWrite)
|
||||
TObjectPtr<UHostWidgetController> HostWidgetController;
|
||||
|
||||
void InitOverlay(FWidgetControllerData const* WidgetControllerData);
|
||||
|
||||
#pragma region HUD
|
||||
void ShowHUD() override;
|
||||
#pragma endregion HUD
|
||||
|
||||
#pragma region Actor
|
||||
void BeginPlay() override;
|
||||
|
||||
#pragma endregion Actor
|
||||
};
|
||||
|
5
Project/Source/Gasa/UI/GasaHUD_Inlines.h
Normal file
5
Project/Source/Gasa/UI/GasaHUD_Inlines.h
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
#include "GasaHUD.h"
|
||||
#include "GasaDevOptions.h"
|
||||
#include "HostWidgetController.h"
|
||||
#include "HUDHostWidget.h"
|
@ -1,8 +1,10 @@
|
||||
#pragma once
|
||||
#include "Blueprint/UserWidget.h"
|
||||
#include "GasaCommon.h"
|
||||
|
||||
#include "GasaUserWidget.generated.h"
|
||||
|
||||
|
||||
UCLASS(Blueprintable)
|
||||
class GASA_API UGasaUserWidget : public UUserWidget
|
||||
{
|
||||
@ -23,12 +25,15 @@ public:
|
||||
TSubclassOf<UGasaUserWidget> LooseParent;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly)
|
||||
TObjectPtr<UObject> WidgetController;
|
||||
TObjectPtr<UWidgetController> WidgetController;
|
||||
|
||||
UGasaUserWidget(FObjectInitializer const& ObjectInitializer);
|
||||
|
||||
template<typename WidgetControllerType>
|
||||
FORCEINLINE WidgetControllerType* GetWidgetController() { return Cast<WidgetControllerType>(WidgetController); }
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void SetWidgetController(UObject* Controller)
|
||||
void SetWidgetController(UWidgetController* Controller)
|
||||
{
|
||||
WidgetController = Controller;
|
||||
OnWidgetControllerSet();
|
||||
|
1
Project/Source/Gasa/UI/HUDHostWidget.cpp
Normal file
1
Project/Source/Gasa/UI/HUDHostWidget.cpp
Normal file
@ -0,0 +1 @@
|
||||
#include "HUDHostWidget.h"
|
@ -2,10 +2,10 @@
|
||||
|
||||
#include "GasaUserWidget.h"
|
||||
|
||||
#include "UI_HostWidget.generated.h"
|
||||
#include "HUDHostWidget.generated.h"
|
||||
|
||||
UCLASS()
|
||||
class GASA_API UUI_HostWidget : public UGasaUserWidget
|
||||
class GASA_API UHUDHostWidget : public UGasaUserWidget
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
1
Project/Source/Gasa/UI/HostWIdgetController.cpp
Normal file
1
Project/Source/Gasa/UI/HostWIdgetController.cpp
Normal file
@ -0,0 +1 @@
|
||||
#include "HostWidgetController.h"
|
12
Project/Source/Gasa/UI/HostWidgetController.h
Normal file
12
Project/Source/Gasa/UI/HostWidgetController.h
Normal file
@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "WidgetController.h"
|
||||
|
||||
#include "HostWidgetController.generated.h"
|
||||
|
||||
UCLASS()
|
||||
class GASA_API UHostWidgetController : public UWidgetController
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
};
|
@ -1 +0,0 @@
|
||||
#include "UI_HostWidget.h"
|
@ -3,17 +3,37 @@
|
||||
#include "GasaCommon.h"
|
||||
#include "WidgetController.generated.h"
|
||||
|
||||
UCLASS(BlueprintType)
|
||||
class GASA_API UWidgetController : public UObject
|
||||
USTRUCT(BlueprintType)
|
||||
struct GASA_API FWidgetControllerData
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
|
||||
FWidgetControllerData() = default;
|
||||
|
||||
FWidgetControllerData(AGasaPlayerController* Controller
|
||||
, AGasaPlayerState* PlayerState
|
||||
, UAbilitySystemComponent* AbilitySystem
|
||||
, UAttributeSet* Attributes )
|
||||
#if 1
|
||||
: Controller(Controller)
|
||||
, PlayerState(PlayerState)
|
||||
, AbilitySystem(AbilitySystem)
|
||||
, Attributes(Attributes)
|
||||
#endif
|
||||
{
|
||||
#if 0
|
||||
this->Controller = Controller;
|
||||
this->PlayerState = PlayerState;
|
||||
this->AbilitySystem = AbilitySystem;
|
||||
this->Attributes = Attributes;
|
||||
#endif
|
||||
}
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
TObjectPtr<AGasaPlayerController> Controller;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
TObjectPtr<APlayerController> Controller;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
TObjectPtr<APlayerState> PlayerState;
|
||||
TObjectPtr<AGasaPlayerState> PlayerState;
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
TObjectPtr<UAbilitySystemComponent> AbilitySystem;
|
||||
@ -21,3 +41,13 @@ public:
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
TObjectPtr<UAttributeSet> Attributes;
|
||||
};
|
||||
|
||||
UCLASS(Blueprintable)
|
||||
class GASA_API UWidgetController : public UObject
|
||||
{
|
||||
GENERATED_BODY()
|
||||
public:
|
||||
|
||||
UPROPERTY(BlueprintReadOnly, Category="Player")
|
||||
FWidgetControllerData Data;
|
||||
};
|
||||
|
Reference in New Issue
Block a user