Initial refactoring of the interaction system to better lay the groundwork for interaction replication.
Very rough untested draft as of now, changes include:
Action/Hover now inherit from a BaseBehaviour which can save shared information, and adds some basic replication properties.
Adds a BaseInteractionComponent which similarly to the BaseBehaviour contains replication and some general properties shared by both direct and ray interactors.
Start/End functions have been condensed into one, and an Enum now separates the two. This reduces code duplication especially for replication by a lot.
Adjusts other components such as intenselect to the new refactoring
Callback for Behaviours that only executes on the originating client
GrabBehaviour adjusted to replicate correctly
Missing changes:
Test the whole thing:
Standalone seems to work fine
Dedicated server grab
Direct Interaction for
VR Grab
Grab seems to work fine for desktop Listen server + 2 clients
Cave Grav
Desktop + VR + Cave + Dedicated server Grab
Raycast Interaction for
Desktop Grab
Cave Grab
VR Grab
Desktop + VR + Cave + Dedicated server Grab
Documentation and comments, especially the replication part
Adjust blueprints and any other uassets
Actually consider the replication process and add some more callbacks and events that can be used
Naming scheme is wild
Does it even make sense like this? This is just one possible approach