Only observe siblings in Behavior Tree

Hey!

I have more levels of conditions in my behavior tree, and as I can see, “lower priority” observation is applied to the whole tree, not only the siblings of the given node (BTDecoratorDIstanceCheck). The problem it creates is, I only have the “Enemy” if the “Status” is “Attacking”. While debugging, it’s correctly showing, that in case “Status” is not “Attacking”, the other sub-tree will run. However, decorators in the inactive branch are active too if they can stop lower priority branches. Logically it seems wrong to me, as how could it stop other sub-trees, if the parent node’s conditions do not even pass? I could solve it by just adding one more condition to this child node, like “Status” is “Attacking”, but it seems totally unnecessary, redundant and inefficient for me, as I don’t expect this node to run at all if the parent node fails.

Is there any effective and nice solution for this problem? Or I’m just totally missing something?

Thank you!

If anyone ever is looking for it, in 4.19 the functionality has been added to overcome this, just tick “Apply Decorator Scope” on a node to make all direct children have a local decorator scope.

2 Likes