SS3D
SS3D copied to clipboard
Make interaction use the shader based system for selection
Summary
Examine is using at its core a shader based method to select items as opposed to the classic collider based method. This method is ideal both to examine and to perform any other kind of interactions really. We would like the examine object selection method to be integrated with the interaction system, which currently uses simple colliders.
Interaction controller will need some rework, as we don't want the server to simply apply the same method as client, it would mean recomputing every shaders on server for each client which is hell.
However, security should be taken into account too, at least a bit. Server needs to do some check before allowing clients to run interaction.
Docs
Some concerns were raised in a previous attempt, you can find them here : https://github.com/RE-SS3D/SS3D/pull/842
and here : https://github.com/RE-SS3D/SS3D/pull/839
Regarding performance, there might be some inspiration here : https://medium.com/@philippchristoph/pixel-perfect-selection-using-shaders-16070d3094d
Here's ryan doc on the examine system https://docs.google.com/document/d/1xTyRXzi1g7H3SOkw1wkrFFbMcDUA0VEE/edit
Goal
The PR solving this should check the following :
- [ ] A game object should be able to be examinable and interactive at the same time.
- [ ] If a game object is examinable, and a child of it is interactive, moving the cursor over the interactive part should still display things about the parent game object, unless the child game object has its own examinable thing.
- [ ] The interaction system should have a great reactivity, at worst, a delay of one frame is acceptable but not more.
- [ ] It should be possible to interact with items behind colliders, like pipes behind the plenum colliders.