From 1944afebb04758661e3bbd3361c16b84d84abf1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Susanne=20D=C3=B6tsch?= <susannedoetsch@uni-koblenz.de>
Date: Wed, 16 Jun 2021 13:16:47 +0200
Subject: [PATCH] [#63] started fixing after merge

---
 .../include/vkcv/asset/asset_loader.hpp            | 14 +++++++++++++-
 .../asset_loader/src/vkcv/asset/asset_loader.cpp   |  2 +-
 projects/first_mesh/src/main.cpp                   |  2 +-
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp
index f4330c01..64ece270 100644
--- a/modules/asset_loader/include/vkcv/asset/asset_loader.hpp
+++ b/modules/asset_loader/include/vkcv/asset/asset_loader.hpp
@@ -81,13 +81,25 @@ enum class PrimitiveType : uint32_t {
     TEXCOORD_0 = 3,
 	TEXCOORD_1 = 4
 };
+
+/* These integer values are used the same way in OpenGL, Vulkan and glTF. This
+ * enum is not needed for translation, it's only for the programmers
+ * convenience (easier to read in if/switch statements etc). While this enum
+ * exists in (almost) the same definition in the fx-gltf library, we want to
+ * avoid exposing that dependency, thus it is re-defined here. */
+enum class ComponentType : uint16_t {
+	NONE = 0, INT8 = 5120, UINT8 = 5121, INT16 = 5122, UINT16 = 5123,
+	UINT32 = 5125, FLOAT32 = 5126
+};
+
+
 /* This struct describes one vertex attribute of a vertex buffer. */
 typedef struct {
     PrimitiveType type;			// POSITION, NORMAL, ...
     uint32_t offset;			// offset in bytes
     uint32_t length;			// length of ... in bytes
     uint32_t stride;			// stride in bytes
-    uint16_t componentType;		// eg. 5126 for float
+	ComponentType componentType;		// eg. 5126 for float
     uint8_t  componentCount;	// eg. 3 for vec3
 } VertexAttribute;
 
diff --git a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
index 87b2860a..815ad61a 100644
--- a/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
+++ b/modules/asset_loader/src/vkcv/asset/asset_loader.cpp
@@ -365,7 +365,7 @@ int loadScene(const std::string &path, Scene &scene){
                 attribute.offset = sceneObjects.bufferViews[accessor.bufferView].byteOffset;
                 attribute.length = sceneObjects.bufferViews[accessor.bufferView].byteLength;
                 attribute.stride = sceneObjects.bufferViews[accessor.bufferView].byteStride;
-		attribute.componentType = static_cast<ComponentType>(accessor.componentType);
+		        attribute.componentType = static_cast<ComponentType>(accessor.componentType);
 
                 if (convertTypeToInt(accessor.type) != 10) {
                     attribute.componentCount = convertTypeToInt(accessor.type);
diff --git a/projects/first_mesh/src/main.cpp b/projects/first_mesh/src/main.cpp
index beb0bab6..5a051fb5 100644
--- a/projects/first_mesh/src/main.cpp
+++ b/projects/first_mesh/src/main.cpp
@@ -31,7 +31,7 @@ int main(int argc, const char** argv) {
 
 	vkcv::asset::Scene mesh;
 
-	const char* path = argc > 1 ? argv[1] : "resources/Szene/Szene.gltf";
+	const char* path = argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf";
 	int result = vkcv::asset::loadScene(path, mesh);
 
 	if (result == 1) {
-- 
GitLab