16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-19 20:19:18 +02:00
Files
maszyna/eu07-parser/include/eu07/scene/node/mesh.hpp
2026-06-13 15:43:44 +02:00

46 lines
1.1 KiB
C++

#pragma once
// Wspolne parsowanie siatki: triangle_strip, triangle_fan
#include <eu07/scene/cursor.hpp>
#include <eu07/scene/match.hpp>
#include <eu07/scene/node/header.hpp>
#include <eu07/scene/node/parse_util.hpp>
#include <eu07/scene/node/triangles.hpp>
#include <eu07/scene/node/types.hpp>
#include <string>
#include <string_view>
#include <vector>
namespace eu07::scene::node::io {
template <typename Parsed>
[[nodiscard]] inline bool parseTexturedMeshBody(
TokenStream& stream,
std::vector<SourceToken>& raw,
const NodeHeader& header,
const std::string_view subtype,
const std::string_view endMarker,
Parsed& out) {
out.header = header;
out.raw.clear();
if (!takeString(stream, raw, out.texture)) {
return false;
}
while (!stream.empty() && !atEnd(stream, subtype, endMarker)) {
MeshVertex vertex;
const bool hasMore = stream.remaining() > 1;
if (!node_triangles::takeVertex(stream, raw, vertex, hasMore)) {
return false;
}
out.vertices.push_back(vertex);
}
return consumeEnd(stream, raw, subtype, endMarker);
}
} // namespace eu07::scene::node::io