#pragma once #include #include namespace ecs { namespace core { namespace system { namespace parallelism { template struct split_evenly : private split_base { public: using parameters_type = T_parameters; template inline void operator()(T_context& context, T_instance& instance, T_func&& func) const { auto split_count = parameters_type::get_split_count(); auto total_count = instance.subscribed_count(); auto per_split = total_count / split_count; executor_proxy ep { context, instance, split_count, per_split }; func(instance, ep); } }; } } } }