コード例 #1
0
ファイル: DataManager.cs プロジェクト: gicait/ur-scape
    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);
        }
    }
コード例 #2
0
ファイル: DataManager.cs プロジェクト: gicait/ur-scape
    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);
        }
    }