Skip to content

Commit

Permalink
UE5.5 fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
landelare committed Aug 31, 2024
1 parent 756a67e commit 95a5e7a
Show file tree
Hide file tree
Showing 28 changed files with 85 additions and 51 deletions.
8 changes: 6 additions & 2 deletions Docs/GAS.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,12 @@ with a coroutine.
> [!CAUTION]
> It is undefined behavior to override ExecuteAbility with a subroutine.
Every instancing policy is supported, including it dynamically changing at
runtime.
Every instancing policy is supported on Unreal Engine 5.3 and 5.4, including it
dynamically changing at runtime.

Starting with 5.5, NonInstanced is not supported.
Using the `AbilitySystem.Fix.AllowNonInstancedAbilities` CVar to get it back is
possible, but not recommended due to engine issues.

The following events are turned into interactions with the ExecuteAbility
coroutine:
Expand Down
2 changes: 1 addition & 1 deletion Source/UE5CoroGASTests/Private/AbilityTaskTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAbilityTaskTest, "UE5Coro.GAS.AbilityTask",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
15 changes: 12 additions & 3 deletions Source/UE5CoroGASTests/Private/GameplayAbilityTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,28 @@

#include "GASTestWorld.h"
#include "Misc/AutomationTest.h"
#include "Misc/EngineVersionComparison.h"
#include "UE5CoroGASTestGameplayAbility.h"

using namespace UE5Coro::Private::Test;

#if UE_VERSION_OLDER_THAN(5, 5, 0)
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FGameplayAbilityTestNonInstanced,
"UE5Coro.GAS.GameplayAbility.NonInstanced",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)
#endif

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FGameplayAbilityTestPerActor,
"UE5Coro.GAS.GameplayAbility.PerActor",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FGameplayAbilityTestPerExecution,
"UE5Coro.GAS.GameplayAbility.PerExecution",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand All @@ -58,7 +61,11 @@ namespace
void DoTest(FAutomationTestBase& Test,
EGameplayAbilityInstancingPolicy::Type Policy)
{
#if UE_VERSION_OLDER_THAN(5, 5, 0)
bool bInstanced = Policy != EGameplayAbilityInstancingPolicy::NonInstanced;
#else
constexpr bool bInstanced = true;
#endif
auto* CDO = GetMutableDefault<UUE5CoroGASTestGameplayAbility>();
UUE5CoroGASTestGameplayAbility::SetInstancingPolicy(Policy);
int& State = UUE5CoroGASTestGameplayAbility::State;
Expand Down Expand Up @@ -118,11 +125,13 @@ void DoTest(FAutomationTestBase& Test,
}
}

#if UE_VERSION_OLDER_THAN(5, 5, 0)
bool FGameplayAbilityTestNonInstanced::RunTest(const FString& Parameters)
{
DoTest(*this, EGameplayAbilityInstancingPolicy::NonInstanced);
return true;
}
#endif

bool FGameplayAbilityTestPerActor::RunTest(const FString& Parameters)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include "UE5CoroGASTestGameplayAbility.h"
#include "Misc/EngineVersionComparison.h"
#include "Tasks/GameplayTask_WaitDelay.h"

