vanceFocus :: IORef ProgramState -> IO ()
advanceFocus ps = do
  p <- get ps
  let (points, n) = p ^. cameraFocus
  ps $$! p & cameraFocus . _2 %~ if n >= (length points - 1)
                                 then const 0
                                 else (+ 1)

-- | Keyboard and mouse callback. Deals with flag toggling and camera shifting.
k
advanceFocus :: IORef ProgramState -> IO ()
advanceFocus ps = do
  p <- get ps
  let (points, n) = p ^. cameraFocus
  ps $$! p & cameraFocus . _2 %~ if n >= (length points - 1)
                                 then const 0
                                 else (+ 1)

-- | Keyboard and mouse callback. Deals with flag toggling and camera shifting.
advanceFocus ps = do
  p <- get ps
  let (points, n) = p ^. cameraFocus
  ps $$! p & cameraFocus . _2 %~ if n >= (length points - 1)
                                 then const 0
                                 else (+ 1)

-- | Keyboard and mouse callback. Deals with flag toggling and camera shifting.