public boolean changeLocation(ReadOnlyVector3 loc){
  if (!locInBounds(loc))   return (false);
  lookAt.set(camera.getDirection());
  lookAt.scaleAddLocal(camera.getDistanceToCoR(),loc);
  camera.setLocation(loc);
  camera.setLookAt(lookAt);
  updateFromCamera();
  updateCrosshair();
  updateGeometricState(0);
  changed.set(true);
  return (true);
}

public boolean changeLocation ( ReadOnlyVector3 loc ) { if ( ! locInBounds ( loc ) ) return ( false ) ; lookAt . set ( camera . getDirection ( ) ) ; lookAt . scaleAddLocal ( camera . getDistanceToCoR ( ) , loc ) ; camera . setLocation ( loc ) ; camera . setLookAt ( lookAt ) ; updateFromCamera ( ) ; updateCrosshair ( ) ; updateGeometricState ( 0 ) ; changed . set ( true ) ; return ( true ) ; }
change the location of the viewpoint while retaining the direction .
