From 66da4f83c1b5bb6f3ceda880820e01c2f8e23e43 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Fri, 14 Apr 2023 17:45:31 +0100 Subject: Remove the old .obj load, assets and supporting stuff --- gfx/models/obj.h | 38 ---------------- gfx/models/obj.impl.cpp | 77 -------------------------------- gfx/models/obj.ll | 116 ------------------------------------------------ 3 files changed, 231 deletions(-) delete mode 100644 gfx/models/obj.h delete mode 100644 gfx/models/obj.impl.cpp delete mode 100644 gfx/models/obj.ll (limited to 'gfx/models') diff --git a/gfx/models/obj.h b/gfx/models/obj.h deleted file mode 100644 index e28f7de..0000000 --- a/gfx/models/obj.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#ifndef yyFlexLexer -# define yyFlexLexer objbaseFlexLexer -# include -#endif -#include -#include -#include -#include -#include -#include - -class Mesh; -class Vertex; - -class ObjParser : yyFlexLexer { -public: - explicit ObjParser(const std::filesystem::path & fileName); - explicit ObjParser(std::unique_ptr in); - - int yylex() override; - - std::vector vertices; - std::vector texCoords; - std::vector normals; - using FaceElement = glm::vec<3, unsigned int>; - using Face = std::vector; - using Faces = std::vector; - using Object = std::pair; - std::vector objects; - glm::length_t axis {0}; - - using NamedMeshesData = std::map, std::vector>>; - [[nodiscard]] NamedMeshesData createMeshData() const; - using NamedMeshes = std::map>; - [[nodiscard]] NamedMeshes createMeshes() const; -}; diff --git a/gfx/models/obj.impl.cpp b/gfx/models/obj.impl.cpp deleted file mode 100644 index 205abc8..0000000 --- a/gfx/models/obj.impl.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "obj.h" -#include -#include -#include -#include -#include // IWYU pragma: keep -#include -#include -#include -#include -#include -#include -#include - -ObjParser::ObjParser(const std::filesystem::path & fileName) : ObjParser {std::make_unique(fileName)} { } - -ObjParser::ObjParser(std::unique_ptr in) : yyFlexLexer(in.get()) -{ - assert(in); - ObjParser::yylex(); - assert(in->good()); - constexpr const glm::mat4 obj2ilt { - -1, 0, 0, 0, // x - 0, 0, 1, 0, // y - 0, 1, 0, 0, // z - 0, 0, 0, 0, // w - }; - std::for_each(vertices.begin(), vertices.end(), [&obj2ilt](auto & v) { - v = v * obj2ilt; - }); - std::for_each(normals.begin(), normals.end(), [&obj2ilt](auto & v) { - v = glm::vec4 {v, 0} * obj2ilt; - }); -} - -ObjParser::NamedMeshes -ObjParser::createMeshes() const -{ - NamedMeshes out; - const auto data {createMeshData()}; - std::transform(data.begin(), data.end(), std::inserter(out, out.end()), [](auto && obj) { - return std::make_pair(obj.first, std::make_shared(obj.second.first, obj.second.second)); - }); - return out; -} - -ObjParser::NamedMeshesData -ObjParser::createMeshData() const -{ - NamedMeshesData out; - std::transform(objects.begin(), objects.end(), std::inserter(out, out.end()), [this](auto && obj) { - std::vector overtices; - std::vector vertexOrder; - std::vector indices; - for (const auto & face : obj.second) { - for (auto idx = 2U; idx < face.size(); idx += 1) { - auto f = [&](auto idx) { - const auto & fe {face[idx]}; - if (const auto existing = std::find(vertexOrder.begin(), vertexOrder.end(), fe); - existing != vertexOrder.end()) { - indices.push_back(static_cast(std::distance(vertexOrder.begin(), existing))); - } - else { - indices.push_back(static_cast(overtices.size())); - overtices.emplace_back(vertices[fe.x - 1], texCoords[fe.y - 1], -normals[fe.z - 1]); - vertexOrder.emplace_back(fe); - } - }; - f(0U); - f(idx); - f(idx - 1); - } - } - return std::make_pair(obj.first, std::make_pair(overtices, indices)); - }); - return out; -} diff --git a/gfx/models/obj.ll b/gfx/models/obj.ll deleted file mode 100644 index 84884fe..0000000 --- a/gfx/models/obj.ll +++ /dev/null @@ -1,116 +0,0 @@ -%option batch -%option c++ -%option noyywrap -%option 8bit -%option stack -%option yyclass="ObjParser" -%option prefix="objbase" - -%{ -#include -#include -#include -#include -#include -class objbaseFlexLexer; -%} - -comment #.* -float -?[0-9.]+ -index -?[0-9]+ -linestring [^\r\n]* -truthy (1|on) -falsey (0|off) - -%x FACE -%x MTLLIB -%x OBJECT -%x SMOOTH -%x USEMTL -%x VERTEX -%x NORMAL -%x TEXCOORD - -%% - -{comment} { - // fprintf(stderr, "COMMENT %s\n", YYText()); -} -"f " { - BEGIN(FACE); - objects.back().second.emplace_back(); - objects.back().second.back().emplace_back(); - axis = 0; -} -"mtllib " { - BEGIN(MTLLIB); -} -"o " { - BEGIN(OBJECT); -} -"s " { - BEGIN(SMOOTH); -} -"usemtl " { - BEGIN(USEMTL); -} -"v " { - BEGIN(VERTEX); - vertices.emplace_back(0, 0, 0, 1); - axis = 0; -} -"vn " { - BEGIN(NORMAL); - normals.emplace_back(0, 0, 0); - axis = 0; -} -"vt " { - BEGIN(TEXCOORD); - texCoords.emplace_back(0, 1, 1); - axis = 0; -} -{linestring} { - // fprintf(stderr, "USEMTL <%s>\n", YYText()); -} -{linestring} { - // fprintf(stderr, "MTLLIB <%s>\n", YYText()); -} -{linestring} { - objects.emplace_back(YYText(), Faces{}); -} -{truthy} { - // fprintf(stderr, "Set smooth\n"); -} -{falsey} { - // fprintf(stderr, "Set flat\n"); -} -{float} { - vertices.back()[axis++] = std::stof(YYText()); -} -{float} { - normals.back()[axis++] = std::stof(YYText()); -} -{float} { - texCoords.back()[axis++] = std::stof(YYText()); -} -{index} { - objects.back().second.back().back()[axis] = std::stoi(YYText()); -} -\/ { - axis++; -} -[ \t] { - objects.back().second.back().emplace_back(); - axis = 0; -} - -<*>[ \t] { -} -<*>[\r\n\f] { - BEGIN(INITIAL); -} - -%% - -// Make iwyu think unistd.h is required -[[maybe_unused]]static auto x=getpid; -- cgit v1.2.3