using namespace UE5Coro;
Expand Down Expand Up @@ -77,7 +78,11 @@ FAbilityCoroutine UUE5CoroGASTestGameplayAbility::ExecuteAbility(
State = 4;

// UGameplayTask_WaitDelay only works on instanced abilities
#if UE_VERSION_OLDER_THAN(5, 5, 0)
if (GetInstancingPolicy() != EGameplayAbilityInstancingPolicy::NonInstanced)
#else
if constexpr (true)
#endif
{
// UGameplayTask_WaitDelay is MinimalAPI
auto* Class = UGameplayTask_WaitDelay::StaticClass();
Expand Down
10 changes: 9 additions & 1 deletion Source/UE5CoroK2/Private/K2Node_UE5CoroCallCoroutine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,15 @@
#include "BlueprintActionDatabaseRegistrar.h"
#include "BlueprintNodeSpawner.h"
#include "EdGraphSchema_K2.h"
#include "Misc/EngineVersionComparison.h"
#include "UE5Coro.h"

#if UE_VERSION_OLDER_THAN(5, 5, 0)
using ObjectTools = UK2Node_CallFunction;
#else
#include "ObjectTools.h"
#endif

void UK2Node_UE5CoroCallCoroutine::CustomizeNode(UEdGraphNode* NewNode, bool,
UFunction* Function)
{
Expand Down Expand Up @@ -68,7 +75,8 @@ void UK2Node_UE5CoroCallCoroutine::GetMenuActions(
Menu.Category = NSLOCTEXT("UE5Coro", "CallCoroutine",
"Call Coroutine");
// The engine does the same FString->FText conversion
Menu.Tooltip = FText::FromString(GetDefaultTooltipForFunction(Fn));
Menu.Tooltip = FText::FromString(
ObjectTools::GetDefaultTooltipForFunction(Fn));
Menu.Keywords = GetKeywordsForFunction(Fn);
Menu.Icon = GetIconAndTint(Menu.IconTint);
Menu.DocLink = GetDocumentationLink();
Expand Down
1 change: 1 addition & 0 deletions Source/UE5CoroK2/UE5CoroK2.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public UE5CoroK2(ReadOnlyTargetRules Target)
{
"BlueprintGraph",
"UE5Coro",
"UnrealEd",
});
}
}
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/AggregateAwaiterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAggregateAsyncTest, "UE5Coro.Aggregate.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAggregateLatentTest, "UE5Coro.Aggregate.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
6 changes: 3 additions & 3 deletions Source/UE5CoroTests/Private/AsyncAwaiterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,17 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncAwaiterTest, "UE5Coro.Async.TrueAsync",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncInLatentTest, "UE5Coro.Async.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncStressTest, "UE5Coro.Async.Stress",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::MediumPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/AsyncLoadTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncLoadTestLatent, "UE5Coro.AsyncLoad.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncLoadTestAsync, "UE5Coro.AsyncLoad.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/AsyncQueryTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncQueryTestAsync, "UE5Coro.AsyncQuery.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncQueryTestLatent, "UE5Coro.AsyncQuery.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/AwaitableEventTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FEventAsyncTest, "UE5Coro.Threading.Event.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FEventLatentTest, "UE5Coro.Threading.Event.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/AwaitableSemaphoreTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ using namespace UE5Coro;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FSemaAsyncTest, "UE5Coro.Threading.Semaphore.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FSemaLatentTest, "UE5Coro.Threading.Semaphore.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/CancellationTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FCancelTestAsync, "UE5Coro.Cancel.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FCancelTestLatent, "UE5Coro.Cancel.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/CoroutineHandleTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,12 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FHandleTestAsync, "UE5Coro.Handle.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FHandleTestLatent, "UE5Coro.Handle.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
6 changes: 3 additions & 3 deletions Source/UE5CoroTests/Private/DelegateAwaiterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,17 +41,17 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FDelegateTestCore, "UE5Coro.Delegate.Core",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::SmokeFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FDelegateTestAsync, "UE5Coro.Delegate.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FDelegateTestLatent, "UE5Coro.Delegate.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
2 changes: 1 addition & 1 deletion Source/UE5CoroTests/Private/ExceptionTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ using namespace UE5Coro::Private::Test;
#if !PLATFORM_EXCEPTIONS_DISABLED

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FExceptionTest, "UE5Coro.Exceptions",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/FutureTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFutureAsync, "UE5Coro.Future.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FFutureLatent, "UE5Coro.Future.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
3 changes: 2 additions & 1 deletion Source/UE5CoroTests/Private/GeneratorTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,14 @@
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#include "TestWorld.h"
#include "Misc/AutomationTest.h"
#include "UE5Coro.h"

using namespace UE5Coro;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FGeneratorTest, "UE5Coro.Generator",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::CriticalPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/HttpAwaiterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ using namespace UE5Coro::Http;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FHttpAsyncTest, "UE5Coro.HTTP.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FHttpLatentTest, "UE5Coro.HTTP.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/LatentAwaiterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentAwaiterTest, "UE5Coro.Latent.TrueLatent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentInAsyncTest, "UE5Coro.Latent.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/LatentCallbackTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentCallbackTest, "UE5Coro.Latent.Callbacks",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)
IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentCompletionTest, "UE5Coro.Latent.Completion",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/LatentChainCancellationTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ using namespace UE5Coro::Private;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncChainCancelTest, "UE5Coro.Chain.Cancel.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentChainCancelTest, "UE5Coro.Chain.Cancel.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
4 changes: 2 additions & 2 deletions Source/UE5CoroTests/Private/LatentChainTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ using namespace UE5Coro::Latent;
using namespace UE5Coro::Private::Test;

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FAsyncChainTest, "UE5Coro.Chain.Async",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

IMPLEMENT_SIMPLE_AUTOMATION_TEST(FLatentChainTest, "UE5Coro.Chain.Latent",
EAutomationTestFlags::ApplicationContextMask |
EAutomationTestFlags_ApplicationContextMask |
EAutomationTestFlags::HighPriority |
EAutomationTestFlags::ProductFilter)

Expand Down
Loading

0 comments on commit 95a5e7a

Please sign in to comment.