public void Step4_Join()
        {
            if (m_islands == null)
            {
                return;
            }
            if (!m_startSet)
            {
                return;
            }
            if (!m_endSet)
            {
                return;
            }

            int startHitIndex = SpriteIsland.HitIndex(m_islands, m_startx, m_starty);

            if (startHitIndex == -1)
            {
                return;
            }
            int endHitIndex = SpriteIsland.HitIndex(m_islands, m_endx, m_endy);

            if (endHitIndex == -1)
            {
                return;
            }

            SpriteIsland.Join(m_islands, startHitIndex, endHitIndex);
            SpriteIsland.JoinOverlaps(m_islands);
        }
        public void Step2_SetStart(int x, int y)
        {
            if (m_islands == null)
            {
                return;
            }

            int hitIndex = SpriteIsland.HitIndex(m_islands, x, y);

            m_startx   = x;
            m_starty   = y;
            m_startSet = hitIndex >= 0;
        }