private void triggerSearch()
        {
            if (framesSinceLastSearch < nbFrameSearchCooldown)
            {
                return;
            }

            if (_skfbWin != null)
            {
                _skfbWin.Close();
            }

            string licenseSmug;

            switch (_licenseIndex)
            {
            case 0:
                licenseSmug = "";
                break;

            case 1:
                licenseSmug = "by";
                break;

            case 2:
                licenseSmug = "by-sa";
                break;

            case 3:
                licenseSmug = "by-nd";
                break;

            case 4:
                licenseSmug = "by-nc";
                break;

            case 5:
                licenseSmug = "by-nc-sa";
                break;

            case 6:
                licenseSmug = "by-nc-nd";
                break;

            case 7:
                licenseSmug = "cc0";
                break;

            default:
                licenseSmug = "";
                break;
            }

            SORT_BY sort;

            switch (_sortByIndex)
            {
            case 0:
                sort = SORT_BY.RELEVANCE;
                break;

            case 1:
                sort = SORT_BY.LIKES;
                break;

            case 2:
                sort = SORT_BY.VIEWS;
                break;

            case 3:
                sort = SORT_BY.RECENT;
                break;

            default:
                sort = SORT_BY.RELEVANCE;
                break;
            }
            // Point clouds are not supported in Unity so check that polycount is not 0
            // here. It won't prevent model that are parially point clouds but it's better
            // than nothing
            string _minFaceCount = "1";
            string _maxFaceCount = "";

            switch (_polyCountIndex)
            {
            case 0:
                break;

            case 1:
                _maxFaceCount = "10000";
                break;

            case 2:
                _minFaceCount = "10000";
                _maxFaceCount = "50000";
                break;

            case 3:
                _minFaceCount = "50000";
                _maxFaceCount = "100000";
                break;

            case 4:
                _minFaceCount = "100000";
                _maxFaceCount = "250000";
                break;

            case 5:
                _minFaceCount = "250000";
                break;
            }

            SEARCH_ENDPOINT endpoint = SEARCH_ENDPOINT.DOWNLOADABLE;

            switch (_searchInIndex)
            {
            case SEARCH_IN.MY_MODELS:
                endpoint = SEARCH_ENDPOINT.MY_MODELS;
                break;

            case SEARCH_IN.MY_STORE_PURCHASES:
                endpoint = SEARCH_ENDPOINT.STORE_PURCHASES;
                break;

            default:
                endpoint = SEARCH_ENDPOINT.DOWNLOADABLE;
                break;
            }

            _browserManager.search(_query, _staffpicked, _animated, _categoryName, licenseSmug, _maxFaceCount, _minFaceCount, endpoint, sort);
            framesSinceLastSearch = 0.0f;
        }
Ejemplo n.º 2
0
        public void search(string query, bool staffpicked, bool animated, string categoryName, string licenseSmug, string maxFaceCount = "", string minFaceCount = "", SEARCH_ENDPOINT endpoint = SEARCH_ENDPOINT.DOWNLOADABLE, SORT_BY sortBy = SORT_BY.RECENT)
        {
            reset();
            string searchQuery = "";

            switch (endpoint)
            {
            case SEARCH_ENDPOINT.DOWNLOADABLE:
                searchQuery = SketchfabPlugin.Urls.searchEndpoint;
                break;

            case SEARCH_ENDPOINT.MY_MODELS:
                searchQuery = SketchfabPlugin.Urls.ownModelsSearchEndpoint;
                break;

            case SEARCH_ENDPOINT.STORE_PURCHASES:
                searchQuery = SketchfabPlugin.Urls.storePurchasesModelsSearchEndpoint;
                break;
            }
            if (endpoint != SEARCH_ENDPOINT.STORE_PURCHASES)
            {
                // Apply default filters
                searchQuery = searchQuery + "type=models&downloadable=true";
            }

            if (query.Length > 0)
            {
                if (endpoint != SEARCH_ENDPOINT.STORE_PURCHASES)
                {
                    searchQuery = searchQuery + "&";
                }

                searchQuery = searchQuery + "q=" + query;
            }

            // Search filters are not available for store purchases
            if (endpoint != SEARCH_ENDPOINT.STORE_PURCHASES)
            {
                searchQuery = applySearchFilters(searchQuery, staffpicked, animated, categoryName, licenseSmug, maxFaceCount, minFaceCount);
                switch (sortBy)
                {
                case SORT_BY.RECENT:
                    searchQuery = searchQuery + "&sort_by=" + "-publishedAt";
                    break;

                case SORT_BY.VIEWS:
                    searchQuery = searchQuery + "&sort_by=" + "-viewCount";
                    break;

                case SORT_BY.LIKES:
                    searchQuery = searchQuery + "&sort_by=" + "-likeCount";
                    break;
                }
            }

            _lastQuery = searchQuery;

            startSearch();
            _isFetching = true;
        }