/// <summary> /// Advances the enumerator to the next element of the <see cref="SerializedObjectView"/>. /// </summary> /// <returns>true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection.</returns> public bool MoveNext() { var startIndex = m_Stream.GetTokenIndex(m_Start); var startToken = m_Stream.GetToken(startIndex); if (startToken.Length == 1) { return(false); } if (m_Current.Index == -1) { m_Current = m_Stream.GetFirstChild(m_Start); return(true); } if (!m_Stream.IsValid(m_Current)) { return(false); } var currentIndex = m_Stream.GetTokenIndex(m_Current); var currentToken = m_Stream.GetToken(currentIndex); if (currentIndex + currentToken.Length >= startIndex + startToken.Length) { return(false); } m_Current = m_Stream.GetHandle(currentIndex + currentToken.Length); return(true); }
internal UnsafeObjectView AsUnsafe() => new UnsafeObjectView(m_Stream.AsUnsafe(), m_Stream.GetTokenIndex(m_Handle));