I notice that FirstPersonControls::Start() is being called five times.
If I put this code in the update function, I can see there are two copies of the object being updated each frame:
void FirstPersonControls::Update()
{
Print(uint64_t(this));
1681950787280
1681952725632
1681950787280
1681952725632
1681950787280
1681952725632
1681950787280
Let me figure out why...