using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
namespace UnityEngine.ProBuilder
{
    /// 
    /// 
    /// Enumerator for WingedEdge.
    /// Enumerates by walking the WingedEdge.next property.
    /// 
    public sealed class WingedEdgeEnumerator : IEnumerator
    {
        WingedEdge m_Start = null;
        WingedEdge m_Current = null;
        /// 
        public WingedEdgeEnumerator(WingedEdge start)
        {
            m_Start = start;
            m_Current = null;
        }
        /// 
        /// Move the current value to the next WingedEdge.
        /// 
        /// True if next is valid, false if not.
        /// 
        public bool MoveNext()
        {
            if (ReferenceEquals(m_Current, null))
            {
                m_Current = m_Start;
                return !ReferenceEquals(m_Current, null);
            }
            m_Current = m_Current.next;
            return !ReferenceEquals(m_Current, null) && !ReferenceEquals(m_Current, m_Start);
        }
        /// 
        public void Reset()
        {
            m_Current = null;
        }
        /// 
        public WingedEdge Current
        {
            get
            {
                try
                {
                    return m_Current;
                }
                catch (IndexOutOfRangeException)
                {
                    throw new InvalidOperationException();
                }
            }
        }
        /// 
        object IEnumerator.Current
        {
            get { return Current; }
        }
        /// 
        public void Dispose() {}
    }
}