Riff on UIManager.PreviousQuadsTransformPlayer
        static void DrawSpawnPoints() {
            if (!Debugging.Enabled || spawn_scores.Count == 0) {
                return;
            }

            Vector3 shipPos = GameManager.m_player_ship.c_transform_position;
            Vector3 forward = GameManager.m_player_ship.c_camera_transform.forward;
            Quaternion shipQuat = GameManager.m_player_ship.c_transform.localRotation;

            var max = spawn_scores.Select(s => s.Value).Max();

            foreach (var score in spawn_scores) {
                Vector3 spawnPos = score.Key.position;
                Vector3 vector;
                vector.x = spawnPos.x - shipPos.x;
                vector.y = spawnPos.y - shipPos.y;
                vector.z = spawnPos.z - shipPos.z;
                float dist = Mathf.Max(0.1f, vector.magnitude);

                int quad_index = UIManager.m_quad_index;
                Vector2 offset = Vector2.zero;

                Color color = UIManager.m_col_red;

                // offset.y = -80f / dist;
                offset.y = 2f;
                UIManager.DrawStringAlignCenter($"Spawn", offset, 1f, color, -1f);
                WorldText.PreviousQuadsTransformText(spawnPos, shipQuat, dist, quad_index);
            }
        }
        static void DrawSegmentNums() {
            if (!Debugging.Enabled) {
                return;
            }

            Vector3 shipPos = GameManager.m_player_ship.c_transform_position;
            Quaternion shipQuat = GameManager.m_player_ship.c_transform.localRotation;

            for (int i = 0; i < GameManager.m_level_data.Segments.Length; i++) {
                var seg = GameManager.m_level_data.Segments[i];
                Vector3 segCenter = seg.Center;
                Vector3 vector;
                vector.x = segCenter.x - shipPos.x;
                vector.y = segCenter.y - shipPos.y;
                vector.z = segCenter.z - shipPos.z;
                float dist = Mathf.Max(0.1f, vector.magnitude);
                vector.x /= dist;
                vector.y /= dist;
                vector.z /= dist;
                if ((bool)_UIManager_VisibilityRaycast_Method.Invoke(null, new object[] { shipPos, vector, dist })) {
                    int quad_index = UIManager.m_quad_index;
                    Vector2 offset = Vector2.zero;
                    offset.y = 2f;
                    UIManager.DrawStringAlignCenter($"{i}", offset, 1f, UIManager.m_col_white2, -1f);
                    WorldText.PreviousQuadsTransformText(segCenter, shipQuat, dist, quad_index);
                }
            }
        }