Importing mesh asset now functioning
- Added debug logging for all user actions regarding FileDialog - Importing a Meshasset wil now Create a propery entity for the asset.
This commit is contained in:
		| @ -41,7 +41,7 @@ void AssetManager::setAssetPath(std::filesystem::path path) | ||||
|  | ||||
| YoggieEngine::Mesh* AssetManager::LoadFromAssetFile(const std::filesystem::path assetPath) | ||||
| { | ||||
| 	YoggieEngine::Mesh imported; | ||||
| 	YoggieEngine::Mesh* imported = nullptr; | ||||
|  | ||||
| 	std::ifstream AssetFile; | ||||
| 	AssetFile.open(assetPath, std::ios::binary); | ||||
| @ -65,14 +65,16 @@ YoggieEngine::Mesh* AssetManager::LoadFromAssetFile(const std::filesystem::path | ||||
| 		std::cout << "Number of Elements: " << Enum << std::endl; | ||||
| 		free(Header); | ||||
|  | ||||
|  | ||||
| 		imported = new YoggieEngine::Mesh(); | ||||
| 		// Load Vertices (Vertex + UV ) | ||||
| 		imported.vertices = std::vector < YoggieEngine::Vertex>(); | ||||
| 		imported->vertices = std::vector < YoggieEngine::Vertex>(); | ||||
| 		for (int i = 0; i < Vnum; i++) | ||||
| 		{ | ||||
| 			YoggieEngine::Vertex data = YoggieEngine::Vertex(); | ||||
| 			AssetFile.read((char*)&data, Vsize); | ||||
|  | ||||
| 			imported.vertices.push_back(data); | ||||
| 			imported->vertices.push_back(data); | ||||
|  | ||||
| 		} | ||||
|  | ||||
| @ -80,11 +82,11 @@ YoggieEngine::Mesh* AssetManager::LoadFromAssetFile(const std::filesystem::path | ||||
| 		AssetFile.ignore(sizeof(char) * 3); | ||||
|  | ||||
| 		// Load Elements | ||||
| 		imported.elements = std::vector<unsigned int>(); | ||||
| 		imported->elements = std::vector<unsigned int>(); | ||||
| 		for (int i = 0; i < Enum; i++) { | ||||
| 			unsigned int data = 0; | ||||
| 			AssetFile.read((char*)&data, sizeof(unsigned int)); | ||||
| 			imported.elements.push_back(data); | ||||
| 			imported->elements.push_back(data); | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| @ -92,8 +94,7 @@ YoggieEngine::Mesh* AssetManager::LoadFromAssetFile(const std::filesystem::path | ||||
| 		std::cout << "Failed ot open mesh " << std::endl; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	return nullptr; | ||||
| 	return imported; | ||||
|  | ||||
|  | ||||
| } | ||||
| @ -107,7 +108,7 @@ YoggieEngine::Renderable* AssetManager::LoadFromSource(const std::filesystem::pa | ||||
| 	std::cout << "Save path: " << MeshFileName << std::endl; | ||||
|  | ||||
| 	std::ofstream meshAsset; | ||||
| 	meshAsset.open(MeshFileName.c_str(), std::ios::binary); | ||||
| 	meshAsset.open(MeshFileName, std::ios::binary); | ||||
| 	if (meshAsset.is_open()) { | ||||
|  | ||||
| 		// write a header | ||||
| @ -123,7 +124,7 @@ YoggieEngine::Renderable* AssetManager::LoadFromSource(const std::filesystem::pa | ||||
| 		meshAsset.write((char*)&Vnum, sizeof(uint32_t)); | ||||
| 		meshAsset.write((char*)&Enum, sizeof(uint32_t)); | ||||
| 		// write all vertices  | ||||
| 		for (auto vertice : exportMesh->vertices) | ||||
| 		for (auto& vertice : exportMesh->vertices) | ||||
| 		{ | ||||
| 			meshAsset.write((char*)&vertice, sizeof(vertice)); | ||||
| 		} | ||||
|  | ||||
| @ -122,13 +122,27 @@ public: | ||||
|             if (ImGui::MenuItem("Import MeshAsset (temp)")) | ||||
|             { | ||||
|                 auto result = NFD_OpenDialog("mesh", NULL, &path); | ||||
|                | ||||
|                 switch (result) { | ||||
|                 case(NFD_OKAY): | ||||
|                     AssetManager::LoadFromAssetFile(path); | ||||
|                     break; | ||||
|                 { | ||||
|                     YoggieEngine::Mesh* importedMesh = AssetManager::LoadFromAssetFile(path); | ||||
|                     if (importedMesh != nullptr) | ||||
|                     { | ||||
|                         auto full_name = std::filesystem::path(path); | ||||
|                         auto importedModel = scene.AddEntity(full_name.filename().u8string()); | ||||
|                         auto& rendererComponent = importedModel.AddComponent<Render3DComponent>(); | ||||
|                         rendererComponent.mesh = *importedMesh; | ||||
|  | ||||
|                     } | ||||
|                 } | ||||
|                 break; | ||||
|  | ||||
|                 case(NFD_CANCEL): | ||||
|                     spdlog::debug("User cancelled action"); | ||||
|                     break; | ||||
|                 case(NFD_ERROR): | ||||
|                     spdlog::warn("Something went wrong!"); | ||||
|                     break; | ||||
|                 } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user