Мне было интересно, можно ли передать функции вариационному шаблону, чтобы иметь какую-то логику для включения или отключения определенных параметров. Позвольте мне объяснить лучше. У меня есть система Entity-Component-System на C++ 11 с вариативными шаблонами, где объекты являются простыми идентификаторами, компоненты - это данные и/или малые логические функции, и вся логика происходит внутри систем. Системы получить необходимые объекты, которые ищут с помощью VARIADIC шаблона объектов, которые имеют перечень конкретных компонентов (я не используют идентификаторы для проверки компонентов), что-то вроде:Оценка шаблона Variadic
var entities = m_world.get<position, direction, acceleration>();
Но мне было интересно, если его можно сделать примерно так:
var entities = m_world.get<position, direction, acceleration, Except<rotation, whatever>>();
Для фильтрации объектов, имеющих определенный компонент.
Код для моего ECS свободно доступна здесь: https://github.com/arajar/ecs
Спасибо.
1. m_world.get <положение, направление, ускорение>() равно к <...> функции m_world.search() в коде ECS? С вашей второй строкой вы хотите найти все объекты, которые имеют положение, направление и ускорение, но не имеют поворота атрибутов и что ли? – Gene
да, именно это. – Araj
Вы пытались реализовать функцию m_world.search_not <...>()? который работает аналогично поиску <...>(), но находит все исключающие сущности с заданными параметрами шаблона. – Gene