Netcode Bootstrap

This commit is contained in:
Luis Gonzalez
2026-05-31 14:27:52 -07:00
parent 99d8d2d2a9
commit 7fa77ce821
1813 changed files with 2921554 additions and 84 deletions
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using Unity.Rendering;
using UnityEngine;
using UnityEngine.Assertions;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
namespace Rukhanka.Toolbox
{
public class SparseUploaderPool: IDisposable
{
Stack<SparseUploader> freeUploaders;
List<SparseUploader> allUploaders;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public SparseUploaderPool()
{
freeUploaders = new ();
allUploaders = new ();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void Dispose()
{
foreach (var u in allUploaders)
{
u.Dispose();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void FrameCleanup()
{
foreach (var u in allUploaders)
{
u.FrameCleanup();
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public SparseUploader GetUploader(GraphicsBuffer gb)
{
SparseUploader rv;
if (freeUploaders.Count > 0)
{
rv = freeUploaders.Pop();
}
else
{
rv = new SparseUploader(gb);
allUploaders.Add(rv);
Assert.IsTrue(allUploaders.Count < 0xff, "Looks like 'PutUploader' call is forgotten somewhere! There are too much of created uploaders.");
}
rv.ReplaceBuffer(gb);
return rv;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void PutUploader(SparseUploader su)
{
freeUploaders.Push(su);
}
}
}