2#include <ossia/detail/config.hpp>
4#include <ossia/detail/small_vector.hpp>
15 std::shared_ptr<void> data{};
57 ossia::small_vector<buffer, 2> buffers;
58 ossia::small_vector<binding, 2> bindings;
59 ossia::small_vector<attribute, 2> attributes;
60 ossia::small_vector<input, 2> input;
62 int vertices{}, indices{};
98 std::vector<geometry> meshes;
99 int64_t dirty_index{};
101using mesh_list_ptr = std::shared_ptr<mesh_list>;
105 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1., 0., 0., 0., 0., 1.,
109struct geometry_filter
127 int64_t dirty_index{};
130struct geometry_filter_list
132 std::vector<geometry_filter> filters;
133 int64_t dirty_index{};
135using geometry_filter_list_ptr = std::shared_ptr<geometry_filter_list>;
139 mesh_list_ptr meshes;
140 geometry_filter_list_ptr filters;
142 operator bool() const noexcept {
return meshes && filters; }
143 bool operator==(
const geometry_spec&)
const noexcept =
default;
144 bool operator<(
const geometry_spec& rhs)
const noexcept
146 return (meshes < rhs.meshes) || (meshes == rhs.meshes && filters < rhs.filters);
150struct OSSIA_EXPORT geometry_port
152 static const constexpr int which = 4;
155 dirty_transform = 0x1,
161 geometry_spec geometry;
162 transform3d transform;
166struct geometry_delay_line
168 std::vector<geometry_spec> geometries;