private SpriteLoadingHandle(AssetInstance asset, SpriteAssetAssignment assignment, string path) { m_asset = asset; m_path = path; m_assignment = new WeakReference <SpriteAssetAssignment>(assignment); m_asset.OnStatusChanged += OnAssetStatusChanged; }
private static void TryApplySprite(SpriteAssetAssignment assignment, AssetInstance spriteAsset) { if (spriteAsset.Status == AssetRefObject.AssetStatus.DONE) { spriteAsset.IncRef(); assignment.Apply(spriteAsset.UnityObject as Sprite); } }
public void OnAssetUnloaded(AssetInstance asset) { lock ( m_loadedAssets ) { var index = m_loadedAssets.IndexOf(asset); if (index == -1) { return; } m_loadedAssets.RemoveSwapAt(index); } }
public void Execute(Type typ) { var hashCode = AssetInstance.GenerateHash(Location); Asset = Container.TryGetAsset(hashCode) as AssetInstance; if (Asset == null) { Asset = typ == typeof(GameObject) ? new PrefabAssetInstance(Location) : new AssetInstance(Location); } else if (Asset.IsFinished) { var service = CSharpServiceManager.Get <GlobalCoroutineRunnerService>(CSharpServiceManager.ServiceType.COROUTINE_SERVICE); service.StartCoroutine(AsyncLoadedAssetCallback()); return; } Asset.OnStatusChanged += OnAssetReady; if (Asset.Status == AssetRefObject.AssetStatus.ASYNC_LOADING) { return; } Asset.Status = AssetRefObject.AssetStatus.ASYNC_LOADING; Provider.ProvideAsync(this, typ); }
public void OnAssetLoaded(AssetInstance asset) { lock ( m_loadedAssets ) { m_loadedAssets.Add(asset); } }
public static SpriteLoadingHandle Create(SpriteAssetAssignment assignment, AssetInstance asset, string path) { return(new SpriteLoadingHandle(asset, assignment, path)); }