Exemple #1
0
    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));
 }
Exemple #5
0
 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));
 }
Exemple #6
0
    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.
        }
    }
Exemple #10
0
    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));
        }
    }
Exemple #11
0
    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));
            }
        }
    }
Exemple #13
0
    // 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);
 }
Exemple #19
0
 public void RequestResultByID(string polyID, OnActorableSearchResult resultCallback)
 {
     PolyApi.GetAsset($"assets/{polyID}", (result) => PolyAssetCallback(result, resultCallback));
 }