Unreal Engine Marketplace Additional Asset Filters

A Tampermonkey userscript to add additional asset filters to the Unreal Engine Marketplace

当前为 2021-01-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         Unreal Engine Marketplace Additional Asset Filters
// @namespace    https://github.com/Drakmyth/ue-marketplace-filters
// @version      0.1
// @author       Drakmyth
// @description  A Tampermonkey userscript to add additional asset filters to the Unreal Engine Marketplace
// @homepage     https://github.com/Drakmyth/ue-marketplace-filters
// @supportURL   https://github.com/Drakmyth/ue-marketplace-filters/issues
// @match        https://www.unrealengine.com/marketplace/*
// @run-at       document-body
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var hideOwned = false;
    var hideExternal = false;

    function doControlsExist() {
        var sortContainer = getSortContainer();
        return sortContainer.querySelector("span.filter-controls");
    }

    function addControls() {
        var controlsElement = document.createElement("span");
        controlsElement.className = "filter-controls";

        var hideOwnedCheckbox = createCheckbox("Hide Owned", hideOwned, toggleHideOwned);
        controlsElement.appendChild(hideOwnedCheckbox);

        var hideExternalCheckbox = createCheckbox("Hide External", hideExternal, toggleHideExternal);
        controlsElement.appendChild(hideExternalCheckbox);

        var sortContainer = getSortContainer();
        sortContainer.appendChild(controlsElement);
    }

    function getSortContainer() {
        return document.getElementsByClassName('sort-select')[0];
    }

    function createCheckbox(text, initial, onChange) {
        var labelElement = document.createElement("label");
        labelElement.style.marginLeft = "5px";
        labelElement.style.marginRight = "5px";

        var checkboxElement = document.createElement("input");
        checkboxElement.type = "checkbox";
        checkboxElement.checked = initial;
        checkboxElement.style.marginRight = "3px";
        checkboxElement.addEventListener("change", onChange);
        labelElement.appendChild(checkboxElement);

        var textElement = document.createTextNode(text);
        labelElement.appendChild(textElement);

        return labelElement;
    }

    function toggleHideOwned(event) {
        hideOwned = event.target.checked;
        onBodyChange();
    }

    function toggleHideExternal(event) {
        hideExternal = event.target.checked;
        onBodyChange();
    }

    function isContainerOwned(container) {
        return container.querySelector("article.asset--owned");
    }

    function isContainerExternal(container) {
        return !container.querySelector("span.btn");
    }

    function onBodyChange(mut) {

        if (!doControlsExist()) {
            addControls();
        }

        var assetContainers = document.getElementsByClassName('asset-container');

        for (let container of assetContainers) {
            var isOwned = isContainerOwned(container);
            var isExternal = isContainerExternal(container);
            if ((hideOwned && isOwned) || (hideExternal && isExternal)) {
                container.style.display = 'none';
            } else {
                container.style.display = null;
            }
        }
    }


    var mo = new MutationObserver(onBodyChange);
    mo.observe(document.body, {childList: true, subtree: true});
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址