private void StopAndResetLoadingTask() { if (m_LoadingTask == null) { return; } Owner.StopAndResetResourceLoadingTask(m_LoadingTask); m_LoadingTask = null; }
internal override void OnSlotReady() { if (Status != ResourceCacheStatus.WaitingForSlot) { throw new InvalidOperationException($"Oops! '{nameof(OnSlotReady)}' cannot be called on status '{Status}'."); } m_LoadingTask = Owner.RunResourceLoadingTask(Path, ShouldLoadFromReadWritePath ? Owner.ReadWritePath : Owner.InstallerPath); InternalLog.DebugFormat("[ResourceCache Update] {0} start loading", Path); Status = ResourceCacheStatus.Loading; StartTicking(); }
protected override void Update(TimeStruct timeStruct) { switch (Status) { case ResourceCacheStatus.WaitingForSlot: if (Owner.m_RunningResourceLoadingTasks.Count < Owner.m_RunningResourceLoadingTasks.Capacity) { m_LoadingTask = Owner.RunResourceLoadingTask(Path, ShouldLoadFromReadWritePath ? Owner.ReadWritePath : Owner.InstallerPath); CoreLog.DebugFormat("[ResourceCache Update] {0} start loading", Path); Status = ResourceCacheStatus.Loading; } break; case ResourceCacheStatus.Loading: if (!string.IsNullOrEmpty(m_LoadingTask.ErrorMessage)) { ErrorMessage = m_LoadingTask.ErrorMessage; CoreLog.DebugFormat("[ResourceCache Update] {0} loading fail", Path); FailAndNotify(); } else if (m_LoadingTask.IsDone) { ResourceObject = m_LoadingTask.ResourceObject; CoreLog.DebugFormat("[ResourceCache Update] {0} loading success", Path); SucceedAndNotify(); } break; default: break; } }
private void StopAndResetResourceLoadingTask(ResourceLoadingTask task) { m_RunningResourceLoadingTasks.Remove(task); task.OnReset(); m_ResourceLoadingTaskPool.Release(task); }