This commit is contained in:
ZY4N
2025-03-28 13:09:34 +01:00
parent 6f60cc11c8
commit d18b40a7fc
34 changed files with 393 additions and 272 deletions

View File

@@ -0,0 +1,33 @@
#pragma once
#include "config/primitives.hpp"
namespace assets::detail
{
template<typename C, typename T>
class component_array_set {};
template<typename C, typename... Ts>
class component_array_set<C, z3d::structure<Ts...>>
{
component_array_set() = default;
protected:
void clear_component_arrays()
{
std::apply(
[](auto&... component_array)
{
(component_array.clear(), ...);
},
component_arrays
);
}
C component_flags;
z3d::structure<z3d::vector<Ts>...> component_arrays{};
};
}

View File

@@ -0,0 +1,32 @@
#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{};
};
}

View File

@@ -1,21 +0,0 @@
#pragma once
#include <vector>
template<typename C, typename... Ts>
struct vertex_array_data
{
C component_flags;
std::tuple<std::vector<Ts>...> vertices{};
protected:
void clear_vertices()
{
std::apply(
[](auto&... vertex_opt) {
(vertex_opt.clear(), ...);
},
vertices
);
}
};