Description
Release Type: Github
Version: commit onward
Platform(s): Any
Describe the bug Most controllers do not handle inputs correctly and are written in an overly complex manner: Here are some example issues that first person has:
- this function should be simplified and or clarified.
- Desired* and rotationAdaptation both are pointless, they cannot be modified from an outside source and don't impact the camera in a meaningful way.
- Offset current entity rotation instead of relying on variables internal to the script, this would allow for multiple scripts to rotate the camera for cut-scenes and the likes.
Same for third person:
- Inaccurate comment
- Usage of physics delta time outside the physics loop.
- Usage of a delta time on potential mouse input, as that delta is the physics one it's fine as long as it's constant but completely pointless, that receiver has to be split between offset(mouse and gestures) and direction based(stick and buttons) see the changes made to fix BasicCameraController for more information about this point.
- Non linear usage of lerp(using the result of the operation as the start value + using a non delta time value for the 't' parameter) this will lead to vastly different results between differing frame-rate.
- Make those variables configurable
Now Orbit / Sidescroller:
- Shares a bunch of issues with the two above.
- Escape should always unlock
There is a general lack of polish
Comments in all of those files aren't straightforward enough, it shouldn't just explain what the line does but also why we have to include it. If even the guy who wrote those files couldn't get them right there's a very big chance that most programmers won't, knowing that we might as well document thoroughly how camera controllers are implemented and what users should do when modifying or creating one to avoid those kind of issues. Again, check the changes that BasicCameraController as gone through for an idea of what we should strive for.
Additional context PR #359