Introducción
La API simplificada de procesador de Mass/consulta (ejecutor de consultas) tiene como objetivo simplificar la lógica del procesador de Mass, además de mejorar la legibilidad del código y la seguridad de tipos. Esta es una API opcional y el estilo actual seguirá siendo compatible.
Cómo crear un procesador de Mass con QueryExecutor
Crear un struct en tu .cpp heredando UE::Mass::FQueryExecutor según este ejemplo:
struct FExampleExecutor : public UE::Mass::FQueryExecutor
{
UE::Mass::FQueryDefinition<
UE::Mass::FMutableFragmentAccess<FExampleFragmentA>,
UE::Mass::FConstSubsystemAccess<UExampleSubsystem>,
UE::Mass::FMassTagRequired<FExampleTag>
> Accessors{ *this };
virtual void Execute(FMassExecutionContext& Context)
Actualmente, los QueryExecutors tienen que ser propiedad de un UMassProcessor normal. Este requisito se eliminará en una futura actualización.
Para crear un envoltorio UMassProcessor:
Crea una clase que herede de UMassProcessor.
No anules las funciones ConfigureQuery ni Execute.
Crea QueryExecutor en el constructor para ese procesador de la siguiente manera:
C++UE::Mass::FQueryExecutor::CreateQuery<QueryType>(...)
Limitaciones
Actualmente, se sigue necesitando un UMassProcessor para interactuar con Mass Phase Executor. Esto se solucionará en una futura actualización.
La declaración de la plantilla FQueryDefinition requiere definiciones completas de los tipos de consulta y, como tal, hacerlo en un archivo de cabecera debería limitarse a las definiciones de consulta predefinidas (que no formen parte de cabeceras de interfaz más grandes). En general, se recomienda declararlas como privadas en el archivo .cpp donde se utilizan.