/* * SPDX-License-Identifier: AGPL-3.0-or-later * Copyright (C) 2025 Sergej Görzen * This file is part of OmiLAXR. */ using System.Collections.Generic; using System.ComponentModel; using System.Linq; using OmiLAXR.Components; using UnityEngine; namespace OmiLAXR.Filters { /// /// Filter component that excludes objects based on a blacklist of tracking names. /// Uses the GetTrackingName() extension method to identify objects and filters out /// any objects whose tracking names appear in the configured blacklist. /// Useful for excluding specific objects from analytics tracking by name. /// [AddComponentMenu("OmiLAXR / 2) Filters / Blacklist Filter")] [Description("Filters found objects by a blacklist of tracking names. The names are get with go.GetTrackingName().")] public sealed class BlacklistFilter : Filter { /// /// List of tracking names to exclude from the filtered results. /// Objects whose GetTrackingName() value matches any entry in this list /// will be filtered out and not passed through to subsequent pipeline stages. /// public List blacklist; /// /// Filters the input objects by excluding those whose tracking names appear in the blacklist. /// /// Array of objects to filter /// Array of objects that are not blacklisted public override Object[] Pass(Object[] objects) { // Filter out objects whose tracking name appears in the blacklist return objects.Where(go => !blacklist.Contains(go.GetTrackingName())).ToArray(); } } }