basic and dirty yoga layouts impl

This commit is contained in:
BlackMATov
2020-02-11 09:25:53 +07:00
parent d9b1f173a2
commit 5d5d4ecb92
3 changed files with 178 additions and 87 deletions

View File

@@ -130,8 +130,12 @@ namespace sol
namespace e2d::ecsex
{
template < typename T, typename... Opts >
void remove_all_components(ecs::registry& owner, Opts&&... opts) {
template < typename T, typename Disposer, typename... Opts >
void remove_all_components_with_disposer(
ecs::registry& owner,
Disposer&& disposer,
Opts&&... opts)
{
static thread_local vector<ecs::entity> to_remove_components;
E2D_DEFER([](){ to_remove_components.clear(); });
@@ -140,9 +144,18 @@ namespace e2d::ecsex
}, std::forward<Opts>(opts)...);
for ( ecs::entity& e : to_remove_components ) {
std::invoke(disposer, e, e.get_component<T>());
e.remove_component<T>();
}
}
template < typename T, typename... Opts >
void remove_all_components(ecs::registry& owner, Opts&&... opts) {
remove_all_components_with_disposer<T>(
owner,
null_disposer(),
std::forward<Opts>(opts)...);
}
}
namespace e2d::ecsex