Muoio117:
I see the Able system is 50% off until today, and I’m considering purchasing the product, so I want to ask a quick question: does Able still have conflicts with ALSv4? (I’m using the C++ version, if that’s of any relevance.) I was reading through some pages of this thread, but then I realized there are 116 pages. I apologize if this question has already been asked and answered.
That issue is with ALS, not Able unfortunately. I know the fix amounts to basically a nullptr check within ALS’s tick method - but I’m unsure if the author of ALS is aware of the issue or has put in a fix.
Able v3.60 submitted, notes below:
Able v3.60
Variables can now be set on the Context BEFORE calling ActivateAbility. You can set Integers, Floats, Strings, or UObjects by calling “Set<type>Parameter” on the Context itself. Variables are not sync’d across the wire due to it preventing client prediction.Variables also cannot be set during Ability execution - the Ability scratchpad should be used for that. All Tasks can read the parameters using “Get<type>Parameter” and passing in the Name they gave the variable when setting it.
Added a new AbilityScratchPad example called “AbilityRuntimeParametersScratchPad” which has the same parameter options (Integer, Float, String, UObject) and interface (Set<type>Parameter / Get<type>Parameter) as the Context variables. You can either inherit from it in your own AbilityScratchPad’s or use it directly. !! If using this structure, make sure you call the “ResetScratchpad” on it during the “OnResetAbilityScratchPad” callback, otherwise you will not clear out previous run variables. !!
!! BP BREAKING CHANGE !! “Create Ability Context” now has an execution pin to allow for variables to persist (otherwise UE will just recall the function and you’ll lose any data).You’ll need to have your flow go through that exec pin now.
Both Context Variables and the AbilityRuntimeParametersScratchPad use a Read/Write lock under the hood to prevent read/write conflicts, so they should be fairly thread safe - but take care when doing any write from Async threads and avoid it if possible.