34 lines
493 B
C++
34 lines
493 B
C++
#pragma once
|
|
|
|
#include "config/primitives.hpp"
|
|
|
|
namespace assets::detail {
|
|
|
|
template<typename C, typename T>
|
|
class component_set {};
|
|
|
|
|
|
template<typename C, typename... Ts>
|
|
class component_set<C, z3d::structure<Ts...>>
|
|
{
|
|
public:
|
|
component_set() = default;
|
|
|
|
C component_flags{};
|
|
z3d::structure<z3d::optional<Ts>...> components{};
|
|
|
|
protected:
|
|
void clear_components()
|
|
{
|
|
std::apply(
|
|
[](std::optional<Ts>&... component)
|
|
{
|
|
(component.reset(), ...);
|
|
},
|
|
components
|
|
);
|
|
}
|
|
};
|
|
|
|
}
|