void PolyThumbnailCallback(PolyAsset asset, PolyStatus status, OnActorableSearchResult resultCallback) { if (!status.ok) { Debug.Log("There is a problem with poly stuff"); return; } ActorableSearchResult _newresult = new ActorableSearchResult(); _newresult.forceConcave = true; // Do this for Poly models, for now. _newresult.preferredRotation = Quaternion.identity; // Don't do any actor-level scaling for any of these hash tags if (asset.description.Contains(TerrainBlockHashtag) || asset.description.Contains(NoAutoFitHashtag)) { _newresult.preferredScaleFunction = _ => new Vector3(1f, 1f, 1f); } else { // Do some custom tuned actor scale. _newresult.preferredScaleFunction = CalculatePreferredScale; } _newresult.renderableReference.assetType = AssetType.Poly; _newresult.name = asset.displayName; _newresult.renderableReference.uri = new PolyVoosAsset(asset.name).GetUri(); _newresult.thumbnail = asset.thumbnailTexture; resultCallback(_newresult); }
IEnumerator LoadThumbnail(ImageResult imageResult, OnActorableSearchResult resultCallback) { if (imageResult.thumbnailUrl.IsNullOrEmpty()) { yield break; } WWW temp = new WWW(imageResult.thumbnailUrl); yield return(temp); if (temp == null || !temp.error.IsNullOrEmpty()) { yield break; } ActorableSearchResult _newresult = new ActorableSearchResult(); _newresult.preferredRotation = Quaternion.identity; _newresult.preferredScaleFunction = (go) => new Vector3(1f, 1f, 1f); _newresult.renderableReference.assetType = AssetType.Image; _newresult.name = imageResult.name; _newresult.renderableReference.uri = new ImageVoosAsset(imageResult.url).GetUri(); _newresult.thumbnail = temp.texture; resultCallback(_newresult); }
public void Search( string _searchString, OnActorableSearchResult resultCallback) { //TODO: Cancel current search if still going? polySearchManager.Search(_searchString, resultCallback, (found) => { }); gisSearchManager.Search(_searchString, resultCallback, (found) => { }); }
public void Search(string searchstring, OnActorableSearchResult resultCallback, System.Action <bool> onComplete) { if (searchstring.Length == 0) { return; } StartCoroutine(SearchRoutine(searchstring, resultCallback, onComplete)); }
void PolyAssetCallback(PolyStatusOr <PolyAsset> result, OnActorableSearchResult resultCallback) { if (!result.Ok) { Debug.LogError("There is a problem with poly poly stuff" + result.Status.errorMessage); return; } PolyApi.FetchThumbnail(result.Value, (newasset, status) => PolyThumbnailCallback(newasset, status, resultCallback)); }
public void DefaultSearch(OnActorableSearchResult resultCallback) { PolyListAssetsRequest req = new PolyListAssetsRequest(); req.curated = true; req.maxComplexity = PolyMaxComplexityFilter.MEDIUM; req.orderBy = PolyOrderBy.BEST; req.pageSize = MAX_ASSETS_RETURNED; PolyApi.ListAssets(req, (result) => PolySearchCallback(result, resultCallback, null)); }
IEnumerator TestResultsRoutine(OnActorableSearchResult resultCallback) { int resultCount = Random.Range(2, 6); for (int i = 0; i < resultCount; i++) { yield return(new WaitForSeconds(Random.Range(.2f, .5f))); resultCallback(CreateTestResult()); } }
public void AddPrefabsProcessor(OnActorableSearchResult resultCallback) { foreach (ActorPrefab prefab in sceneActorLibrary.GetAll()) { resultCallback(TurnPrefabIntoSearchResult(prefab, AssetType.Actor)); } builtinPrefabLibrary.AddPrefabsProcessor((ActorPrefab prefab) => { resultCallback(TurnPrefabIntoSearchResult(prefab, AssetType.AssetPack)); }); }
IEnumerator SearchRoutine(string searchstring, OnActorableSearchResult resultCallback, System.Action <bool> onComplete) { string query = $"https://www.googleapis.com/customsearch/v1?key={APIkey}&cx={searchID}&q={searchstring}&searchType=image&rights={usageRights}&safe=active"; WWW temp = new WWW(query); yield return(temp); if (temp == null || !temp.error.IsNullOrEmpty() || temp.text == null) { yield break; } try { GISRawResult result = JsonUtility.FromJson <GISRawResult>(temp.text); if (result == null || result.items == null || result.items.Length == 0) { yield break; } int resultsLeft = MAX_ASSETS_RETURNED; int index = 0; bool anyfound = false; while (resultsLeft > 0) { string mime = result.items[index].mime; if (mime == "image/jpeg" || mime == "image/png") { anyfound = true; ImageResult imageResult = new ImageResult(result.items[index].link, result.items[index].image.thumbnailLink, result.items[index].title); StartCoroutine(LoadThumbnail(imageResult, resultCallback)); resultsLeft--; } index++; if (index >= result.items.Length) { break; } } onComplete?.Invoke(anyfound); } catch (System.ArgumentException) { // Probably bad result data - just ignore. } }
void PolySearchCallback(PolyStatusOr <PolyListAssetsResult> result, OnActorableSearchResult resultCallback, System.Action <bool> onComplete) { if (!result.Ok) { Debug.Log(result.Status); return; } onComplete?.Invoke(result.Value.assets.Count != 0); foreach (PolyAsset asset in result.Value.assets) { PolyApi.FetchThumbnail(asset, (newasset, status) => PolyThumbnailCallback(newasset, status, resultCallback)); } }
public void Search(string searchstring, OnActorableSearchResult resultCallback, System.Action <bool> onComplete) { // Special case: if the search string is a URL of a Poly asset, just return it. if (searchstring.Contains("poly.google.com/")) { SearchByPolyUrl(searchstring, resultCallback, onComplete); return; } PolyListAssetsRequest req = new PolyListAssetsRequest(); req.curated = true; req.keywords = searchstring; req.maxComplexity = PolyMaxComplexityFilter.MEDIUM; req.orderBy = PolyOrderBy.BEST; req.pageSize = MAX_ASSETS_RETURNED; PolyApi.ListAssets(req, (result) => PolySearchCallback(result, resultCallback, onComplete)); }
public void Search(string searchstring, OnActorableSearchResult resultCallback) { foreach (ActorPrefab prefab in sceneActorLibrary.GetAll()) { string stringForSearch = prefab.GetLabel().ToLower(); if (stringForSearch.Contains(searchstring.ToLower())) { resultCallback(TurnPrefabIntoSearchResult(prefab, AssetType.Actor)); } } foreach (ActorPrefab prefab in builtinPrefabLibrary.GetAll()) { string stringForSearch = prefab.GetLabel().ToLower(); if (stringForSearch.Contains(searchstring.ToLower())) { resultCallback(TurnPrefabIntoSearchResult(prefab, AssetType.AssetPack)); } } }
// Searches directly by Poly URL. private void SearchByPolyUrl(string polyUrl, OnActorableSearchResult resultCallback, System.Action <bool> onComplete) { string[] parts = polyUrl.Split('/'); string assetId = parts[parts.Length - 1]; PolyApi.GetAsset(assetId, result => { PolyListAssetsResult assetsResult; List <PolyAsset> assetList = new List <PolyAsset>(); if (result.Ok) { // Successfully got the asset. This is good. // Is it acceptably licensed? if (result.Value.license == PolyAssetLicense.CREATIVE_COMMONS_BY) { // Good license. We can use it. assetList.Add(result.Value); assetsResult = new PolyListAssetsResult(PolyStatus.Success(), 1, assetList); } else { // Not CC-By. Can't use it. Debug.LogError("This asset (" + assetId + ") is not licensed by CC-By. Try another asset."); assetsResult = new PolyListAssetsResult(PolyStatus.Error("Asset " + assetId + " is not licensed as CC-By."), 0, assetList); } } else { // Failed to get the asset. This is bad. assetsResult = new PolyListAssetsResult(PolyStatus.Error("Failed to get asset " + assetId), 0, assetList); } PolySearchCallback( new PolyStatusOr <PolyListAssetsResult>(assetsResult), resultCallback, onComplete); }); return; }
public void Search(string searchstring, OnActorableSearchResult resultCallback) { Debug.Log("poly search " + searchstring); testResultsRoutine = StartCoroutine(TestResultsRoutine(resultCallback)); }
public void RequestPolySearchResult(string polyID, OnActorableSearchResult resultCallback) { polySearchManager.RequestResultByID(polyID, resultCallback); }
public void PrefabSearch( string _searchString, OnActorableSearchResult resultCallback) { prefabSearchManager.Search(_searchString, resultCallback); }
public void AddPrefabsProcessor(OnActorableSearchResult resultCallback) { prefabSearchManager.AddPrefabsProcessor(resultCallback); }
public void DefaultSearch(OnActorableSearchResult resultCallback) { polySearchManager.DefaultSearch(resultCallback); gisSearchManager.Search("dog", resultCallback, null); }
public void RequestResultByID(string polyID, OnActorableSearchResult resultCallback) { PolyApi.GetAsset($"assets/{polyID}", (result) => PolyAssetCallback(result, resultCallback)); }