Fantastic update, thanks for keeping the plugin going in terms of constant updates.
Thanks for update, I can get v2.1 now, the update is awosome! Here, I report PlayAnimation bug again. Because we are ACT Game, so, I really need montage, but Ableâs PlayAnimation canât switch smoothly from one montage to another montage (Your <simple combo ability> tutorial also not smoothly). I try to fix it in souce code, but i failed. Now, I use custom event like below picture, it will play smoothly.
Hmmm⌠I donât see you specifying a blend time in there, I assume Play Montage is just defaulting to some blend. Iâll investigate.
Any chance to make EAblAbilityStartResult CanAbilityExecute(UAblAbilityContext& Context) const; virtual?
I have my custom Ability and would like to override basic functionality.
Since that method (on the AbilityComponent) is exposed to Blueprints, Iâll have to check if virtual causes any issues. However, each Ability has a CustomCanAbillityExecute that can be overridden in Blueprints to add any special logic.
Yes I know but I would like to override it in C++ not Blueprints. The same goes for AbilityStarted/Ended/Interupted etc I have changed it to virtual by my self and it doesnât causing any issues for now but I donât like to make this change with every update.
Please be aware that some of users are using C++ instead of Blueprints to have necessary references in C++. Basically with UAblAbility there arenât any virtual C++ functions that can be override and you can imagine that OnStart/End are the most important and I needed to create this functionality by my own in AbilityInstance (just call my virtual functions before Blueprint event)
The systems was designed to be friendly towards BP users, so yea, if youâre going pure C++ then Iâm not shocked youâre hitting some obstacles. But Iâm glad youâre not seeing any issues making things virtual.
Iâll make a pass to toss virtual on everything that makes sense this weekend for the next update.
Thanks - basically having those virtual functions would be great! Start/End/Interrupt. Shouldnât be hard to do. Iâm not doing pure C++ - just donât want to have cross references (BP vs C++) so most of my core stuff is in C++, blueprints are for configuration and adding task only. Iâm using UE for years and BP can mess a lot.
btw: feature request: https://i.imgur.com/QGoH9dN.png It would be great to put some custom nodes which require world context objects as I can have one. For now I need to create c++ task to create user widget.
I donât understand your feature request as that image has nothing to do with Able (from what I can see - beyond that youâre passing in an Ability). Can you elaborate?
I will try.
Iâm not sure 100% but this node hides World Context Objects (which is usually hidden for latent functions for example) which is normally visible when trying put this node in UObject Blueprint (which doesnât have world context objects - only Actor Blueprint have) but not in your Ability Blueprint. (and yours is UObject as well) Maybe something need to be added to UCLASS or there is some hidden GetWorldContextObject() function for Blueprint class which will work with this node. My future request is to be able to put this node into Ability Blueprint there might be other like this which wonât work in Abl Blueprints.
Ah, I see. Iâm not sure the implications from that.
If you want to try it locally, add this:
UFUNCTION(Blah, meta=(WorldContext="WorldContextObject", CallableWithoutWorldContext))
To whatever method you are overriding in the Blueprint. That should expose the WorldContextObject as a parameter, as well as keeping the method callable without specifying the World Context Object,
Speaking of C++ I just started looking into using Able in a C++ based project, but I am having trouble setting up Build.cs to properly reference the plugin. I think it ought to be really simple, but I canât find any good docs or information on exactly the include paths to use. Do you mind posting the relevant part of your Build.cs intoxicat3?
If youâre going to spend a little time working on the C++ interface , it might be helpful to setup an example project based on one of Epicâs C++ templates. It would be a good way to test the interface too.
EDIT: OK I figured out that I needed to include the AbleCore module, not Able. Hereâs what I have in the Build.cs file now in case someone stumbles upon this thread looking for the information:
PublicDependencyModuleNames.AddRange(new string] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AbleCore" });
PublicIncludePaths.AddRange(new string] { "AbleCore/Classes" });
If you use such filters in Collision Query it will filter everything by RogalPlayerCharacter not keeping another negate filter: RogalFriendlyAICharacter. It should negate filter both of them not only first one.
So this is an odd thing that happens when I have an ability animation set to âSingle Nodeâ play settings.
When I go to view in the AnimGraph, I see in the debug filter that there are several instances of the AnimBP, one for each time I used the ability in game:
Not sure what the deal is, perhaps this is expected behavior, but this makes debugging other things though if I have to go and select the new instance everytime I execute the ability, this doesnât happen when I choose any other setting.
Thatâs not a bug from what youâre describing. Filters are executed in order. So, it would exclude everything that isnât a RogalPlayerCharacter, and then takes the results from that and try to filter any RogalFriendlyAICharacterâs (which I assume arenât RogalPlayerCharacters and thus donât exist). You can use the Custom Filter option and just provide some Blueprint code to figure out which actors to keep if the base filters are being a bit too strict for your case.
Thatâs normal. When you modify a Blueprint - it just appends a number for the class (So MyBlueprint_C1, C2, C3, etc). They should go away once you restart the editor as only the latest is actually kept on disk - the others are just hanging out in memory or until GC gets them.
EDIT: Able v2.11 submitted, this adds an option to scale Animations with Ability Play Rate. Pretty small update, but I deemed the other things (more virtual functions, possibly exposing the World Context object on all BP calls) too risky at the moment. Going to hammer on them some more through the Holidays before I push them out.
Thank for info!
How I can get CurrentTime from running passive abilities (GetCurrentPassiveAbilities) - I would like to show TimeRatio in my HUD, and I donât have context there to get time ratioâŚ
There is an crash without call stack unfortunately
- Use SetShaderParameter on Active Ability,
- Use SetShaderParameter on Passive Ability,
- Run Active Ability - check if shader changes (eg. color), then activate passive ability with the same shader param name,
AblAbilityComponent::GetCurrentPassiveAbilities()
For Each Passive:
AblAbilityComponent::GetAbilityCooldownRatio (only takes in an Ability, doesnât require a context).
Unfortunately, without a callstack itâs hard to tell whatâs going on. Odds are you have an invalid shader parameter (or it could be something completely unrelated - need a callstack to figure out for sure).
yes but I donât want to get Cooldown, but CurrentTime for Ability. I need to know TimeRatio for specific Ability.
As for crash - will try to figure this out.
Ah, I see. Yea, thereâs no way to currently get that value (you could easily add it though). Iâll put it on my list.