Closed WhiteMagic closed 1 year ago
This evolved to entirely remove the action tree as actions themselves reference other actions that they utilize, making the tree redundant. Now only actions exist with root actions that start the collection of actions assigned to an input.
Profile structure has now been refactored, removing the old ActionTree
instance and wrapping everything in an explicit tree structure. Actions now reference other actions as needed, implicitly forming a tree structure that starts at the root action associated with every InputItemBinding
instance.
Furthermore, all actions are split into a data class and a QML model class, making the separation between data storage and UI representation and interaction explicit.
The current profile architecture is made up of a library that holds action trees that specify the actions to execute. These entries are linked to physical inputs and their relevant configurations. This works as desired for actions that operate on a singular input, however, multi-input actions cannot be supported by such a setup. Of the various options to support multi-input actions, such as a merge axis, adding the ability to share the same action across different action trees is the most sensible one.
For this reason, the profile structure needs to be modified such that the library contains a list of uniquely identifiable actions, which are then referenced in the action tree setup to construct an executable action sequence. The benefit is that this setup permits a single action to be used in more than one action tree without cumbersome synchronization and consistency checking of the action's configuration.