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