branchrust_reboot/main/ai_test_changescancel
24 Commits over 31 Days - 0.03cph!
Added CanEnter and CanLeave to states.
Only include states that can be entered when scoring weights.
Added AIStateScore with some pre-defined weight bands and increments.
BaseAIBrain.Debug.
Applied GetBestRoamPosition changes
Reapply a ch47 fix from main in
54149
State history rendering and convars
Added setdestination_navmesh_failsafe convar, npcs will attempt to place themselves on a navmesh when setdestination is called and they're not currently bound to navmesh.
Added a warning when warping to a valid navmesh location but still not binding to it (mismatching agent type) to make it more obvious what's going wrong.
Moved GetBestRoamPosition from HumanNPC to AIInformationZone, optimised the loop checks.
StateDebugInfo now tracks state change type (enter/exit) and the world position at which the AI state changed.
Added StateDebugInfo, keep a history of the last 20 states and durations for a brain. (editor only)
Pulled HumanBrain / CH47Brain states out into partials instead of the main brain files, to make it clearer what's common and not.
Removed some calculations on variables that never get used, distance checks, inverseloops etc.
Some basic state cleanup.
Added AIThinkMode to base brain, all brains can set their think mode: interval or fixed update, as well as individual tick rates.
Moved a bunch of ShouldThink/DoThink logic to base brain so it can be used by all brains instead of each having its own delta implementation, age tracking etc.
Added "time in current state" to debug display.
Moved brain states to a new shared enum, AIState. State constructors set type.
AddState no longer requires a type parameter.
States are now automatically maintained, in a dictionary.
Reworked current state handling to be a state ref, not using array indexes.
Hooked up gizmo drawing to brain, calls it on any active state for debugging.
Added basic debug rendering info to base brain (current state name for now).