Updating behavior actions
The only remaining work while using the blackboard is to refactor the data manipulation that occurs within a number of soldier behaviors.
The die action
Updating the die action requires us to set the blackboard's alive
attribute instead of using userData
directly:
SoldierActions.lua
:
function SoldierActions_DieUpdate(deltaTimeInMillis, userData) userData.blackboard:Set("alive", false); return Action.Status.TERMINATED; end
The flee action
With a bestFleePosition
data source, our flee action no longer needs to perform any calculations and simply finds a path directly to the blackboard's stored position. With a flee position update frequency of 5 seconds, the bestFleePosition
data source will get updated in a timely manner without any intervention from our flee behavior:
SoldierActions.lua
:
function SoldierActions_FleeInitialize(userData) local sandbox = userData.agent:GetSandbox(); local fleePosition = userData.blackboard:Get("bestFleePosition"...