void DrawBoundary()
    {
        if (m_BoundaryLineRenderer == null)
        {
            m_BoundaryLineRenderer            = gameObject.AddComponent(typeof(LineRenderer)) as LineRenderer;
            m_BoundaryLineRenderer.startWidth = 0.05f;
            m_BoundaryLineRenderer.endWidth   = 0.05f;
        }

        List <Vector3> BoundaryPoints = new List <Vector3>();

        if (!m_InputSubsystem.TryGetBoundaryPoints(BoundaryPoints))
        {
            SetStatus("Error! TryGetBoundaryPoints failed!");
            return;
        }
        else
        {
            if (m_BoundaryPointVisualizers == null)
            {
                m_BoundaryPointVisualizers = new List <GameObject>();
            }
            else
            {
                for (int i = 0; i < m_BoundaryPointVisualizers.Count; i++)
                {
                    Destroy(m_BoundaryPointVisualizers[i]);
                }
                m_BoundaryPointVisualizers.Clear();
            }

            for (int i = 0; i < BoundaryPoints.Count; i++)
            {
                GameObject NewGameObject = GameObject.CreatePrimitive(PrimitiveType.Sphere);
                NewGameObject.name = m_InputSubsystem.ToString() + "BoundaryPoint" + i;
                NewGameObject.transform.SetParent(m_ParentForBoundaryPoints);
                NewGameObject.transform.localPosition = BoundaryPoints[i];
                NewGameObject.transform.localScale    = new Vector3(0.05f, 0.05f, 0.05f);
                m_BoundaryPointVisualizers.Add(NewGameObject);

                if (i == 0)
                {
                    NewGameObject.GetComponent <MeshRenderer>().material.color = Color.green;

                    GameObject Signpost = new GameObject();
                    Signpost.transform.SetParent(NewGameObject.transform);
                    Signpost.transform.localPosition = Vector3.zero;

                    Signpost.AddComponent <Billboard>();

                    TextMesh StartText = Signpost.AddComponent <TextMesh>();
                    StartText.text          = ("Start of boundary\n for XRInputSubsystem " + m_SystemNumber);
                    StartText.alignment     = TextAlignment.Center;
                    StartText.anchor        = TextAnchor.MiddleCenter;
                    StartText.fontSize      = 120;
                    StartText.characterSize = 0.01f;
                    StartText.color         = Color.green;
                }
            }

            m_BoundaryLineRenderer.positionCount = BoundaryPoints.Count;
            m_BoundaryLineRenderer.SetPositions(BoundaryPoints.ToArray());
        }
    }