Type Configuration
Last updated
Last updated
The types used by HFSM2 can be configured using parameterized hfsm2::MachineT<hfsm2::Config>
structure in place of default-configured hfsm2::Machine
, e.g.:
using M = hfsm2::MachineT<
hfsm2::Config
::ContextT<Empty>
::RandomT<hfsm2::XoShiRo128Plus>
>;
(from test_debug.cpp).
Once hfsm2::Config
is fully declared, it needs to be passed as a template argument into hfsm2::MachineT<>
to define configured HFSM2 parent struct containing all derivative types used in client code.
hfsm2::Config
customization points:Feature Define
Type
Used In
Default
ContextT<T>
Context& Control::context()
(see Context)
EmptyContext
HFSM2_ENABLE_UTILITY_THEORY
RankT<T>
Rank State::rank()
int8_t
HFSM2_ENABLE_UTILITY_THEORY
UtilityT<T>
Utility State::utility()
float
HFSM2_ENABLE_UTILITY_THEORY
RandomT<T>
Used internally by randomize()
transition and Random
region
RandomT<float>
SubstitutionLimitN<N>
Maximum number of times State::entryGuard()
methods are allowed to substitute the transition into their class for a transition into another one during the single *Root::update()
4
HFSM2_ENABLE_PLANS
TaskCapacityN<N>
Total number of tasks across all plans in an FSM
2x Number of Sub-States of All Composite Regions