[Bug] OnEnd override not called

Cheo

Active member
Hello, this is a major issue that took me a good amount of time to properly identify and reproduce. Please watch the following video which contains all of the details and goes over an easily reproducible tree :


To summarize, when using two repeaters under a parallel, the OnEnd override is not called on an aborted task, if it is preceded by a Wait task or if a conditional on the other repeater is under a Sequence. That is at least what I have observed and reproduced, there may very likely be a broader issue behind that inside of BDP's architecture. Please try to reproduce this tree and just make a simple action with an OnEnd override that just sends a Debug.Log, and see if you stumble upon the same issue. This happened when using BDP 2.1.12, and both on Unity 6.0.60f1 and 6.3.5f2.

As I mentioned at the end of the video this may look harmless at first when using a Wait task, but for any task crucial to the gameplay and requiring a failsafe this becomes an extremely serious issue. A project I'm currently involved in is suffering from this issue as a pathfinding task is not properly interrupted, causing agents to often keep moving when they shouldn't. We are nearing a deadline and would really appreciate you taking a look at this quickly. Let me know if any information or clarification is needed, thanks.
 
Here's a package containing the tree and the scene, I replaced MyWait by SharedWait, you can just add an OnEnd override to it with a Debug.Log.
 

Attachments

Thanks, this was the result of an interrupt change awhile ago. You can fix this by changing the following on line 67 within TaskObjectSystem:

Code:
if (taskComponent.Status == TaskStatus.Success || taskComponent.Status == TaskStatus.Failure) {
to:
Code:
if (taskComponent.Status != TaskStatus.Queued && taskComponent.Status != TaskStatus.Running) {
 
Last edited:
Back
Top