public void StartMapping(string mapName)
        {
            // Opens a text file and starts streaming "{x} {y} {z} {angle} {collisionName}" entries into it,
            // depending on distance from existing values.

            string           timestamp    = DateTime.Now.ToString("yyyyMMdd_hhmm");
            List <GamePoint> allPositions = new List <GamePoint>();

            using (System.IO.StreamWriter file = new System.IO.StreamWriter($"{mapName}_{timestamp}.txt"))
            {
                Console.WriteLine("Press ESC to stop");
                do
                {
                    while (!Console.KeyAvailable)
                    {
                        GamePoint point = GetPositionInfo();
                        if (point != null && CheckDistance(point, allPositions))
                        {
                            if (!point.CollisionName.StartsWith("unknown"))
                            {
                                allPositions.Add(point);
                                Console.WriteLine(point);
                                file.WriteLine(point.ToString());
                            }
                            else
                            {
                                Console.WriteLine("UNKNOWN (not written) " + point.ToString());
                            }
                        }
                        Thread.Sleep(MappingInterval);
                    }
                } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
            }
        }