using System; using UnityObject = UnityEngine.Object; namespace Unity.VisualScripting { public sealed class ThreadableAssetWrapper where T : UnityObject { public ThreadableAssetWrapper(T asset) { Ensure.That(nameof(asset)).IsNotNull(asset); if (!UnityThread.allowsAPI) { throw new InvalidOperationException("Threadable asset wrappers must be created on the main thread."); } this.asset = asset; name = asset.name; } public T asset { get; } public string name { get; } public static implicit operator T(ThreadableAssetWrapper wrapper) { return wrapper.asset; } } }