ru:toolworks:docs:apparatus:filter

Это старая версия документа!


Фильтры

Фильтры предоставляют возможность сужать процесс итерирования до сущностей и объектов типа «сущностный», обладающих только заданными комбинациями трейтов и деталей. Фильтрация может быть как включающей (позитивной), так и исключающей (негативной). Включение означает, что сущность (или объект сущностного типа) определённо должен содержать трейты (или детали) из списка. Исключение означает противоположное - сущность должна *не* иметь выбранные элементы.

Оба указанных способа могут и должны быть использованы друг с другом. Помните, что Apparatus сильно оптимизирован для всех типов фильров, он не выполняет поэтапный поиск, а использует быстрые процедуры сравнения масок. Грубо говоря, тестирование одного фильтра, состоящего из 100 деталей, будет таким же, как если бы он содержал в себе одну.

Вы создаёте инстанцию FFingerprint-а. Есть несколько разных конструкторов и методов, доступных для этой структуры, и вы можете использовать всё, что будет пригодно в конкретном случае. Например, давайте создадим фильтр одного трейта и одной детали, действительного только для загруженных (Booted) сущностей:

#include "Filter.h"

...

FFilter MyFilter(EBootFilter::Booted);
Filter += UMyDetail::StaticClass();
Filter += FMyTrait::StaticStruct();

Теперь вы можете использовать собранный фильтр, чтобы объединять в цепи ремни и чанки и итерироваться по ним.

  • ru/toolworks/docs/apparatus/filter.1623757606.txt.gz
  • Последнее изменение: 2021/06/15 14:46
  • jispar