Initial commit

This commit is contained in:
2026-03-03 00:39:30 +05:00
commit fc01f07d9b
29933 changed files with 5353098 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using UnityEngine.Assertions;
namespace UnityEditor.ShaderGraph
{
class PooledHashSet<T> : HashSet<T>, IDisposable
{
static Stack<PooledHashSet<T>> s_Pool = new Stack<PooledHashSet<T>>();
bool m_Active;
PooledHashSet() { }
public static PooledHashSet<T> Get()
{
if (s_Pool.Count == 0)
{
return new PooledHashSet<T> { m_Active = true };
}
var list = s_Pool.Pop();
list.m_Active = true;
#if DEBUG
GC.ReRegisterForFinalize(list);
#endif
return list;
}
public void Dispose()
{
Assert.IsTrue(m_Active);
m_Active = false;
Clear();
s_Pool.Push(this);
#if DEBUG
GC.SuppressFinalize(this);
#endif
}
// Destructor causes some GC alloc so only do this sanity check in debug build
#if DEBUG
~PooledHashSet()
{
throw new InvalidOperationException($"{nameof(PooledHashSet<T>)} must be disposed manually.");
}
#endif
}
}