4,348 Commits over 1,919 Days - 0.09cph!
Added AIMemoryBank<T>.
Added AIMemory,
Pass memory to event execution.
Updated test events to use memory.
Execeution rate tweaks.
Event fix.
Added event owners.
More test events.
Added PostExecute.
Clear accumulated delta times correctly.
Separated tick and execution.
Added execution rate limiting.
Events accumulate delta time between executions.
AIEventData basics. Events trigger. Test data.
wip AI state events & listener.
wip brain/state separation
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 naviator shelved changesets
Applied GetBestRoamPosition changes
Reapply a ch47 fix from main in
54149
▌▄▌▌▉ ▍▅▌ ▉▋▇▉▉ ▊▍ ▊█▅▅ ▄▇▆▉█ ▇▌▌
Tooltips now append "Blueprint" to item name if it is a blueprint.
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.
Added "Tools/Scene/Focus Local Player" to select the LocalPlayer object and focus the scene view on it, useful for when testing in large/slow scenes.
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).
Updated scrap tea item descriptions, changed bonus scrap spawn pos.
Disable ingredient tooltip when there's no ingredient in a slot, to prevent blank tooltips
merge new mixing table UI to main
Increase item name width, disable auto width size
Disable auto size height on recipe item name.
Apply Alistair's text height fix for name translations.
Hovering produced item icon shows the item description as a tooltip