mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-14 16:09:06 +07:00
basic and dirty yoga layouts impl
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user