public void loadFilter(string selectedFilter, string staticFilter = "") { ArrayObject MatEdScheduleArray = "MatEdScheduleArray"; ArrayObject MatEdPreviewArray = "MatEdPreviewArray"; GuiDynamicCtrlArrayControl materialSelection = this.FOT("materialSelection"); GuiStackControl materialPreviewPagesStack = this.FOT("materialPreviewPagesStack"); GuiPopUpMenuCtrlEx materialPreviewCountPopup = this.FOT("materialPreviewCountPopup"); // manage schedule array properly if (!MatEdScheduleArray.isObject()) MatEdScheduleArray = new ObjectCreator("ArrayObject", "MatEdScheduleArray").Create(); // if we select another list... delete all schedules that were created by // previous load for (int i = 0; i < MatEdScheduleArray.count(); i++) Util.cancel(MatEdScheduleArray.getKey(i).AsInt()); // we have to empty out the list; so when we create new schedules, these dont linger MatEdScheduleArray.empty(); // manage preview array if (!MatEdPreviewArray.isObject()) MatEdPreviewArray = new ObjectCreator("ArrayObject", "MatEdPreviewArray").Create(); // we have to empty out the list; so when we create new guicontrols, these dont linger MatEdPreviewArray.empty(); materialSelection.deleteAllObjects(); materialPreviewPagesStack.deleteAllObjects(); // changed to accomadate tagging. dig through the array for each tag name, // call unique value, sort, and we have a perfect set of materials if (staticFilter != "") this.currentStaticFilter = staticFilter; this.currentFilter = selectedFilter; ArrayObject filteredObjectsArray = new ObjectCreator("ArrayObject").Create(); int previewsPerPage = materialPreviewCountPopup.getTextById(materialPreviewCountPopup.getSelected()).AsInt(); int tagCount = Util.getWordCount(this.currentFilter); if (tagCount != 0) { for (int j = 0; j < tagCount; j++) { for (int i = 0; i < this.currentStaticFilter.count(); i++) { string currentTag = Util.getWord(this.currentFilter, j); if (this.currentStaticFilter.getKey(i) == currentTag) filteredObjectsArray.add(this.currentStaticFilter.getKey(i), this.currentStaticFilter.getValue(i)); } } filteredObjectsArray.uniqueValue(); filteredObjectsArray.sortd(); this.totalPages = Util.mCeil(filteredObjectsArray.count()/previewsPerPage); //Can we maintain the current preview page, or should we go to page 1? if ((this.currentPreviewPage*previewsPerPage) >= filteredObjectsArray.count()) this.currentPreviewPage = 0; // Build out the pages buttons this.buildPagesButtons(this.currentPreviewPage, this.totalPages); int previewCount = previewsPerPage; int possiblePreviewCount = filteredObjectsArray.count() - this.currentPreviewPage*previewsPerPage; if (possiblePreviewCount < previewCount) previewCount = possiblePreviewCount; int start = this.currentPreviewPage*previewsPerPage; for (int i = start; i < start + previewCount; i++) this.buildPreviewArray(filteredObjectsArray.getValue(i)); filteredObjectsArray.delete(); } else { this.currentStaticFilter.sortd(); // Rebuild the static filter list without tagged materials ArrayObject noTagArray = new ObjectCreator("ArrayObject").Create(); for (int i = 0; i < this.currentStaticFilter.count(); i++) { if (this.currentStaticFilter.getKey(i) != "") continue; SimObject material = this.currentStaticFilter.getValue(i); // CustomMaterials are not available for selection if (!material.isObject() || material.isMemberOfClass("CustomMaterial")) continue; noTagArray.add("", material); } this.totalPages = Util.mCeil(noTagArray.count()/previewsPerPage); //Can we maintain the current preview page, or should we go to page 1? if ((this.currentPreviewPage*previewsPerPage) >= noTagArray.count()) this.currentPreviewPage = 0; // Build out the pages buttons this.buildPagesButtons(this.currentPreviewPage, this.totalPages); int previewCount = previewsPerPage; int possiblePreviewCount = noTagArray.count() - this.currentPreviewPage*previewsPerPage; if (possiblePreviewCount < previewCount) previewCount = possiblePreviewCount; int start = this.currentPreviewPage*previewsPerPage; for (int i = start; i < start + previewCount; i++) this.buildPreviewArray(noTagArray.getValue(i)); } this.loadImages(0); }