This pull request is a proof of concept for a opt-in time slicing system. This is useful for games with large amounts of entities using beehave trees at once or simply ensuring a fixed amount of updates happen each frame on lower end systems such as mobile. Both these cases aren't covered by changing the tick rate or can be solved better through this implementation. Tick rate alone forces trees to update slower even when there is not any load and leaves the potential for excessive updates to happen on an individual frame.
This should be a part of beehave rather than left up to the user because it requires directly modifying the tick method.
Changes
The added global autoload executes a fixed amount of ticks per frame.
The added export variable to beehave_tree.gd opts a tree into the time slicing system.
The changes to plugin.gd are just to clean up the plugin's autoloads when the plugin is disabled.
Rational
This pull request is a proof of concept for a opt-in time slicing system. This is useful for games with large amounts of entities using beehave trees at once or simply ensuring a fixed amount of updates happen each frame on lower end systems such as mobile. Both these cases aren't covered by changing the tick rate or can be solved better through this implementation. Tick rate alone forces trees to update slower even when there is not any load and leaves the potential for excessive updates to happen on an individual frame.
This should be a part of beehave rather than left up to the user because it requires directly modifying the tick method.
Changes
beehave_tree.gd
opts a tree into the time slicing system.plugin.gd
are just to clean up the plugin's autoloads when the plugin is disabled.