mirror of
https://github.com/Ed94/Cog.git
synced 2026-08-02 04:38:15 +00:00
Make the ability window more easily overridable in case a project wants to add more ability debug
This commit is contained in:
@@ -45,9 +45,9 @@ void FCogAbilityWindow_Abilities::ResetConfig()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::RenderTick(float DetlaTime)
|
void FCogAbilityWindow_Abilities::RenderTick(float DeltaTime)
|
||||||
{
|
{
|
||||||
Super::RenderTick(DetlaTime);
|
Super::RenderTick(DeltaTime);
|
||||||
|
|
||||||
RenderOpenAbilities();
|
RenderOpenAbilities();
|
||||||
}
|
}
|
||||||
@@ -116,13 +116,13 @@ void FCogAbilityWindow_Abilities::RenderContent()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderAbiltiesMenu(Selection);
|
RenderAbilitiesMenu(Selection);
|
||||||
|
|
||||||
RenderAbilitiesTable(*AbilitySystemComponent);
|
RenderAbilitiesTable(*AbilitySystemComponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::RenderAbiltiesMenu(AActor* Selection)
|
void FCogAbilityWindow_Abilities::RenderAbilitiesMenu(AActor* Selection)
|
||||||
{
|
{
|
||||||
if (ImGui::BeginMenuBar())
|
if (ImGui::BeginMenuBar())
|
||||||
{
|
{
|
||||||
@@ -155,18 +155,11 @@ void FCogAbilityWindow_Abilities::RenderAbiltiesMenu(AActor* Selection)
|
|||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
ImGui::Checkbox("Sort by Name", &Config->SortByName);
|
RenderAbilitiesMenuFilters();
|
||||||
ImGui::Checkbox("Show Active", &Config->ShowActive);
|
|
||||||
ImGui::Checkbox("Show Inactive", &Config->ShowInactive);
|
|
||||||
ImGui::Checkbox("Show Blocked", &Config->ShowBlocked);
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
ImGui::ColorEdit4("Active Color", (float*)&Config->ActiveAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
RenderAbilitiesMenuColorSettings();
|
||||||
ImGui::ColorEdit4("Inactive Color", (float*)&Config->InactiveAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
|
||||||
ImGui::ColorEdit4("Blocked Color", (float*)&Config->BlockedAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
|
||||||
ImGui::ColorEdit4("Default Tag Color", (float*)&Config->DefaultTagsColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
|
||||||
ImGui::ColorEdit4("Blocked Tag Color", (float*)&Config->BlockedTagsColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
@@ -184,6 +177,83 @@ void FCogAbilityWindow_Abilities::RenderAbiltiesMenu(AActor* Selection)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilitiesMenuFilters()
|
||||||
|
{
|
||||||
|
ImGui::Checkbox("Sort by Name", &Config->SortByName);
|
||||||
|
ImGui::Checkbox("Show Active", &Config->ShowActive);
|
||||||
|
ImGui::Checkbox("Show Inactive", &Config->ShowInactive);
|
||||||
|
ImGui::Checkbox("Show Pressed", &Config->ShowPressed);
|
||||||
|
ImGui::Checkbox("Show Blocked", &Config->ShowBlocked);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilitiesMenuColorSettings()
|
||||||
|
{
|
||||||
|
ImGui::ColorEdit4("Active Color", (float*)&Config->ActiveAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
ImGui::ColorEdit4("Inactive Color", (float*)&Config->InactiveAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
ImGui::ColorEdit4("Blocked Color", (float*)&Config->BlockedAbilityColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
ImGui::ColorEdit4("Default Tag Color", (float*)&Config->DefaultTagsColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
ImGui::ColorEdit4("Blocked Tag Color", (float*)&Config->BlockedTagsColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
ImGui::ColorEdit4("Input Pressed Color", (float*)&Config->InputPressedColor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_AlphaPreviewHalf);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilityActivation(FGameplayAbilitySpec& Spec)
|
||||||
|
{
|
||||||
|
FCogWindowWidgets::PushStyleCompact();
|
||||||
|
bool IsActive = Spec.IsActive();
|
||||||
|
if (ImGui::Checkbox("##Activation", &IsActive))
|
||||||
|
{
|
||||||
|
AbilityHandleToActivate = Spec.Handle;
|
||||||
|
}
|
||||||
|
FCogWindowWidgets::PopStyleCompact();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilitiesTableAbilityName(UAbilitySystemComponent& AbilitySystemComponent, int& SelectedIndex, int Index, FGameplayAbilitySpec& Spec, UGameplayAbility* Ability)
|
||||||
|
{
|
||||||
|
const ImVec4 Color = GetAbilityColor(AbilitySystemComponent, Spec);
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
||||||
|
|
||||||
|
if (ImGui::Selectable(TCHAR_TO_ANSI(*GetAbilityName(Ability)), SelectedIndex == Index, ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowOverlap | ImGuiSelectableFlags_AllowDoubleClick))
|
||||||
|
{
|
||||||
|
SelectedIndex = Index;
|
||||||
|
|
||||||
|
if (ImGui::IsMouseDoubleClicked(0))
|
||||||
|
{
|
||||||
|
OpenAbility(Spec.Handle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::PopStyleColor(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilitiesTableAbilityBlocking(UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility* Ability)
|
||||||
|
{
|
||||||
|
if (Ability->DoesAbilitySatisfyTagRequirements(AbilitySystemComponent) == false)
|
||||||
|
{
|
||||||
|
FGameplayTagContainer OwnedGameplayTags;
|
||||||
|
AbilitySystemComponent.GetOwnedGameplayTags(OwnedGameplayTags);
|
||||||
|
|
||||||
|
if (const FGameplayTagContainer* ActivationBlockedTags = &PRIVATE_ACCESS_PTR(Ability, GameplayAbility_ActivationBlockedTags))
|
||||||
|
{
|
||||||
|
FGameplayTagContainer AllBlockingTags;
|
||||||
|
AbilitySystemComponent.GetBlockedAbilityTags(AllBlockingTags);
|
||||||
|
AllBlockingTags.AppendTags(OwnedGameplayTags);
|
||||||
|
|
||||||
|
FCogAbilityHelper::RenderTagContainer(*ActivationBlockedTags, AllBlockingTags, false, true, true, ImVec4(0, 0, 0, 0), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (const FGameplayTagContainer* ActivationRequiredTags = &PRIVATE_ACCESS_PTR(Ability, GameplayAbility_ActivationRequiredTags))
|
||||||
|
{
|
||||||
|
FCogAbilityHelper::RenderTagContainer(*ActivationRequiredTags, OwnedGameplayTags, true, true, true, ImVec4(0, 0, 0, 0), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent& AbilitySystemComponent)
|
void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent& AbilitySystemComponent)
|
||||||
{
|
{
|
||||||
@@ -191,7 +261,7 @@ void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
|||||||
|
|
||||||
TArray<FGameplayAbilitySpec> FitleredAbilities;
|
TArray<FGameplayAbilitySpec> FitleredAbilities;
|
||||||
|
|
||||||
for (FGameplayAbilitySpec& Spec: Abilities)
|
for (FGameplayAbilitySpec& Spec : Abilities)
|
||||||
{
|
{
|
||||||
const UGameplayAbility* Ability = Spec.GetPrimaryInstance();
|
const UGameplayAbility* Ability = Spec.GetPrimaryInstance();
|
||||||
if (Ability == nullptr)
|
if (Ability == nullptr)
|
||||||
@@ -199,24 +269,10 @@ void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
|||||||
Ability = Spec.Ability;
|
Ability = Spec.Ability;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool IsJustBlocked = Ability->DoesAbilitySatisfyTagRequirements(AbilitySystemComponent) == false;
|
if (ShouldShowAbility(AbilitySystemComponent, Spec, Ability) == false)
|
||||||
const bool IsJustActive = Spec.IsActive() && IsJustBlocked == false;
|
|
||||||
const bool IsJustInactive = Spec.IsActive() == false && IsJustBlocked == false;
|
|
||||||
|
|
||||||
if (Config->ShowBlocked == false && IsJustBlocked)
|
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config->ShowActive == false && IsJustActive)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config->ShowInactive == false && IsJustInactive)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto AbilityName = StringCast<ANSICHAR>(*GetAbilityName(Ability));
|
const auto AbilityName = StringCast<ANSICHAR>(*GetAbilityName(Ability));
|
||||||
if (Filter.PassFilter(AbilityName.Get()) == false)
|
if (Filter.PassFilter(AbilityName.Get()) == false)
|
||||||
@@ -235,24 +291,8 @@ void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginTable("Abilities", 6, ImGuiTableFlags_SizingFixedFit
|
if (RenderAbilitiesTableHeader(AbilitySystemComponent))
|
||||||
| ImGuiTableFlags_Resizable
|
|
||||||
| ImGuiTableFlags_NoBordersInBodyUntilResize
|
|
||||||
| ImGuiTableFlags_ScrollY
|
|
||||||
| ImGuiTableFlags_RowBg
|
|
||||||
| ImGuiTableFlags_BordersV
|
|
||||||
| ImGuiTableFlags_Reorderable
|
|
||||||
| ImGuiTableFlags_Hideable))
|
|
||||||
{
|
{
|
||||||
ImGui::TableSetupColumn("##Activation", ImGuiTableColumnFlags_WidthFixed);
|
|
||||||
ImGui::TableSetupScrollFreeze(0, 1);
|
|
||||||
ImGui::TableSetupColumn("Ability");
|
|
||||||
ImGui::TableSetupColumn("Level");
|
|
||||||
ImGui::TableSetupColumn("Input");
|
|
||||||
ImGui::TableSetupColumn("Cooldown");
|
|
||||||
ImGui::TableSetupColumn("Blocking");
|
|
||||||
ImGui::TableHeadersRow();
|
|
||||||
|
|
||||||
static int SelectedIndex = -1;
|
static int SelectedIndex = -1;
|
||||||
int Index = 0;
|
int Index = 0;
|
||||||
|
|
||||||
@@ -268,98 +308,7 @@ void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
|||||||
|
|
||||||
ImGui::PushID(Index);
|
ImGui::PushID(Index);
|
||||||
|
|
||||||
const ImVec4 Color = GetAbilityColor(AbilitySystemComponent, Spec);
|
RenderAbilitiesTableRow(AbilitySystemComponent, SelectedIndex, Index, Spec, Ability);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, Color);
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Activation
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
FCogWindowWidgets::PushStyleCompact();
|
|
||||||
bool IsActive = Spec.IsActive();
|
|
||||||
if (ImGui::Checkbox("##Activation", &IsActive))
|
|
||||||
{
|
|
||||||
AbilityHandleToActivate = Spec.Handle;
|
|
||||||
}
|
|
||||||
FCogWindowWidgets::PopStyleCompact();
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Name
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
|
|
||||||
if (ImGui::Selectable(TCHAR_TO_ANSI(*GetAbilityName(Ability)), SelectedIndex == Index, ImGuiSelectableFlags_SpanAllColumns | ImGuiSelectableFlags_AllowOverlap | ImGuiSelectableFlags_AllowDoubleClick))
|
|
||||||
{
|
|
||||||
SelectedIndex = Index;
|
|
||||||
|
|
||||||
if (ImGui::IsMouseDoubleClicked(0))
|
|
||||||
{
|
|
||||||
OpenAbility(Spec.Handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::PopStyleColor(1);
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Popup
|
|
||||||
//------------------------
|
|
||||||
if (ImGui::IsItemHovered())
|
|
||||||
{
|
|
||||||
FCogWindowWidgets::BeginTableTooltip();
|
|
||||||
RenderAbilityInfo(AbilitySystemComponent, Spec);
|
|
||||||
FCogWindowWidgets::EndTableTooltip();
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// ContextMenu
|
|
||||||
//------------------------
|
|
||||||
RenderAbilityContextMenu(AbilitySystemComponent, Spec, Index);
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Level
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
ImGui::Text("%d", Spec.Level);
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// InputPressed
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
if (Spec.InputPressed > 0)
|
|
||||||
{
|
|
||||||
ImGui::Text("%d", Spec.InputPressed);
|
|
||||||
}
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Cooldown
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
RenderAbilityCooldown(AbilitySystemComponent, *Ability);
|
|
||||||
|
|
||||||
//------------------------
|
|
||||||
// Blocking
|
|
||||||
//------------------------
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
if (Ability->DoesAbilitySatisfyTagRequirements(AbilitySystemComponent) == false)
|
|
||||||
{
|
|
||||||
FGameplayTagContainer OwnedGameplayTags;
|
|
||||||
AbilitySystemComponent.GetOwnedGameplayTags(OwnedGameplayTags);
|
|
||||||
|
|
||||||
if (const FGameplayTagContainer* ActivationBlockedTags = &PRIVATE_ACCESS_PTR(Ability, GameplayAbility_ActivationBlockedTags))
|
|
||||||
{
|
|
||||||
FGameplayTagContainer AllBlockingTags;
|
|
||||||
AbilitySystemComponent.GetBlockedAbilityTags(AllBlockingTags);
|
|
||||||
AllBlockingTags.AppendTags(OwnedGameplayTags);
|
|
||||||
|
|
||||||
FCogAbilityHelper::RenderTagContainer(*ActivationBlockedTags, AllBlockingTags, false, true, true, ImVec4(0, 0, 0, 0), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (const FGameplayTagContainer* ActivationRequiredTags = &PRIVATE_ACCESS_PTR(Ability, GameplayAbility_ActivationRequiredTags))
|
|
||||||
{
|
|
||||||
FCogAbilityHelper::RenderTagContainer(*ActivationRequiredTags, OwnedGameplayTags, true, true, true, ImVec4(0, 0, 0, 0), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::PopID();
|
ImGui::PopID();
|
||||||
Index++;
|
Index++;
|
||||||
@@ -369,6 +318,116 @@ void FCogAbilityWindow_Abilities::RenderAbilitiesTable(UAbilitySystemComponent&
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool FCogAbilityWindow_Abilities::ShouldShowAbility(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, const UGameplayAbility* Ability)
|
||||||
|
{
|
||||||
|
const bool IsBlocked = Ability->DoesAbilitySatisfyTagRequirements(AbilitySystemComponent) == false;
|
||||||
|
if (Config->ShowBlocked && IsBlocked)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config->ShowActive && Spec.IsActive())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config->ShowInactive && Spec.IsActive() == false)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config->ShowPressed && Spec.InputPressed)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
bool FCogAbilityWindow_Abilities::RenderAbilitiesTableHeader(UAbilitySystemComponent& AbilitySystemComponent)
|
||||||
|
{
|
||||||
|
if (ImGui::BeginTable("Abilities", 6, ImGuiTableFlags_SizingFixedFit
|
||||||
|
| ImGuiTableFlags_Resizable
|
||||||
|
| ImGuiTableFlags_NoBordersInBodyUntilResize
|
||||||
|
| ImGuiTableFlags_ScrollY
|
||||||
|
| ImGuiTableFlags_RowBg
|
||||||
|
| ImGuiTableFlags_BordersV
|
||||||
|
| ImGuiTableFlags_Reorderable
|
||||||
|
| ImGuiTableFlags_Hideable))
|
||||||
|
{
|
||||||
|
ImGui::TableSetupColumn("##Activation", ImGuiTableColumnFlags_WidthFixed);
|
||||||
|
ImGui::TableSetupScrollFreeze(0, 1);
|
||||||
|
ImGui::TableSetupColumn("Ability");
|
||||||
|
ImGui::TableSetupColumn("Level");
|
||||||
|
ImGui::TableSetupColumn("Input");
|
||||||
|
ImGui::TableSetupColumn("Cooldown");
|
||||||
|
ImGui::TableSetupColumn("Blocking");
|
||||||
|
ImGui::TableHeadersRow();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilitiesTableRow(UAbilitySystemComponent& AbilitySystemComponent, int& SelectedIndex, int Index, FGameplayAbilitySpec& Spec, UGameplayAbility* Ability)
|
||||||
|
{
|
||||||
|
//------------------------
|
||||||
|
// Activation
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilityActivation(Spec);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Name
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilitiesTableAbilityName(AbilitySystemComponent, SelectedIndex, Index, Spec, Ability);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Popup
|
||||||
|
//------------------------
|
||||||
|
if (ImGui::IsItemHovered())
|
||||||
|
{
|
||||||
|
FCogWindowWidgets::BeginTableTooltip();
|
||||||
|
RenderAbilityInfo(AbilitySystemComponent, Spec);
|
||||||
|
FCogWindowWidgets::EndTableTooltip();
|
||||||
|
}
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// ContextMenu
|
||||||
|
//------------------------
|
||||||
|
RenderAbilityContextMenu(AbilitySystemComponent, Spec, Index);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Level
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilityLevel(Spec);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// InputPressed
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilityInputPressed(Spec);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Cooldown
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilityCooldown(AbilitySystemComponent, *Ability);
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Blocking
|
||||||
|
//------------------------
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
RenderAbilitiesTableAbilityBlocking(AbilitySystemComponent, Ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::RenderAbilityCooldown(const UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility& Ability)
|
void FCogAbilityWindow_Abilities::RenderAbilityCooldown(const UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility& Ability)
|
||||||
{
|
{
|
||||||
@@ -377,8 +436,7 @@ void FCogAbilityWindow_Abilities::RenderAbilityCooldown(const UAbilitySystemComp
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FGameplayAbilitySpec* Spec = Ability.GetCurrentAbilitySpec();
|
const FGameplayAbilitySpec* Spec = Ability.GetCurrentAbilitySpec();
|
||||||
|
|
||||||
if (Spec == nullptr)
|
if (Spec == nullptr)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -396,6 +454,21 @@ void FCogAbilityWindow_Abilities::RenderAbilityCooldown(const UAbilitySystemComp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilityLevel(FGameplayAbilitySpec& Spec)
|
||||||
|
{
|
||||||
|
ImGui::Text("%d", Spec.Level);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilityInputPressed(FGameplayAbilitySpec& Spec)
|
||||||
|
{
|
||||||
|
if (Spec.InputPressed)
|
||||||
|
{
|
||||||
|
FCogWindowWidgets::SmallButton("Pressed", FCogImguiHelper::ToImVec4(Config->ActiveAbilityColor));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::RenderAbilityContextMenu(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, int Index)
|
void FCogAbilityWindow_Abilities::RenderAbilityContextMenu(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, int Index)
|
||||||
{
|
{
|
||||||
@@ -464,7 +537,7 @@ void FCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
|||||||
|
|
||||||
if (ImGui::BeginTable("Ability", 2, ImGuiTableFlags_Borders))
|
if (ImGui::BeginTable("Ability", 2, ImGuiTableFlags_Borders))
|
||||||
{
|
{
|
||||||
const ImVec4 TextColor(1.0f, 1.0f, 1.0f, 0.5f);
|
constexpr ImVec4 TextColor(1.0f, 1.0f, 1.0f, 0.5f);
|
||||||
|
|
||||||
ImGui::TableSetupColumn("Property");
|
ImGui::TableSetupColumn("Property");
|
||||||
ImGui::TableSetupColumn("Value");
|
ImGui::TableSetupColumn("Value");
|
||||||
@@ -531,7 +604,7 @@ void FCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
|||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextColored(TextColor, "Level");
|
ImGui::TextColored(TextColor, "Level");
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("%d", Spec.Level);
|
RenderAbilityLevel(Spec);
|
||||||
|
|
||||||
//------------------------
|
//------------------------
|
||||||
// InputID
|
// InputID
|
||||||
@@ -549,7 +622,7 @@ void FCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
|||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::TextColored(TextColor, "Input Pressed");
|
ImGui::TextColored(TextColor, "Input Pressed");
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("%d", Spec.InputPressed);
|
RenderAbilityInputPressed(Spec);
|
||||||
|
|
||||||
//------------------------
|
//------------------------
|
||||||
// AbilityTags
|
// AbilityTags
|
||||||
@@ -591,10 +664,21 @@ void FCogAbilityWindow_Abilities::RenderAbilityInfo(const UAbilitySystemComponen
|
|||||||
FCogAbilityHelper::RenderTagContainer(*ActivationBlockedTags, AllBlockingTags, false, false, false, FCogImguiHelper::ToImVec4(Config->DefaultTagsColor), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
FCogAbilityHelper::RenderTagContainer(*ActivationBlockedTags, AllBlockingTags, false, false, false, FCogImguiHelper::ToImVec4(Config->DefaultTagsColor), FCogImguiHelper::ToImVec4(Config->BlockedTagsColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------
|
||||||
|
// Additional info
|
||||||
|
//------------------------
|
||||||
|
RenderAbilityAdditionalInfo(AbilitySystemComponent, Spec, *Ability, TextColor);
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
void FCogAbilityWindow_Abilities::RenderAbilityAdditionalInfo(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, UGameplayAbility& Ability, const ImVec4& TextColor)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
void FCogAbilityWindow_Abilities::GameTick(float DeltaTime)
|
void FCogAbilityWindow_Abilities::GameTick(float DeltaTime)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "CogWindow.h"
|
#include "CogWindow.h"
|
||||||
#include "CogWindowConfig.h"
|
#include "CogWindowConfig.h"
|
||||||
#include "GameplayAbilitySpecHandle.h"
|
#include "GameplayAbilitySpecHandle.h"
|
||||||
|
#include "GameplayTagContainer.h"
|
||||||
#include "CogAbilityWindow_Abilities.generated.h"
|
#include "CogAbilityWindow_Abilities.generated.h"
|
||||||
|
|
||||||
class UAbilitySystemComponent;
|
class UAbilitySystemComponent;
|
||||||
@@ -26,18 +27,37 @@ protected:
|
|||||||
|
|
||||||
virtual void RenderHelp() override;
|
virtual void RenderHelp() override;
|
||||||
|
|
||||||
virtual void RenderTick(float DetlaTime) override;
|
virtual void RenderTick(float DeltaTime) override;
|
||||||
|
|
||||||
virtual void RenderContent() override;
|
virtual void RenderContent() override;
|
||||||
|
|
||||||
virtual void GameTick(float DeltaTime) override;
|
virtual void GameTick(float DeltaTime) override;
|
||||||
|
|
||||||
virtual void RenderAbiltiesMenu(AActor* Selection);
|
virtual void RenderAbilitiesMenu(AActor* Selection);
|
||||||
|
|
||||||
|
virtual void RenderAbilitiesMenuFilters();
|
||||||
|
|
||||||
|
virtual void RenderAbilitiesMenuColorSettings();
|
||||||
|
|
||||||
virtual FString GetAbilityName(const UGameplayAbility* Ability);
|
virtual FString GetAbilityName(const UGameplayAbility* Ability);
|
||||||
|
|
||||||
virtual void RenderAbilitiesTable(UAbilitySystemComponent& AbilitySystemComponent);
|
virtual void RenderAbilitiesTable(UAbilitySystemComponent& AbilitySystemComponent);
|
||||||
|
|
||||||
|
virtual bool RenderAbilitiesTableHeader(UAbilitySystemComponent& AbilitySystemComponent);
|
||||||
|
|
||||||
|
virtual void RenderAbilitiesTableRow(UAbilitySystemComponent& AbilitySystemComponent, int& SelectedIndex, int Index,
|
||||||
|
FGameplayAbilitySpec& Spec, UGameplayAbility* Ability);
|
||||||
|
|
||||||
|
virtual void RenderAbilityActivation(FGameplayAbilitySpec& Spec);
|
||||||
|
|
||||||
|
virtual void RenderAbilitiesTableAbilityName(UAbilitySystemComponent& AbilitySystemComponent, int& SelectedIndex, int Index, FGameplayAbilitySpec& Spec, UGameplayAbility* Ability);
|
||||||
|
|
||||||
|
virtual void RenderAbilitiesTableAbilityBlocking(UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility* Ability);
|
||||||
|
|
||||||
|
virtual void RenderAbilityLevel(FGameplayAbilitySpec& Spec);
|
||||||
|
|
||||||
|
virtual void RenderAbilityInputPressed(FGameplayAbilitySpec& Spec);
|
||||||
|
|
||||||
virtual void RenderAbilityCooldown(const UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility& Ability);
|
virtual void RenderAbilityCooldown(const UAbilitySystemComponent& AbilitySystemComponent, UGameplayAbility& Ability);
|
||||||
|
|
||||||
virtual void RenderAbilityContextMenu(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, int Index);
|
virtual void RenderAbilityContextMenu(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, int Index);
|
||||||
@@ -46,6 +66,8 @@ protected:
|
|||||||
|
|
||||||
virtual void RenderAbilityInfo(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
virtual void RenderAbilityInfo(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
||||||
|
|
||||||
|
virtual void RenderAbilityAdditionalInfo(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec, UGameplayAbility& Ability, const ImVec4& TextColor);
|
||||||
|
|
||||||
virtual void ProcessAbilityActivation(const FGameplayAbilitySpecHandle& Handle);
|
virtual void ProcessAbilityActivation(const FGameplayAbilitySpecHandle& Handle);
|
||||||
|
|
||||||
virtual void ActivateAbility(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
virtual void ActivateAbility(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
||||||
@@ -58,6 +80,9 @@ protected:
|
|||||||
|
|
||||||
virtual ImVec4 GetAbilityColor(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
virtual ImVec4 GetAbilityColor(const UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec);
|
||||||
|
|
||||||
|
virtual bool ShouldShowAbility(UAbilitySystemComponent& AbilitySystemComponent, FGameplayAbilitySpec& Spec,
|
||||||
|
const UGameplayAbility* Ability);
|
||||||
|
|
||||||
FGameplayAbilitySpecHandle AbilityHandleToActivate;
|
FGameplayAbilitySpecHandle AbilityHandleToActivate;
|
||||||
|
|
||||||
FGameplayAbilitySpecHandle AbilityHandleToRemove;
|
FGameplayAbilitySpecHandle AbilityHandleToRemove;
|
||||||
@@ -88,6 +113,9 @@ public:
|
|||||||
UPROPERTY(Config)
|
UPROPERTY(Config)
|
||||||
bool ShowInactive = true;
|
bool ShowInactive = true;
|
||||||
|
|
||||||
|
UPROPERTY(Config)
|
||||||
|
bool ShowPressed = true;
|
||||||
|
|
||||||
UPROPERTY(Config)
|
UPROPERTY(Config)
|
||||||
bool ShowBlocked = true;
|
bool ShowBlocked = true;
|
||||||
|
|
||||||
@@ -106,6 +134,9 @@ public:
|
|||||||
UPROPERTY(Config)
|
UPROPERTY(Config)
|
||||||
FVector4f BlockedTagsColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
FVector4f BlockedTagsColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
||||||
|
|
||||||
|
UPROPERTY(Config)
|
||||||
|
FVector4f InputPressedColor = FVector4f(0.0f, 1.0f, 0.5f, 1.0f);
|
||||||
|
|
||||||
virtual void Reset() override
|
virtual void Reset() override
|
||||||
{
|
{
|
||||||
Super::Reset();
|
Super::Reset();
|
||||||
@@ -113,11 +144,13 @@ public:
|
|||||||
SortByName = false;
|
SortByName = false;
|
||||||
ShowActive = true;
|
ShowActive = true;
|
||||||
ShowInactive = true;
|
ShowInactive = true;
|
||||||
|
ShowPressed = true;
|
||||||
ShowBlocked = true;
|
ShowBlocked = true;
|
||||||
ActiveAbilityColor = FVector4f(0.0f, 1.0f, 0.5f, 1.0f);
|
ActiveAbilityColor = FVector4f(0.0f, 1.0f, 0.5f, 1.0f);
|
||||||
InactiveAbilityColor = FVector4f(1.0f, 1.0f, 1.0f, 1.0f);
|
InactiveAbilityColor = FVector4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
BlockedAbilityColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
BlockedAbilityColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
||||||
DefaultTagsColor = FVector4f(0.6f, 0.6f, 0.6f, 1.0f);
|
DefaultTagsColor = FVector4f(0.6f, 0.6f, 0.6f, 1.0f);
|
||||||
BlockedTagsColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
BlockedTagsColor = FVector4f(1.0f, 0.5f, 0.5f, 1.0f);
|
||||||
|
InputPressedColor = FVector4f(0.0f, 1.0f, 0.5f, 1.0f);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user