various bug fixes

This commit is contained in:
Arnaud Jamin
2023-10-12 16:16:45 -04:00
parent 9be50bf331
commit 762167e3c2
27 changed files with 95 additions and 53 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -252,6 +252,13 @@ void UCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
//--------------------------------------------------------------------------------------------------------------------------
void UCogAbilityWindow_Abilities::RenderAbilityCooldown(const UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility& Ability)
{
FGameplayAbilitySpec* Spec = Ability.GetCurrentAbilitySpec();
if (Spec == nullptr)
{
return;
}
float RemainingTime, CooldownDuration;
Ability.GetCooldownTimeRemainingAndDuration(Ability.GetCurrentAbilitySpec()->Handle, AbilitySystemComponent.AbilityActorInfo.Get(), RemainingTime, CooldownDuration);
@@ -268,7 +268,7 @@ void UCogAbilityWindow_Cheats::RequestCheat(AActor* ControlledActor, AActor* Sel
if (ICogCommonAllegianceActorInterface* AllegianceInterface = Cast<ICogCommonAllegianceActorInterface>(OtherActor))
{
AllegianceInterface->GetAllegianceWithOtherActor(ControlledActor);
Allegiance = AllegianceInterface->GetAllegianceWithOtherActor(ControlledActor);
}
if ((IsShiftDown && (Allegiance == ECogCommonAllegiance::Enemy))
@@ -83,8 +83,6 @@ void FCogDebugMetricValue::UpdateMetricPerSecond(const float Duration)
PerSecond = Duration > 1.0f ? Total / Duration : Total;
}
//--------------------------------------------------------------------------------------------------------------------------
//
//--------------------------------------------------------------------------------------------------------------------------
void FCogDebugMetricEntry::Reset()
{
@@ -2,6 +2,7 @@
#include "CogDebugMetric.h"
#include "CogImguiHelper.h"
#include "CogWindowWidgets.h"
#include "imgui.h"
//--------------------------------------------------------------------------------------------------------------------------
@@ -81,29 +82,32 @@ void UCogEngineWindow_Metrics::RenderContent()
ImGui::EndMenuBar();
}
if (GetWorld()->GetNetMode() == ENetMode::NM_Client)
{
ImGui::Text("Currently not available on client");
return;
}
if (FCogDebugMetric::Metrics.IsEmpty())
{
ImGui::BeginDisabled();
ImGui::Text("No metric received yet");
ImGui::EndDisabled();
return;
}
else
int32 Index = 0;
for (auto& Entry : FCogDebugMetric::Metrics)
{
int32 Index = 0;
for (auto& Entry : FCogDebugMetric::Metrics)
FName MetricName = Entry.Key;
FCogDebugMetricEntry& Metric = Entry.Value;
if (ImGui::CollapsingHeader(TCHAR_TO_ANSI(*MetricName.ToString()), ImGuiTreeNodeFlags_DefaultOpen))
{
FName MetricName = Entry.Key;
FCogDebugMetricEntry& Metric = Entry.Value;
if (ImGui::CollapsingHeader(TCHAR_TO_ANSI(*MetricName.ToString()), ImGuiTreeNodeFlags_DefaultOpen))
{
ImGui::PushID(Index);
DrawMetric(Metric);
ImGui::PopID();
}
Index++;
ImGui::PushID(Index);
DrawMetric(Metric);
ImGui::PopID();
}
Index++;
}
}
@@ -293,6 +293,10 @@ void UCogInputWindow_Gamepad::RenderContent()
ImGui::Dummy(bShowAsOverlay ? CanvasMax - CanvasMin : ContentSize);
if (ImGui::BeginPopupContextItem())
{
if (ImGui::Button("Close", ImVec2(-1.0f, 0)))
{
SetIsVisible(false);
}
ImGui::Checkbox("Overlay", &bShowAsOverlay);
ImGui::Separator();
ImGui::Checkbox("Invert Left Stick Y", &bInvertLeftStickY);
@@ -36,7 +36,6 @@ private:
UPROPERTY(Config)
float RepeatPeriod = 0.5f;
UPROPERTY(Config)
float RepeatTime = 0.0f;
UPROPERTY()
@@ -69,6 +69,9 @@ private:
UPROPERTY(Config)
float Border = 0.02f;
UPROPERTY(Config)
float RepeatPeriod = 0.5f;
UPROPERTY()
TWeakObjectPtr<const UCogInputDataAsset> Asset;
@@ -78,8 +81,6 @@ private:
ImDrawList* DrawList = nullptr;
float RepeatPeriod = 0.5f;
float RepeatTime = 0.0f;
ImVec2 CanvasMin;
@@ -78,11 +78,11 @@ protected:
ULocalPlayer* GetLocalPlayer();
protected:
UPROPERTY(Config)
bool bHasMenu = false;
private:
bool bIsVisible = false;
bool bShowInsideMenu = true;
+46 -28
View File
@@ -80,6 +80,9 @@ void ACogSampleCharacter::GetLifetimeReplicatedProps(TArray< FLifetimeProperty >
DOREPLIFETIME_WITH_PARAMS_FAST(ACogSampleCharacter, ActiveAbilityHandles, Params);
DOREPLIFETIME_WITH_PARAMS_FAST(ACogSampleCharacter, Team, Params);
Params.Condition = COND_None;
DOREPLIFETIME_WITH_PARAMS_FAST(ACogSampleCharacter, Scale, Params);
}
@@ -117,7 +120,8 @@ void ACogSampleCharacter::EndPlay(const EEndPlayReason::Type EndPlayReason)
void ACogSampleCharacter::MarkComponentsAsPendingKill()
{
Super::MarkComponentsAsPendingKill();
ShutdownAbilitySystem();
UnregisterFromAbilitySystemEvents();
}
//--------------------------------------------------------------------------------------------------------------------------
@@ -262,6 +266,16 @@ void ACogSampleCharacter::InitializeAbilitySystem()
MARK_PROPERTY_DIRTY_FROM_NAME(ACogSampleCharacter, ActiveAbilityHandles, this);
}
bIsAbilitySystemInitialized = true;
AbilitySystem->AddLooseGameplayTags(InitialTags);
TryFinishInitialize();
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::RegisterToAbilitySystemEvents()
{
//----------------------------------------
// Register to Tag change events
//----------------------------------------
@@ -280,32 +294,10 @@ void ACogSampleCharacter::InitializeAbilitySystem()
//----------------------------------------
GameplayEffectAddedHandle = AbilitySystem->OnActiveGameplayEffectAddedDelegateToSelf.AddUObject(this, &ACogSampleCharacter::OnGameplayEffectAdded);
GameplayEffectRemovedHandle = AbilitySystem->OnAnyGameplayEffectRemovedDelegate().AddUObject(this, &ACogSampleCharacter::OnGameplayEffectRemoved);
bIsAbilitySystemInitialized = true;
TryFinishInitialize();
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::TryFinishInitialize()
{
if (bIsInitialized)
{
return;
}
if (HasActorBegunPlay() == false)
{
return;
}
bIsInitialized = true;
OnInitialized.Broadcast(this);
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::ShutdownAbilitySystem()
void ACogSampleCharacter::UnregisterFromAbilitySystemEvents()
{
//----------------------------------------
// Unregister to Attribute events
@@ -325,11 +317,29 @@ void ACogSampleCharacter::ShutdownAbilitySystem()
//----------------------------------------
AbilitySystem->OnActiveGameplayEffectAddedDelegateToSelf.Remove(GameplayEffectAddedHandle);
AbilitySystem->OnAnyGameplayEffectRemovedDelegate().Remove(GameplayEffectRemovedHandle);
AbilitySystem->ClearActorInfo();
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::TryFinishInitialize()
{
if (bIsInitialized)
{
return;
}
if (HasActorBegunPlay() == false)
{
return;
}
RegisterToAbilitySystemEvents();
bIsInitialized = true;
OnInitialized.Broadcast(this);
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
{
@@ -615,7 +625,15 @@ void ACogSampleCharacter::OnGhostTagNewOrRemoved(const FGameplayTag InTag, int32
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::OnScaleAttributeChanged(const FOnAttributeChangeData& Data)
{
SetActorScale3D(FVector(Data.NewValue));
Scale = Data.NewValue;
MARK_PROPERTY_DIRTY_FROM_NAME(ACogSampleCharacter, Scale, this);
OnRep_Scale();
}
//--------------------------------------------------------------------------------------------------------------------------
void ACogSampleCharacter::OnRep_Scale()
{
SetActorScale3D(FVector(Scale));
}
//--------------------------------------------------------------------------------------------------------------------------
+12 -1
View File
@@ -205,6 +205,9 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Ability)
TArray<TSubclassOf<UGameplayEffect>> Effects;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Ability)
FGameplayTagContainer InitialTags;
UPROPERTY(BlueprintAssignable)
FCogSampleCharacterEventDelegate OnInitialized;
@@ -261,7 +264,9 @@ private:
void InitializeAbilitySystem();
void ShutdownAbilitySystem();
void RegisterToAbilitySystemEvents();
void UnregisterFromAbilitySystemEvents();
void OnGameplayEffectAdded(UAbilitySystemComponent* AbilitySystemComponent, const FGameplayEffectSpec& GameplayEffectSpec, FActiveGameplayEffectHandle Handle);
@@ -275,12 +280,18 @@ private:
void UpdateActiveAbilitySlots();
UFUNCTION()
void OnRep_Scale();
UFUNCTION()
void OnRep_ActiveAbilityHandles();
UPROPERTY(ReplicatedUsing=OnRep_ActiveAbilityHandles, Transient)
TArray<FGameplayAbilitySpecHandle> ActiveAbilityHandles;
UPROPERTY(ReplicatedUsing = OnRep_Scale, Transient)
float Scale = 1.0f;
FDelegateHandle GameplayEffectAddedHandle;
FDelegateHandle GameplayEffectRemovedHandle;