/
TON618OFF
/
Unity-Project-RTU
Обзор
Документация
Войти
/
TON618OFF
/
Unity-Project-RTU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Library/PackageCache/com.unity.visualscripting@1.9.4/Runtime/VisualScripting.Core/Graphs/GraphStack.cs
117 строк
3 KB
TON618OFF
release
03 окт 2024, 22:20
03 окт 2024, 22:20
7c70e9f
Код
Авторство
О чём код?
using System; using System.Collections.Generic; namespace Unity.VisualScripting { public sealed class GraphStack : GraphPointer, IPoolable, IDisposable { #region Lifecycle private GraphStack() { } private void InitializeNoAlloc(IGraphRoot root, List<IGraphParentElement> parentElements, bool ensureValid) { Initialize(root); Ensure.That(nameof(parentElements)).IsNotNull(parentElements); foreach (var parentElement in parentElements) { if (!TryEnterParentElement(parentElement, out var error)) { if (ensureValid) { throw new GraphPointerException(error, this); } else { break; } } } } internal static GraphStack New(IGraphRoot root, List<IGraphParentElement> parentElements) { var stack = GenericPool<GraphStack>.New(() => new GraphStack()); stack.InitializeNoAlloc(root, parentElements, true); return stack; } internal static GraphStack New(GraphPointer model) { var stack = GenericPool<GraphStack>.New(() => new GraphStack()); stack.CopyFrom(model); return stack; } public GraphStack Clone() { return New(this); } public void Dispose() { GenericPool<GraphStack>.Free(this); } void IPoolable.New() { } void IPoolable.Free() { root = null; parentStack.Clear(); parentElementStack.Clear(); graphStack.Clear(); dataStack.Clear(); debugDataStack.Clear(); } #endregion #region Conversion public override GraphReference AsReference() { return ToReference(); } public GraphReference ToReference() { return GraphReference.Intern(this); } internal void ClearReference() { GraphReference.ClearIntern(this); } #endregion #region Traversal public new void EnterParentElement(IGraphParentElement parentElement) { base.EnterParentElement(parentElement); } public bool TryEnterParentElement(IGraphParentElement parentElement) { return TryEnterParentElement(parentElement, out var error); } public bool TryEnterParentElementUnsafe(IGraphParentElement parentElement) { return TryEnterParentElement(parentElement, out var error, null, true); } public new void ExitParentElement() { base.ExitParentElement(); } #endregion } }