#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 = []; }