#nullable enable
using System.Collections.Generic;
using T3.Core.Utils;
namespace T3.Core.Resource;
///
/// File handler and GPU resource generator.
///
/// Todo: Should probably be split into multiple classes
public static class ResourcePackageManager
{
static ResourcePackageManager()
{
}
internal static void AddSharedResourceFolder(IResourcePackage resourcePackage, bool allowSharedNonCodeFiles)
{
_sharedResourcePackages.Add(resourcePackage);
resourcePackage.AssetsFolder.ToForwardSlashesUnsafe();
}
internal static void RemoveSharedResourceFolder(IResourcePackage resourcePackage)
{
_sharedResourcePackages.Remove(resourcePackage);
}
public static IReadOnlyList SharedResourcePackages => _sharedResourcePackages;
private static readonly List _sharedResourcePackages = new(4);
///
/// Called at the beginning of each frame.
///
public static void RaiseFileWatchingEvents()
{
// Dispatched to main thread
lock (_fileWatchers)
{
foreach (var fileWatcher in _fileWatchers)
{
fileWatcher.RaiseQueuedFileChanges();
}
}
}
internal static void UnregisterWatcher(ResourceFileWatcher resourceFileWatcher)
{
lock (_fileWatchers)
_fileWatchers.Remove(resourceFileWatcher);
}
internal static void RegisterWatcher(ResourceFileWatcher resourceFileWatcher)
{
lock (_fileWatchers)
_fileWatchers.Add(resourceFileWatcher);
}
private static readonly List _fileWatchers = [];
}