Move camera culling logic out to its own component