public override AsyncRequest <AvatarResources> GetResourcesAsync(AvatarResourcesSubset resourcesSubset, PipelineType pipelineType) { var request = new AsyncRequest <AvatarResources>(AvatarSdkMgr.Str(Strings.GettingResourcesList)); AvatarSdkMgr.SpawnCoroutine(GetResourcesFunc(resourcesSubset, pipelineType, request)); return(request); }
private IEnumerator GetResourcesFunc(AvatarResourcesSubset resourcesSubset, PipelineType pipelineType, AsyncRequest <AvatarResources> request) { if (avatarResourcesCache[pipelineType].ContainsKey(resourcesSubset)) { request.Result = avatarResourcesCache[pipelineType][resourcesSubset]; request.IsDone = true; } else { var resourcesWebRequest = connection.GetResourcesAsync(pipelineType, resourcesSubset); yield return(resourcesWebRequest); if (resourcesWebRequest.IsError) { Debug.LogError(resourcesWebRequest.ErrorMessage); request.SetError(resourcesWebRequest.ErrorMessage); yield break; } AvatarResources avatarResources = GetResourcesFromJson(resourcesWebRequest.Result); avatarResourcesCache[pipelineType].Add(resourcesSubset, avatarResources); request.IsDone = true; request.Result = avatarResources; } }
public abstract AsyncRequest <AvatarResources> GetResourcesAsync(AvatarResourcesSubset resourcesSubset, PipelineType pipelineType);
/// <summary> /// Request to get available resources for the pipeline /// </summary> public virtual AsyncWebRequest <string> GetResourcesAsync(PipelineType pipelineType, AvatarResourcesSubset resourcesSubset) { string subsetStr = "available"; if (resourcesSubset == AvatarResourcesSubset.DEFAULT) { subsetStr = "default"; } var url = GetUrl("resources", subsetStr, pipelineType.GetPipelineTypeName()); url = UrlWithParams(url, "pipeline_subtype", pipeline_subtype); var request = new AsyncWebRequest <string>(Strings.GettingResourcesList); AvatarSdkMgr.SpawnCoroutine(AwaitStringDataAsync(() => HttpGet(url), request)); return(request); }