Files
RT_GPU/includes/RT/SceneParser.hpp

40 lines
1.6 KiB
C++

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* SceneParser.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: TheRed <TheRed@students.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/12/26 21:37:37 by TheRed #+# #+# */
/* Updated: 2025/01/15 12:34:11 by tomoron ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef RT_SCENEPARSER__HPP
# define RT_SCENEPARSER__HPP
# include "RT.hpp"
class SceneParser
{
public:
SceneParser(Scene *scene);
bool parseLine(const std::string &line);
private:
void parseMaterial(std::stringstream &line);
void parseCamera(std::stringstream &line);
void parseObj(std::stringstream &line);
glm::vec3 getVertex(std::stringstream &line);
Triangle *getFace(std::stringstream &line, std::vector<glm::vec3> &vertices, int mat);
long int getVertexIndex(std::stringstream &line, size_t size);
void parseMtl(std::stringstream &line, std::map<std::string, int> &materials);
Scene *_scene;
std::map<std::string, std::function<Object *(std::stringstream &)>> object_parsers;
};
#endif