Skip to content

1.9

Compare
Choose a tag to compare
@landelare landelare released this 20 Jun 04:11
· 17 commits to master since this release

The folder structure of the repository and releases changed, there are multiple plugins now.
Tested on Unreal Engine 5.1.1, 5.2.0, 5.2.1, with preliminary support for 5.3 and BuildSettingsVersion.V4.
README.md was updated with new installation instructions.

UE5Coro

  • Delegates are now directly co_awaitable. All of them. See the documentation for more details.
  • TCoroutine::WasSuccessful was added to complement IsDone. It's true if and only if the coroutine successfully ran to completion.
    • If you're using exceptions, an unhandled exception leads to IsDone() && !WasSuccessful().
  • UE5CoroGAS support.

Improvements:

  • Coroutines returning TCoroutine start a little faster and use slightly less memory.
  • Latent awaiters have marginally lower CPU overhead when co_awaited.

Fixes:

  • Fixed that coroutines returning TCoroutine and having multiple FForceLatentCoroutine parameters compiled. They weren't supposed to.
  • Worked around an MSVC regression in CoroutineHandleTest.cpp.

Deprecations:

  • TCoroutine::OnCompletion has been removed entirely.
  • VS2019 compatibility is no longer tested or maintained.
  • UE5.0 compatibility is no longer tested or maintained.

UE5CoroGAS

A brand-new and optional plugin to integrate with Unreal's Gameplay Ability System.
This plugin is currently experimental. Although it has been tested, its API is subject to change without deprecations for now.

  • UUE5CoroGameplayAbility: A coroutine-based UGameplayAbility implementation that deals with most lifetime control methods for you and translates them to and from native C++ coroutine behavior.
    • There's a new awaiter only available from this class (Task()) that lets you co_await many built-in tasks with a more convenient syntax than Latent::UntilDelegate.
  • UUE5CoroAbilityTask: The same, but for UAbilityTask.
  • UUE5CoroSimpleAbilityTask: A convenience base class with two premade delegates for coroutine success/failure.

All of these are drop-in replacements for their engine base classes. Normal coroutine behavior is tweaked to match what BP-authored abilities or tasks would do. There's a full list of these behavior changes in the documentation.