private bool UpdateRoundPen()
    {
        if (m_currentPenEdges.Count == 0)
        {
            return(false);
        }
        bool updated = false;

        for (int i = 0; i < m_currentPenEdges.Count; i++)
        {
            PenEdge    penEdge     = m_currentPenEdges[i];
            IntVector2 penPosition = WorldPositionToBoardPosition(penEdge.transform.position);

            if (!penEdge.hasCork)
            {
                Circle from = new Circle();
                from.center = m_penLastPositions[penEdge];
                from.radius = penEdge.width;

                Circle to = new Circle();
                to.center = penPosition;
                to.radius = from.radius;

                DrawCircleLine(from, to, penEdge.color, 3);

                updated = true;
            }

            m_penLastPositions[penEdge] = penPosition;
        }

        return(updated);
    }
    private void OnTriggerExit(Collider other)
    {
        PolygonPen polygonPen = other.GetComponentInParent <PolygonPen>();

        if (polygonPen)
        {
            m_registredPolygonPenPoints.Remove(other.transform);
            if (!ContainsAnyPointOf(polygonPen))
            {
                m_registredPolygonPens.Remove(polygonPen);
                m_registredPolygonPensLastPosition.Remove(polygonPen);
            }
        }
        else
        {
            PenEdge penEdge = other.GetComponent <PenEdge>();
            if (penEdge)
            {
                m_currentPenEdges.Remove(penEdge);
                m_penLastPositions.Remove(penEdge);
            }
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        PolygonPen polygonPen = other.GetComponentInParent <PolygonPen>();

        if (polygonPen)
        {
            m_registredPolygonPenPoints.Add(other.transform);
            if (!m_registredPolygonPens.Contains(polygonPen))
            {
                m_registredPolygonPens.Add(polygonPen);
                m_registredPolygonPensLastPosition.Add(polygonPen, polygonPen.transform.position);
            }
        }
        else
        {
            PenEdge penEdge = other.GetComponent <PenEdge>();
            if (penEdge)
            {
                m_currentPenEdges.Add(penEdge);
                m_penLastPositions.Add(penEdge, WorldPositionToBoardPosition(penEdge.transform.position));
            }
        }
    }