I have a few sweeping changes that I would like to make to the plugin to make it more fluid. I have been holding back on them because it would cause people to have to re-do parts of their projects in order to switch to the new setups. Figured I would throw what I would “like” to do in here, with the up and downsides to it and then get feedback on if its worth the pain of transitioning projects to the new methods.
All of these are things that can totally stay “as is” without hurting things too much, however I keep them on my personal list of “Hate” due to either being outdated with new features that have been added, or just not being as robust as I would like now that the plugin has matured more.
**#1: Switch the Interface OnUsed / EndUsed / OnUsed Secondary / EndUsed Secondary events into a singular event instead with enums and more flexibility. **
OnUsedEvent - Type Of use (Start, Stop, ect) - Identifier (Primary, Secondary, Custom1, ect).
**Upsides: **
More input possibilities into interfaced objects without custom interfaces or casting,
more flexibility,
a smaller less bloated interface signature (one event instead of 4)
Downsides:
All current uses of OnUsed and OnEndUsed would have to be switched over to the new format.
**#2: Switch the bIsInteractible boolean into a custom nested struct **
Upsides:
During initial grip info replication none of the interactible settings would replicate unless the boolean is ticked to true, would save on load up bandwidth,
I could more directly control replication of these items,
Downsides:
All interactible objects would need to have references to the boolean re-set as it would move,
All interactible settings would need to be re-made
**#3: Change Initial/Min/ interactible settings location variables to a compressed form **
Upsides:
Would greatly lower bandwidth when sending them
Downsides:
I already tried once, the editor does not recognize them as being the same base type and all current settings are lost and would have to be re-entered.
*Note: If done at once, #2 and #3’s downsides would all happen at once since they overlap and would be less painful *
**#4 (Extreme, not likely, but wishful): Entirely remove the interaction settings **
Why:
Now with the custom grip and the c++ Button, Dial, Lever there is actually very little reason to retain the old interactible settings, they are essentially outdated.
All of their functionality can be re-created with a custom grip, and with more fine grained control over how they behave (though requiring some more work).
Upsides:
Far less grip structure bloat,
Far less replicated variables,
A faster tick on the Motion controllers as they don’t have to check for bIsInteractible every time using an interface call,
I would be forced to basically finish the c++ versions and make slides / drawers and the like to cover what would be then missing.
Downsides:
No more entering a few variables for working drawers and sliders, would have to use base classes that I make or make your own using the custom grip (not hard to do though),
All current objects that rely on interactible settings would need re-made.