Mostly working + mouse control

Implemented all the required features (there are still artifacts for
some reason)
Implemented basic mouse control (other than rotate, which is still
breaking).