Files
2026-07-13 13:13:17 +08:00

60 lines
1.7 KiB
C#

#nullable enable
using System.Collections.Generic;
using T3.Core.Utils;
namespace T3.Core.Resource;
/// <summary>
/// File handler and GPU resource generator.
/// </summary>
/// 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<IResourcePackage> SharedResourcePackages => _sharedResourcePackages;
private static readonly List<IResourcePackage> _sharedResourcePackages = new(4);
/// <summary>
/// Called at the beginning of each frame.
/// </summary>
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<ResourceFileWatcher> _fileWatchers = [];
}