diff options
Diffstat (limited to 'src/utils/sceneparser.h')
-rw-r--r-- | src/utils/sceneparser.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/utils/sceneparser.h b/src/utils/sceneparser.h new file mode 100644 index 0000000..699d6fb --- /dev/null +++ b/src/utils/sceneparser.h @@ -0,0 +1,31 @@ +#pragma once + +#include "scenedata.h" +#include <vector> +#include <string> +#include "rgba.h" + +// Struct which contains data for a single primitive, to be used for rendering +struct RenderShapeData { + ScenePrimitive primitive; + glm::mat4 ctm; // the cumulative transformation matrix + glm::mat4 inverseCTM; +}; + +// Struct which contains all the data needed to render a scene +struct RenderData { + SceneGlobalData globalData; + SceneCameraData cameraData; + + std::vector<SceneLightData> lights; + std::vector<RenderShapeData> shapes; +}; + +class SceneParser { +public: + // Parse the scene and store the results in renderData. + // @param filepath The path of the scene file to load. + // @param renderData On return, this will contain the metadata of the loaded scene. + // @return A boolean value indicating whether the parse was successful. + static bool parse(std::string filepath, RenderData &renderData); +}; |