From d345c2b310e28cfb52b9fb72edfc5cfa20eee96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rio=20Rodrigues?= Date: Thu, 7 Mar 2024 16:43:08 +0000 Subject: [PATCH] fix: problems --- CMakeLists.txt | 2 +- common/src/utils.cpp | 45 +++++++++++++++++++++++++++++++++++ generator/CMakeLists.txt | 3 ++- generator/src/shapes/cone.cpp | 1 - scripts/build.sh | 7 +++++- 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0eda9a..22920dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,4 +12,4 @@ add_subdirectory(generator) add_subdirectory(engine) target_include_directories(common PUBLIC common/include) target_include_directories(generator PUBLIC generator/include) -target_include_directories(engine PUBLIC engine/include) +target_include_directories(engine PUBLIC engine/include) \ No newline at end of file diff --git a/common/src/utils.cpp b/common/src/utils.cpp index 0a8f293..7d293eb 100644 --- a/common/src/utils.cpp +++ b/common/src/utils.cpp @@ -44,3 +44,48 @@ void saveToFile( std::cerr << "Unable to open file: " << filepath << std::endl; } } + +std::vector parseOBJfile(std::string filename, std::string type) { + std::vector points; + std::vector sorted_points; + std::ifstream file(filename); + + std::string line; + while (std::getline(file, line)) { + std::istringstream iss(line); + std::string type; + iss >> type; + if (type == "v") { + Point point; + iss >> point.x >> point.y >> point.z; + points.push_back(point); + } else if (type == "f") { + std::string vertex; + std::vector vertex_indices; + while (iss >> vertex) { + std::string index = vertex.substr(0, vertex.find("/")); + vertex_indices.push_back(std::stoi(index) - 1); + } + for (int i = 0; i < vertex_indices.size(); i++) { + sorted_points.push_back(points[vertex_indices[i]]); + } + } + } + file.close(); + + return sorted_points; +} + +std::vector parse3Dfile(std::string filename) { + std::vector points; + std::ifstream file(filename); + + Point point; + while (file >> point.x >> point.y >> point.z) { + points.push_back(point); + } + + file.close(); + + return points; +} \ No newline at end of file diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt index 80a2140..58a1a00 100644 --- a/generator/CMakeLists.txt +++ b/generator/CMakeLists.txt @@ -3,8 +3,9 @@ cmake_minimum_required(VERSION 3.5) # Project Name project(generator) +include_directories(${PROJECT_NAME} PUBLIC include) + file(GLOB SRC_FILES src/shapes/*.cpp src/*.cpp) add_executable(${PROJECT_NAME} ${SRC_FILES}) -include_directories(${PROJECT_NAME} PUBLIC include) target_link_libraries(${PROJECT_NAME} common) \ No newline at end of file diff --git a/generator/src/shapes/cone.cpp b/generator/src/shapes/cone.cpp index 61fa271..26dde59 100644 --- a/generator/src/shapes/cone.cpp +++ b/generator/src/shapes/cone.cpp @@ -62,7 +62,6 @@ bool generateCone(float radius, float height, int slices, int stacks, std::cerr << "Error: Empty vector of triangles.\n"; return false; } - saveToFile(triangles, filepath); return true; diff --git a/scripts/build.sh b/scripts/build.sh index 3d5a19d..69ddbe1 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,4 +3,9 @@ build_dir=build cmake -S . -B $build_dir -(cd $build_dir && make) +cd engine +make +cd .. +cd generator +make +cd .. \ No newline at end of file