Skip to content
Hierarchical Finite State Machine Framework with Planning Support
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CMake/modules
examples * fixed react() methods not able to complete plans May 12, 2019
external/catch2
include/hfsm2 * disabled clang 3.6 May 12, 2019
projects * fixed react() methods not able to complete plans May 12, 2019
test * fixed react() methods not able to complete plans May 12, 2019
tools + allow transitions into already active states, causing them to be re… Mar 20, 2019
.editorconfig + support blocking in-flight transitions in state's guard() method Nov 3, 2018
.gitignore + added utility theory-based transitions Apr 22, 2019
.travis.yml * disabled clang 3.6 May 12, 2019
CMakeLists.txt * fixed react() methods not able to complete plans May 12, 2019
CNAME Create CNAME Mar 13, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Jan 8, 2018
LICENSE Initial commit Apr 9, 2017
README.md * disabled clang 3.6 May 12, 2019
_config.yml Set theme jekyll-theme-minimal Mar 13, 2019
appveyor.yml * fixing appveyor builds Apr 23, 2019
hfsm.natvis ^ optimized composite region sub-state search with BST instead of lin… Apr 9, 2019

README.md

Standard License: MIT Build status Build Status codecov Coverage Status

HFSM2: Hierarchical Finite State Machine Framework with Planning Support

Header-only heriarchical FSM framework in C++14, completely static (no dynamic allocations), built with variadic templates.

Compiler Support

  • Visual Studio 14, 15, 16
  • GCC 5, 6, 7, 8
  • Clang 3.7, 3.8, 3.9, 4, 5, 6, 7

Tutorial

Check Wiki for basic usage and more info.


Feature Highlights

  • Permissive MIT License
  • Written in widely-supported modern(ish) C++11
  • Header-only
  • Fully static, no dynamic allocations
  • Uses inline-friendly compile-time pylymorphism, no virtual methods were harmed
  • Type-safe transitions: FSM.changeTo<TargetState>()
  • 100% NoUML-compliant
  • Hierarchical, with composite (sub-machine) and orthogonal regions
  • Gamedev-friendly, supports explicit State::update()
  • Also supports traditional event-based workflow with State::react()
  • Planning support.
  • Utility theory support.
  • Scaleable, supports state re-use via state injections
  • Debug-assisted, includes automatic structure and activity visualization API with #define HFSM_ENABLE_STRUCTURE_REPORT
  • Convenient, minimal boilerplate

Get Updates


Special Thanks

You can’t perform that action at this time.