Switched a lot of stuff to shared pointers, getting rid of FreeCamera, started using pointer casting