Movement:
For the most part movement is broadcasted at all times.
The server checks the validity of the movement and broadcasts it to nearby world objects.
On the client all locomotion related classes are located at the Assets\Scripts\Locomotion folder.
Client InputManager class:
The InputManager class is responsible for capturing all the keyboard and mouse inputs for the whole game.
As it is a generic class that loads at the begining of the game, it is located at Assets\Scripts\Scenes\Main folder.
All the imputs captured are stored at public variables.
It is essential that any class that checks for any input should use these variables.
Client MovementController class:
The MovementController class is used to move the player according to control inputs.
If the movement has changed, the information is sent to the server with a LocationUpdateRequest packet.
Client CameraController class:
The CameraController class is used to move the player camera according to control inputs.
No information is sent to the server, as it is specifically related to the client.
Client AnimationController class:
The AnimationController class is used to play specific animations according to control inputs.
If an animation state has changed, the information is sent to the server with an AnimatorUpdateRequest packet.