private void RequestFinished(ResourceRequest r, PatchLoadRequestCallback callback) { var request = r as PatchRequest; if (request.State == RequestState.Canceled) { // Canceled patch requests may still have a loaded patch. Add it to the cache since its no longer needed if (request.patch.Data.IsLoaded()) { AddToCache(request.patch); } } else { requestedPatches.Remove(request.patch); if (request.State == RequestState.Succeeded) { var bounds = map.MapCoordBounds; var patch = request.patch; bool isInView = patch.Level == map.CurrentLevel && patch.Data.Intersects(bounds.west, bounds.east, bounds.north, bounds.south); callback(patch, isInView); } #if SAFETY_CHECK else { Debug.LogError("Requested patch '" + request.file + "' finished with state: " + request.State); if (!string.IsNullOrEmpty(request.Error)) { Debug.LogError("Requesting error: " + request.Error); } } #endif } UpdatePatchLoadingMessage(); if (map.patchRequestHandler.TotalCount == 0) { maxRequests = 0; loadingComponent.Show(false); } }
public void RequestPatch(Patch patch, PatchLoadRequestCallback callback) { #if SAFETY_CHECK if (requestedPatches.ContainsKey(patch)) { Debug.LogWarning("This shouldn't happen: this patch is already being requested: " + patch.Filename); return; } #endif var request = new PatchRequest(patch, (r) => RequestFinished(r, callback)); requestedPatches.Add(patch, request); // Queue the patch request map.patchRequestHandler.Add(request); UpdatePatchLoadingMessage(); if (map.patchRequestHandler.TotalCount == 1) { loadingComponent.Show(true); } }