From 201b19e8a6ad413fa3b7429119afda8451790e6e Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Wed, 28 Sep 2022 18:35:22 +0800 Subject: [PATCH 01/18] SP3-237 Renamed MeshWriter to MeshCompiler Implemented texture compiler --- .../{SHMeshWriter.cpp => SHMeshCompiler.cpp} | 4 +- .../{SHMeshWriter.h => SHMeshCompiler.h} | 4 +- .../Assets/Libraries/SHTextureCompiler.cpp | 50 +++++++++++++++++++ .../src/Assets/Libraries/SHTextureCompiler.h | 12 +++++ 4 files changed, 66 insertions(+), 4 deletions(-) rename SHADE_Engine/src/Assets/Libraries/{SHMeshWriter.cpp => SHMeshCompiler.cpp} (88%) rename SHADE_Engine/src/Assets/Libraries/{SHMeshWriter.h => SHMeshCompiler.h} (54%) create mode 100644 SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp create mode 100644 SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshWriter.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp similarity index 88% rename from SHADE_Engine/src/Assets/Libraries/SHMeshWriter.cpp rename to SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp index 965e7d68..1a9dede2 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshWriter.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp @@ -1,9 +1,9 @@ #include "SHpch.h" -#include "SHMeshWriter.h" +#include "SHMeshCompiler.h" #include -void SHADE::SHMeshWriter::WriteMeshBinary(SHMeshAsset const& asset, AssetPath path) noexcept +void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPath path) noexcept { std::ofstream file{path, std::ios::out | std::ios::binary}; if (!file.is_open()) diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshWriter.h b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h similarity index 54% rename from SHADE_Engine/src/Assets/Libraries/SHMeshWriter.h rename to SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h index 4a1a3e6b..090e241e 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshWriter.h +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h @@ -5,10 +5,10 @@ namespace SHADE { - class SHMeshWriter + class SHMeshCompiler { private: public: - static void WriteMeshBinary(SHMeshAsset const& asset, AssetPath path) noexcept; + static void CompileMeshBinary(SHMeshAsset const& asset, AssetPath path) noexcept; }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp new file mode 100644 index 00000000..342a0aee --- /dev/null +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp @@ -0,0 +1,50 @@ +#include "SHpch.h" +#include "SHTextureCompiler.h" + +#include + +namespace SHADE +{ + void SHTextureCompiler::CompileTextureBinary(SHTextureAsset const& asset, AssetPath path) + { + std::ofstream file{path, std::ios::out | std::ios::binary}; + if (!file.is_open()) + { + SHLOG_ERROR("Unable to open file for writing texture file: {}", path.string()); + } + + auto const intBytes{sizeof(uint32_t)}; + + file.write( + reinterpret_cast(&asset.numBytes), + intBytes + ); + + file.write( + reinterpret_cast(&asset.width), + intBytes + ); + + file.write( + reinterpret_cast(&asset.height), + intBytes + ); + + file.write( + reinterpret_cast(&asset.format), + sizeof(SHTexture::PixelChannel) + ); + + file.write( + reinterpret_cast(asset.mipOffsets.data()), + intBytes * asset.mipOffsets.size() + ); + + file.write( + reinterpret_cast(asset.pixelData), + asset.numBytes + ); + + file.close(); + } +} diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h new file mode 100644 index 00000000..494907f7 --- /dev/null +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h @@ -0,0 +1,12 @@ +#pragma once + +#include "Assets/Asset Types/SHTextureAsset.h" +#include "Assets/SHAssetMacros.h" + +namespace SHADE +{ + struct SHTextureCompiler + { + static void CompileTextureBinary(SHTextureAsset const& asset, AssetPath path); + }; +} \ No newline at end of file From 219aaa170792ba83a1f1f5cb1141a65ac0119000 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Wed, 28 Sep 2022 18:35:59 +0800 Subject: [PATCH 02/18] Split texture loader into 2 paths for dds and shtexture format. SHTexture binary load half done --- .../src/Assets/Libraries/SHMeshLoader.cpp | 24 ++++++-------- .../src/Assets/Libraries/SHTextureLoader.cpp | 31 ++++++++++++++++++- .../src/Assets/Libraries/SHTextureLoader.h | 3 ++ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp index 3ef454a0..fc4ff435 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp @@ -88,20 +88,15 @@ namespace SHADE bool SHMeshLoader::LoadMesh(std::vector& meshes, AssetPath path) { const aiScene* scene = aiImporter.ReadFile(path.string().c_str(), - aiProcess_Triangulate - // Make sure we get triangles rather than nvert polygons - | aiProcess_GenUVCoords // Convert any type of mapping to uv mapping - | aiProcess_TransformUVCoords - // preprocess UV transformations (scaling, translation ...) - | aiProcess_FindInstances - // search for instanced meshes and remove them by references to one master - | aiProcess_CalcTangentSpace - // calculate tangents and bitangents if possible - | aiProcess_JoinIdenticalVertices - // join identical vertices/ optimize indexing - | aiProcess_RemoveRedundantMaterials // remove redundant materials - | aiProcess_FindInvalidData// detect invalid model data, such as invalid normal vectors - | aiProcess_FlipUVs // flip the V to match the Vulkans way of doing UVs + aiProcess_Triangulate // Make sure we get triangles rather than nvert polygons + | aiProcess_GenUVCoords // Convert any type of mapping to uv mapping + | aiProcess_TransformUVCoords // preprocess UV transformations (scaling, translation ...) + | aiProcess_FindInstances // search for instanced meshes and remove them by references to one master + | aiProcess_CalcTangentSpace // calculate tangents and bitangents if possible + | aiProcess_JoinIdenticalVertices // join identical vertices/ optimize indexing + | aiProcess_RemoveRedundantMaterials // remove redundant materials + | aiProcess_FindInvalidData // detect invalid model data, such as invalid normal vectors + | aiProcess_FlipUVs // flip the V to match the Vulkans way of doing UVs ); if (!scene || !scene->HasMeshes()) @@ -109,6 +104,7 @@ namespace SHADE SHLOG_ERROR("ERROR in GLTF::ASSIMP: {}\nFile: {}", aiImporter.GetErrorString(), path.string()); return false; } + //TODO MATERIALS FROM MESHES //if (scene->HasMaterials()) //{ diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp index 33270bb6..68da6035 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp @@ -58,7 +58,7 @@ namespace SHADE } } - void SHTextureLoader::LoadImageAsset(AssetPath path, SHTextureAsset& asset) + void SHTextureLoader::LoadTinyDDS(AssetPath path, SHTextureAsset& asset) noexcept { tinyddsloader::Result loadResult = tinyddsloader::Result::Success; tinyddsloader::DDSFile file; @@ -89,4 +89,33 @@ namespace SHADE asset.mipOffsets = std::move(mipOff); asset.pixelData = std::move(pixel); } + + void SHTextureLoader::LoadSHTexture(AssetPath path, SHTextureAsset& asset) noexcept + { + std::ifstream file{path.string(), std::ios::in | std::ios::binary}; + if (!file.is_open()) + { + SHLOG_ERROR("Error opening SHTexture file: {}", path.string()); + } + + VkFormat format; + + file >> asset.numBytes; + file >> asset.width; + file >> asset.height; + file >> format; + + } + + void SHTextureLoader::LoadImageAsset(AssetPath path, SHTextureAsset& asset) + { + if (path.extension().string() == DDS_EXTENSION) + { + LoadTinyDDS(path, asset); + } + else if (path.extension().string() == TEXTURE_EXTENSION) + { + LoadSHTexture(path, asset); + } + } } diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h index 281a9a19..ecc35605 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h @@ -13,6 +13,9 @@ namespace SHADE static std::string TinyDDSResultToString(tinyddsloader::Result value); static vk::Format ddsLoaderToVkFormat(tinyddsloader::DDSFile::DXGIFormat format, bool isLinear); + + static void LoadTinyDDS(AssetPath path, SHTextureAsset& asset) noexcept; + static void LoadSHTexture(AssetPath path, SHTextureAsset& asset) noexcept; public: static void LoadImageAsset(AssetPath paths, SHTextureAsset& image); }; From b1a799cf052471c6e125123a5ec9e09ec76372d3 Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Thu, 29 Sep 2022 07:59:04 +0800 Subject: [PATCH 03/18] Attempt using dllimport/dllexport --- .../src/Application/SBApplication.cpp | 4 ++++ SHADE_Engine/src/ECS_Base/General/SHFamily.cpp | 15 +++++++++++++++ SHADE_Engine/src/ECS_Base/General/SHFamily.h | 16 +++++++++++----- SHADE_Engine/src/ECS_Base/SHECSMacros.h | 10 ++++++++++ SHADE_Engine/src/Editor/SHEditor.cpp | 5 ++++- 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 SHADE_Engine/src/ECS_Base/General/SHFamily.cpp diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 64095e03..0847de65 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -32,6 +32,8 @@ #include "Assets/SHAssetManager.h" +#include "Tools/SHLogger.h" + using namespace SHADE; namespace Sandbox @@ -110,6 +112,8 @@ namespace Sandbox //TODO: Change true to window is open while (!window.WindowShouldClose()) { + auto id = SystemFamily::GetID(); + SHLOG_INFO("Transform system id in application : {} {}", id, SystemFamily::currentID); SHFrameRateController::UpdateFRC(); SHSceneManager::UpdateSceneManager(); SHSceneManager::SceneUpdate(1/60.0f); diff --git a/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp b/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp new file mode 100644 index 00000000..d51a8b35 --- /dev/null +++ b/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp @@ -0,0 +1,15 @@ +#pragma once +#define COMPULING_THE_DLL +#include "SHFamily.h" +#include "SHpch.h" + +namespace SHADE +{ + //initialize currentID as 0 + + + + + + +} diff --git a/SHADE_Engine/src/ECS_Base/General/SHFamily.h b/SHADE_Engine/src/ECS_Base/General/SHFamily.h index 5815703f..7ef01f54 100644 --- a/SHADE_Engine/src/ECS_Base/General/SHFamily.h +++ b/SHADE_Engine/src/ECS_Base/General/SHFamily.h @@ -18,12 +18,12 @@ namespace SHADE { + template class SHFamilyID { private: - //this is used to keep track of the new current ID to be assign to a new Derived class type. - static ComponentTypeID currentID; + /*!************************************************************************* * \brief Construct a new SHFamilyID object @@ -46,6 +46,9 @@ namespace SHADE } public: + //this is used to keep track of the new current ID to be assign to a new Derived class type. + static MY_DLL_EXPORT ComponentTypeID currentID; + /*!************************************************************************* * \brief * Checks if this identifier is cuurrently in use / valid. @@ -59,7 +62,6 @@ namespace SHADE { return(id < currentID); } - /*!************************************************************************* * \brief * Get the ID of a derived class type. @@ -75,9 +77,13 @@ namespace SHADE static ComponentTypeID id = currentID++; return id; } + + + }; - //initialize currentID as 0 + +#ifdef COMPILING_THE_DLL template ComponentTypeID SHFamilyID::currentID = 0; - +#endif } \ No newline at end of file diff --git a/SHADE_Engine/src/ECS_Base/SHECSMacros.h b/SHADE_Engine/src/ECS_Base/SHECSMacros.h index 02615ca4..8de356f8 100644 --- a/SHADE_Engine/src/ECS_Base/SHECSMacros.h +++ b/SHADE_Engine/src/ECS_Base/SHECSMacros.h @@ -26,4 +26,14 @@ const EntityIndex MAX_EID = 51000; #define ENABLE_IF_UINT(_TYPE, _RETURN)\ typename std::enable_if<(std::is_integral<_TYPE>::value && !std::is_signed<_TYPE>::value),_RETURN>::type +#ifdef COMPILING_THE_DLL +#ifndef MY_DLL_EXPORT + #define MY_DLL_EXPORT __declspec(dllexport) +#endif +#else +#ifndef MY_DLL_EXPORT + #define MY_DLL_EXPORT __declspec(dllimport) +#endif +#endif + #endif \ No newline at end of file diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index b36518fd..f1a363e3 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -23,6 +23,8 @@ #include "SHEditor.hpp" #include "SHEditorWidgets.hpp" +#include "Math/Transform/SHTransformSystem.h" + //#==============================================================# //|| Editor Window Includes || //#==============================================================# @@ -104,7 +106,8 @@ namespace SHADE { (void)dt; NewFrame(); - + auto id = SystemFamily::GetID(); + SHLOG_INFO("Transform system id in Editor Update : {} {}", id, SystemFamily::currentID); for (const auto& window : editorWindows | std::views::values) { if(window->isOpen) From 584b7e425f4ed47f15fe6ae9f2389cbd1fbcfde8 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Fri, 30 Sep 2022 08:57:25 +0800 Subject: [PATCH 04/18] WIP Write meta files to track whether raw asset (fbx/gltf/dds) have been compiled into custom binary --- .../src/Application/SBApplication.cpp | 3 +-- SHADE_Application/src/Scenes/SBTestScene.cpp | 6 +++--- .../src/Assets/Libraries/SHTextureLoader.cpp | 2 +- SHADE_Engine/src/Assets/SHAssetManager.cpp | 3 ++- SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp | 15 ++++++++++++++- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 64095e03..0412028e 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -82,9 +82,8 @@ namespace Sandbox //TODO: REMOVE AFTER PRESENTATION SHADE::SHAssetManager::LoadDataTemp("../../Assets/racoon.gltf"); - SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); + //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); - SHADE::SHAssetManager::LoadDataTemp("../../Assets/TD_Checker_Base_Color.dds"); //TODO: REMOVE AFTER PRESENTATION //SHADE::SHSystemManager::RegisterRoutine(); diff --git a/SHADE_Application/src/Scenes/SBTestScene.cpp b/SHADE_Application/src/Scenes/SBTestScene.cpp index 664497df..7c7ad1e0 100644 --- a/SHADE_Application/src/Scenes/SBTestScene.cpp +++ b/SHADE_Application/src/Scenes/SBTestScene.cpp @@ -71,7 +71,7 @@ namespace Sandbox auto matInst = graphicsSystem->AddOrGetBaseMaterialInstance(); auto customMat = graphicsSystem->AddMaterialInstanceCopy(matInst); customMat->SetProperty("data.color", SHVec4(0.0f, 1.0f, 1.0f, 1.0f)); - customMat->SetProperty("data.textureIndex", 1); + customMat->SetProperty("data.textureIndex", 0); customMat->SetProperty("data.alpha", 0.1f); // Create Stress Test Objects @@ -115,7 +115,7 @@ namespace Sandbox renderable.SetMaterial(customMat); renderable.GetModifiableMaterial()->SetProperty("data.color", SHVec4(0.0f, 0.0f, 0.0f, 0.0f)); renderable.GetModifiableMaterial()->SetProperty("data.alpha", 1.0f); - renderable.GetModifiableMaterial()->SetProperty("data.textureIndex", 1); + renderable.GetModifiableMaterial()->SetProperty("data.textureIndex", 0); transform.SetWorldPosition ({-3.0f, -1.0f, -1.0f}); transform.SetLocalScale({5.0f, 5.0f, 5.0f}); @@ -147,7 +147,7 @@ namespace Sandbox renderableShowcase.SetMaterial(customMat); renderableShowcase.GetModifiableMaterial()->SetProperty("data.color", SHVec4(0.0f, 0.0f, 0.0f, 0.0f)); renderableShowcase.GetModifiableMaterial()->SetProperty("data.alpha", 1.0f); - renderableShowcase.GetModifiableMaterial()->SetProperty("data.textureIndex", 1); + renderableShowcase.GetModifiableMaterial()->SetProperty("data.textureIndex", 0); transformShowcase.SetWorldPosition({ 3.0f, -1.0f, -1.0f }); transformShowcase.SetLocalScale({ 5.0f, 5.0f, 5.0f }); diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp index ad7f10ea..f70e21d8 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp @@ -103,7 +103,7 @@ namespace SHADE file >> asset.numBytes; file >> asset.width; file >> asset.height; - file >> format; + //file >> format; } diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index 60e35ab3..6c617c04 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -199,7 +199,8 @@ namespace SHADE { AssetPath path{ p }; - if (path.extension().string() == GLTF_EXTENSION) + if (path.extension().string() == FBX_EXTENSION + || path.extension().string() == GLTF_EXTENSION) { LoadGLTF( { diff --git a/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp b/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp index aabb0dc0..35d167d2 100644 --- a/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp +++ b/SHADE_Engine/src/Assets/SHAssetMetaHandler.cpp @@ -99,6 +99,7 @@ namespace SHADE ****************************************************************************/ void SHAssetMetaHandler::WriteMetaData(SHAsset const& meta) noexcept { + //TODO: Write into binary eventually std::string path{ meta.path.string() }; path.append(META_EXTENSION); @@ -109,9 +110,21 @@ namespace SHADE SHLOG_ERROR("Asset write path is invalid: {}", path); return; } - + + metaFile << "Name: " << meta.name << "\n"; metaFile << "ID: " << meta.id << "\n"; metaFile << "Type: " << static_cast(meta.type) << std::endl; + + //TODO Add in information that is specific to types like mesh + switch(meta.type) + { + case AssetType::MESH: + break; + + default: + void; + } + metaFile.close(); } From 114ae86a9f57940274c36fc8704eeabfe907225f Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 30 Sep 2022 20:13:18 +0800 Subject: [PATCH 05/18] Fixed SHFamilyID for SHSystem and SHComponent but still have issues with SHScene --- .../src/Application/SBApplication.cpp | 9 +++++-- .../src/ECS_Base/Components/SHComponent.h | 4 ++++ .../src/ECS_Base/General/SHFamily.cpp | 1 - SHADE_Engine/src/ECS_Base/General/SHFamily.h | 24 ++++++++++++------- .../src/ECS_Base/Managers/SHSystemManager.h | 3 +++ SHADE_Engine/src/ECS_Base/SHECSMacros.h | 10 +------- SHADE_Engine/src/ECS_Base/System/SHSystem.h | 5 ++++ SHADE_Engine/src/Editor/SHEditor.cpp | 7 ++++-- SHADE_Engine/src/Scene/SHScene.h | 2 ++ SHADE_Engine/src/Scene/SHSceneManager.h | 7 +++--- 10 files changed, 47 insertions(+), 25 deletions(-) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 0847de65..3e9b0dce 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -87,6 +87,11 @@ namespace Sandbox SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/TD_Checker_Base_Color.dds"); + + + auto id = SHFamilyID::GetID(); + auto id2 = SHFamilyID::GetID(); + auto id3 = SHFamilyID::GetID(); //TODO: REMOVE AFTER PRESENTATION //SHADE::SHSystemManager::RegisterRoutine(); @@ -102,7 +107,9 @@ namespace Sandbox #else #endif + SHSceneManager::InitSceneManager("TestScene"); + SHFrameRateController::UpdateFRC(); } @@ -112,8 +119,6 @@ namespace Sandbox //TODO: Change true to window is open while (!window.WindowShouldClose()) { - auto id = SystemFamily::GetID(); - SHLOG_INFO("Transform system id in application : {} {}", id, SystemFamily::currentID); SHFrameRateController::UpdateFRC(); SHSceneManager::UpdateSceneManager(); SHSceneManager::SceneUpdate(1/60.0f); diff --git a/SHADE_Engine/src/ECS_Base/Components/SHComponent.h b/SHADE_Engine/src/ECS_Base/Components/SHComponent.h index aba3ba51..cfcd724c 100644 --- a/SHADE_Engine/src/ECS_Base/Components/SHComponent.h +++ b/SHADE_Engine/src/ECS_Base/Components/SHComponent.h @@ -14,6 +14,7 @@ #include "SHpch.h" #include "../SHECSMacros.h" #include "SH_API.h" +#include "ECS_Base/General/SHFamily.h" namespace SHADE { @@ -117,4 +118,7 @@ namespace SHADE }; + + + template class SH_API SHFamilyID; } diff --git a/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp b/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp index d51a8b35..bd5c0378 100644 --- a/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp +++ b/SHADE_Engine/src/ECS_Base/General/SHFamily.cpp @@ -1,5 +1,4 @@ #pragma once -#define COMPULING_THE_DLL #include "SHFamily.h" #include "SHpch.h" diff --git a/SHADE_Engine/src/ECS_Base/General/SHFamily.h b/SHADE_Engine/src/ECS_Base/General/SHFamily.h index 7ef01f54..51bd6a25 100644 --- a/SHADE_Engine/src/ECS_Base/General/SHFamily.h +++ b/SHADE_Engine/src/ECS_Base/General/SHFamily.h @@ -14,13 +14,14 @@ #pragma once #include "../SHECSMacros.h" +#include "SH_API.h" namespace SHADE { template - class SHFamilyID + class SH_API SHFamilyID { private: @@ -47,7 +48,7 @@ namespace SHADE public: //this is used to keep track of the new current ID to be assign to a new Derived class type. - static MY_DLL_EXPORT ComponentTypeID currentID; + static inline ComponentTypeID currentID = 0; /*!************************************************************************* * \brief @@ -70,20 +71,27 @@ namespace SHADE * @tparam DerivedClass * The derived class type that we are trying to get the ID of. ***************************************************************************/ +#ifdef SH_API_EXPORT template - static ENABLE_IF_DERIVED(ComponentTypeID, BaseClass, DerivedClass) GetID() noexcept + static SH_API ENABLE_IF_DERIVED(ComponentTypeID, BaseClass, DerivedClass) GetID() noexcept { //The first time a new derived class type call this get id, it will initialize id using the currentID from familyID class. - static ComponentTypeID id = currentID++; + static ComponentTypeID id = SHFamilyID::currentID++; return id; + //return 0; } +#else + template + static SH_API ENABLE_IF_DERIVED(ComponentTypeID, BaseClass, DerivedClass) GetID() noexcept; +#endif // SH_API_EXPORT + + }; -#ifdef COMPILING_THE_DLL - template - ComponentTypeID SHFamilyID::currentID = 0; -#endif + + + } \ No newline at end of file diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h index f92f6635..995a1cf5 100644 --- a/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h +++ b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h @@ -68,6 +68,9 @@ namespace SHADE id = ((SystemID)version << sizeof(SystemVersionID) * CHAR_BIT) + typeID; } systemContainer.emplace(id, std::make_unique()); + + auto size = systemContainer.size(); + systemContainer[id].get()->systemID = id; return id; diff --git a/SHADE_Engine/src/ECS_Base/SHECSMacros.h b/SHADE_Engine/src/ECS_Base/SHECSMacros.h index 8de356f8..4690099f 100644 --- a/SHADE_Engine/src/ECS_Base/SHECSMacros.h +++ b/SHADE_Engine/src/ECS_Base/SHECSMacros.h @@ -26,14 +26,6 @@ const EntityIndex MAX_EID = 51000; #define ENABLE_IF_UINT(_TYPE, _RETURN)\ typename std::enable_if<(std::is_integral<_TYPE>::value && !std::is_signed<_TYPE>::value),_RETURN>::type -#ifdef COMPILING_THE_DLL -#ifndef MY_DLL_EXPORT - #define MY_DLL_EXPORT __declspec(dllexport) -#endif -#else -#ifndef MY_DLL_EXPORT - #define MY_DLL_EXPORT __declspec(dllimport) -#endif -#endif + #endif \ No newline at end of file diff --git a/SHADE_Engine/src/ECS_Base/System/SHSystem.h b/SHADE_Engine/src/ECS_Base/System/SHSystem.h index 93ea6a59..fe852b9a 100644 --- a/SHADE_Engine/src/ECS_Base/System/SHSystem.h +++ b/SHADE_Engine/src/ECS_Base/System/SHSystem.h @@ -12,6 +12,7 @@ #include "../SHECSMacros.h" #include "SH_API.h" +#include "ECS_Base/General/SHFamily.h" namespace SHADE { @@ -69,5 +70,9 @@ namespace SHADE }; + template class SH_API SHFamilyID; + + + } \ No newline at end of file diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index f1a363e3..e94f7398 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -89,6 +89,11 @@ namespace SHADE io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; //Enable docking InitFonts(); + + + auto id = SHFamilyID::GetID(); + auto id2 = SHFamilyID::GetID(); + auto id3 = SHFamilyID::GetID(); InitBackend(sdlWindow); SetStyle(Style::SHADE); @@ -106,8 +111,6 @@ namespace SHADE { (void)dt; NewFrame(); - auto id = SystemFamily::GetID(); - SHLOG_INFO("Transform system id in Editor Update : {} {}", id, SystemFamily::currentID); for (const auto& window : editorWindows | std::views::values) { if(window->isOpen) diff --git a/SHADE_Engine/src/Scene/SHScene.h b/SHADE_Engine/src/Scene/SHScene.h index 372981a6..a81c70ef 100644 --- a/SHADE_Engine/src/Scene/SHScene.h +++ b/SHADE_Engine/src/Scene/SHScene.h @@ -13,6 +13,7 @@ #include #include "SHSceneGraph.h" +#include "ECS_Base/General/SHFamily.h" namespace SHADE { @@ -42,6 +43,7 @@ namespace SHADE virtual void Unload() = 0; }; + template class SH_API SHFamilyID; } diff --git a/SHADE_Engine/src/Scene/SHSceneManager.h b/SHADE_Engine/src/Scene/SHSceneManager.h index 83ebab0f..2e4b1717 100644 --- a/SHADE_Engine/src/Scene/SHSceneManager.h +++ b/SHADE_Engine/src/Scene/SHSceneManager.h @@ -84,7 +84,8 @@ namespace SHADE { //prevSceneCreate = newScene; newScene = [sceneName]() { currentScene = new T(); currentScene->sceneName = sceneName; }; - nextSceneID = SHFamilyID::template GetID(); + //nextSceneID = SHFamilyID::GetID(); + nextSceneID = 0; sceneChanged = true; } @@ -101,13 +102,13 @@ namespace SHADE static std::enable_if_t, void> ChangeScene(std::string const& sceneName) noexcept { //check if this new Scene is current Scene (Use RestartScene instead) - if (currentSceneID == SHFamilyID::template GetID()) + if (currentSceneID == SHFamilyID::GetID()) { return; } //prevSceneCreate = newScene; newScene = [sceneName]() { currentScene = new T(); currentScene->sceneName; }; - nextSceneID = SHFamilyID::template GetID(); + nextSceneID = SHFamilyID::GetID(); sceneChanged = true; } From 2d07fb0afcae86ac9a3bcfc1653aae07919951e6 Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 30 Sep 2022 20:25:26 +0800 Subject: [PATCH 06/18] Added component added and removed events --- .../ECS_Base/Events/SHComponentAddedEvent.h | 12 +++++++++ .../ECS_Base/Events/SHComponentRemovedEvent.h | 12 +++++++++ .../ECS_Base/Managers/SHComponentManager.h | 25 +++++++++++++++---- SHADE_Engine/src/Events/SHEventDefines.h | 2 ++ 4 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 SHADE_Engine/src/ECS_Base/Events/SHComponentAddedEvent.h create mode 100644 SHADE_Engine/src/ECS_Base/Events/SHComponentRemovedEvent.h diff --git a/SHADE_Engine/src/ECS_Base/Events/SHComponentAddedEvent.h b/SHADE_Engine/src/ECS_Base/Events/SHComponentAddedEvent.h new file mode 100644 index 00000000..1f2b62d5 --- /dev/null +++ b/SHADE_Engine/src/ECS_Base/Events/SHComponentAddedEvent.h @@ -0,0 +1,12 @@ +#pragma once + +#include "ECS_Base/Components/SHComponent.h" + +namespace SHADE +{ + struct SHComponentAddedEvent + { + EntityID eid; + ComponentTypeID addedComponentType; + }; +} diff --git a/SHADE_Engine/src/ECS_Base/Events/SHComponentRemovedEvent.h b/SHADE_Engine/src/ECS_Base/Events/SHComponentRemovedEvent.h new file mode 100644 index 00000000..34d6f9c8 --- /dev/null +++ b/SHADE_Engine/src/ECS_Base/Events/SHComponentRemovedEvent.h @@ -0,0 +1,12 @@ +#pragma once + +#include "ECS_Base/Components/SHComponent.h" + +namespace SHADE +{ + struct SHComponentRemovedEvent + { + EntityID eid; + ComponentTypeID removedComponentType; + }; +} diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h index 60625d6a..12b5b001 100644 --- a/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h +++ b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h @@ -17,6 +17,8 @@ #include "../General/SHSparseSetContainer.h" #include "../Components/SHComponent.h" #include "../Components/SHComponentGroup.h" +#include "../Events/SHComponentAddedEvent.h" +#include "../Events/SHComponentRemovedEvent.h" //#include "Scene/SHSceneNode.h" #include "SH_API.h" @@ -216,6 +218,11 @@ namespace SHADE comp->OnCreate(); } + SHComponentAddedEvent eventData; + eventData.eid = entityID; + eventData.addedComponentType = ComponentFamily::GetID(); + + SHEventManager::BroadcastEvent(eventData, SH_COMPONENT_ADDED_EVENT); } /************************************************************************** @@ -247,6 +254,13 @@ namespace SHADE { comp->OnCreate(); } + + SHComponentAddedEvent eventData; + eventData.eid = entityID; + eventData.addedComponentType = componentTypeID; + + SHEventManager::BroadcastEvent(eventData, SH_COMPONENT_ADDED_EVENT); + } @@ -313,6 +327,12 @@ namespace SHADE componentSet.GetSparseSet()->Remove(EntityHandleGenerator::GetIndex(entityID)); + + SHComponentRemovedEvent eventData; + eventData.eid = entityID; + eventData.addedComponentType = ComponentFamily::GetID(); + + SHEventManager::BroadcastEvent(eventData, SH_COMPONENT_REMOVED_EVENT); } /*!************************************************************************* @@ -464,11 +484,6 @@ namespace SHADE return componentGroups[index]; } - static void AddScriptComponent(EntityID eid, std::string const& scriptClassName) noexcept; - - static void RemoveScriptComponent(EntityID eid, std::string const& scriptClassName) noexcept; - - };// end SHComponentManager diff --git a/SHADE_Engine/src/Events/SHEventDefines.h b/SHADE_Engine/src/Events/SHEventDefines.h index f1e92b42..317b67c1 100644 --- a/SHADE_Engine/src/Events/SHEventDefines.h +++ b/SHADE_Engine/src/Events/SHEventDefines.h @@ -8,3 +8,5 @@ typedef uint32_t SHEventHandle; constexpr SHEventIdentifier SH_EXAMPLE_EVENT{0}; constexpr SHEventIdentifier SH_ENTITY_DESTROYED_EVENT{ 1 }; constexpr SHEventIdentifier SH_ENTITY_CREATION_EVENT{ 2 }; +constexpr SHEventIdentifier SH_COMPONENT_ADDED_EVENT{ 3 }; +constexpr SHEventIdentifier SH_COMPONENT_REMOVED_EVENT{ 4 }; From e4be5e098766eb9a42aed8f1eaee327b14dc27ca Mon Sep 17 00:00:00 2001 From: maverickdgg Date: Fri, 30 Sep 2022 20:34:46 +0800 Subject: [PATCH 07/18] Added event manager include --- SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h index 12b5b001..8921fbce 100644 --- a/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h +++ b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h @@ -21,6 +21,7 @@ #include "../Events/SHComponentRemovedEvent.h" //#include "Scene/SHSceneNode.h" #include "SH_API.h" +#include "Events/SHEventManager.hpp" #include @@ -330,7 +331,7 @@ namespace SHADE SHComponentRemovedEvent eventData; eventData.eid = entityID; - eventData.addedComponentType = ComponentFamily::GetID(); + eventData.removedComponentType = ComponentFamily::GetID(); SHEventManager::BroadcastEvent(eventData, SH_COMPONENT_REMOVED_EVENT); } From 8a3d3c8d4e92c789e022e24fea649fceac373e08 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Fri, 30 Sep 2022 22:08:17 +0800 Subject: [PATCH 08/18] SP3-237 SP3-103 SP3-104 Implemented SHTexture and SHMesh binary file writing and loading. NOT TESTED Added file level comments --- .../src/Assets/Asset Types/SHMeshAsset.h | 15 ++- .../src/Assets/Asset Types/SHTextureAsset.h | 3 - .../src/Assets/Libraries/SHMeshCompiler.cpp | 29 +++++ .../src/Assets/Libraries/SHMeshCompiler.h | 12 ++ .../src/Assets/Libraries/SHMeshLoader.cpp | 121 ++++++++++++++++-- .../src/Assets/Libraries/SHMeshLoader.h | 21 ++- .../Assets/Libraries/SHTextureCompiler.cpp | 24 ++++ .../src/Assets/Libraries/SHTextureCompiler.h | 12 ++ .../src/Assets/Libraries/SHTextureLoader.cpp | 41 +++++- .../src/Assets/Libraries/SHTextureLoader.h | 11 ++ SHADE_Engine/src/Assets/SHAsset.h | 11 ++ 11 files changed, 281 insertions(+), 19 deletions(-) diff --git a/SHADE_Engine/src/Assets/Asset Types/SHMeshAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHMeshAsset.h index 18674a04..68c0d150 100644 --- a/SHADE_Engine/src/Assets/Asset Types/SHMeshAsset.h +++ b/SHADE_Engine/src/Assets/Asset Types/SHMeshAsset.h @@ -1,3 +1,15 @@ +/*************************************************************************//** + * \file SHMeshAsset.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Struct to contain ready data for loading into GPU. Also used for + * compilation into binary files + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #include @@ -10,6 +22,7 @@ namespace SHADE { uint32_t vertexCount; uint32_t indexCount; + std::string meshName; }; struct SH_API SHMeshAsset @@ -19,8 +32,6 @@ namespace SHADE SHMeshAssetHeader header; - std::string meshName; - std::vector vertexPosition; std::vector vertexTangent; std::vector vertexNormal; diff --git a/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h index d3b69e32..94b1b74c 100644 --- a/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h +++ b/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h @@ -1,11 +1,8 @@ #pragma once #include "tinyddsloader.h" - #include "Graphics/MiddleEnd/Textures/SHTextureLibrary.h" -#include - namespace SHADE { struct SHTextureAsset diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp index 1a9dede2..6d4b6fcb 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp @@ -1,5 +1,18 @@ +/*************************************************************************//** + * \file SHMeshCompiler.cpp + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to write data in SHMeshAsset into binary file for faster + * loading in the future + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #include "SHpch.h" #include "SHMeshCompiler.h" +#include "Graphics/MiddleEnd/Meshes/SHMeshData.h" #include @@ -21,6 +34,17 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat sizeof(uint32_t) ); + uint32_t charCount{static_cast(asset.header.meshName.size())}; + file.write( + reinterpret_cast(&charCount), + sizeof(uint32_t) + ); + + file.write( + asset.header.meshName.c_str(), + asset.header.meshName.size() + ); + auto const vertexVec3Byte {sizeof(SHVec3) * asset.header.vertexCount}; auto const vertexVec2Byte {sizeof(SHVec2) * asset.header.vertexCount}; @@ -44,5 +68,10 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat vertexVec2Byte ); + file.write( + reinterpret_cast(asset.indices.data()), + sizeof(uint32_t) + ); + file.close(); } diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h index 090e241e..6da00525 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.h @@ -1,3 +1,15 @@ +/*************************************************************************//** + * \file SHMeshCompiler.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to write data in SHMeshAsset into binary file for faster + * loading in the future + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #include "../Asset Types/SHMeshAsset.h" diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp index fc4ff435..a1a8b29c 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp @@ -1,6 +1,19 @@ +/*************************************************************************//** + * \file SHMeshLoader.cpp + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Implementation for Mesh loader. Accounts for custom binary format + * as well as GLTF file format. + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #include "SHpch.h" #include "SHMeshLoader.h" #include +#include namespace SHADE { @@ -27,10 +40,11 @@ namespace SHADE SHMeshAsset result { .compiled { false}, - .changed { false }, - .meshName { mesh.mName.C_Str() } + .changed { false } }; + result.header.meshName = mesh.mName.C_Str(); + for (size_t i{0}; i < mesh.mNumVertices; ++i) { // Vertex position @@ -85,15 +99,15 @@ namespace SHADE return result; } - bool SHMeshLoader::LoadMesh(std::vector& meshes, AssetPath path) - { + void SHMeshLoader::LoadExternal(std::vector& meshes, AssetPath path) noexcept + { const aiScene* scene = aiImporter.ReadFile(path.string().c_str(), aiProcess_Triangulate // Make sure we get triangles rather than nvert polygons | aiProcess_GenUVCoords // Convert any type of mapping to uv mapping | aiProcess_TransformUVCoords // preprocess UV transformations (scaling, translation ...) | aiProcess_FindInstances // search for instanced meshes and remove them by references to one master | aiProcess_CalcTangentSpace // calculate tangents and bitangents if possible - | aiProcess_JoinIdenticalVertices // join identical vertices/ optimize indexing + | aiProcess_JoinIdenticalVertices // join identical vertices/ optimize indexing | aiProcess_RemoveRedundantMaterials // remove redundant materials | aiProcess_FindInvalidData // detect invalid model data, such as invalid normal vectors | aiProcess_FlipUVs // flip the V to match the Vulkans way of doing UVs @@ -102,7 +116,7 @@ namespace SHADE if (!scene || !scene->HasMeshes()) { SHLOG_ERROR("ERROR in GLTF::ASSIMP: {}\nFile: {}", aiImporter.GetErrorString(), path.string()); - return false; + return; } //TODO MATERIALS FROM MESHES @@ -112,14 +126,103 @@ namespace SHADE // { // if (scene->mMaterials[i]->mNumProperties > 0) // { - // for (int j{0}; j < scene->mMaterials[i]->mProperties[j].) + // for (int j{0}; j < scene->mMaterials[i]->mProperties[j].) // } - //std::cout << scene->mMaterials[i]->; + //std::cout << scene->mMaterials[i]->; // } //} ProcessNode(*scene->mRootNode, *scene, meshes); + } - return true; + void SHMeshLoader::LoadSHMesh(SHMeshAsset& mesh, AssetPath path) noexcept + { + std::ifstream file{ path.string(), std::ios::in | std::ios::binary }; + if (!file.is_open()) + { + SHLOG_ERROR("Unable to open SHMesh File: {}", path.string()); + } + + uint32_t vertCount, indexCount, charCount; + std::vector vertPos, vertTan, vertNorm; + std::vector texCoord; + std::vector indices; + + std::string name; + + file >> vertCount; + file >> indexCount; + file >> charCount; + + vertPos.resize(vertCount); + vertTan.resize(vertCount); + vertNorm.resize(vertCount); + texCoord.resize(vertCount); + indices.resize(indexCount); + + name.reserve(charCount); + for (auto i{0}; i < charCount; ++i) + { + file >> name[i]; + } + + for (auto i{ 0 }; i < vertCount; ++i) + { + file >> vertPos[i].x; + file >> vertPos[i].y; + file >> vertPos[i].z; + } + + for (auto i{ 0 }; i < vertCount; ++i) + { + file >> vertTan[i].x; + file >> vertTan[i].y; + file >> vertTan[i].z; + } + + for (auto i{ 0 }; i < vertCount; ++i) + { + file >> vertNorm[i].x; + file >> vertNorm[i].y; + file >> vertNorm[i].z; + } + + for (auto i{ 0 }; i < vertCount; ++i) + { + file >> texCoord[i].x; + file >> texCoord[i].y; + } + + for (auto i{ 0 }; i < indexCount; ++i) + { + file >> indices[i]; + } + + mesh.compiled = true; + mesh.changed = false; + + mesh.header.indexCount = indexCount; + mesh.header.vertexCount = vertCount; + mesh.header.meshName = name; + + mesh.vertexPosition = std::move(vertPos); + mesh.vertexTangent = std::move(vertTan); + mesh.vertexNormal = std::move(vertNorm); + mesh.texCoords = std::move(texCoord); + mesh.indices = std::move(indices); + + file.close(); + } + + void SHMeshLoader::LoadMesh(std::vector& meshes, AssetPath path) + { + if (path.extension().string() == GLTF_EXTENSION) + { + LoadExternal(meshes, path); + return; + } + + meshes.emplace_back(); + LoadSHMesh(meshes.back(), path); } } diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.h b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.h index fc8b548a..3e430aca 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.h +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.h @@ -1,3 +1,14 @@ +/*************************************************************************//** + * \file SHMeshLoader.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to load gltf mesh files and custom binary format + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #include #include @@ -12,10 +23,14 @@ namespace SHADE private: static Assimp::Importer aiImporter; - static void ProcessNode(aiNode const& node, aiScene const& scene, std::vector& meshes); + static void ProcessNode(aiNode const& node, aiScene const& scene, std::vector& meshes) noexcept; - static SHMeshAsset ProcessMesh(aiMesh const& mesh, aiScene const& scene); + static SHMeshAsset ProcessMesh(aiMesh const& mesh, aiScene const& scene) noexcept; + + static void LoadExternal(std::vector& meshes, AssetPath path) noexcept; + + static void LoadSHMesh(SHMeshAsset& meshes, AssetPath path) noexcept; public: - static bool LoadMesh(std::vector& meshes, AssetPath path); + static void LoadMesh(std::vector& meshes, AssetPath path) noexcept; }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp index 342a0aee..a2fc3b77 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp @@ -1,3 +1,15 @@ +/*************************************************************************//** + * \file SHTextureCompiler.cpp + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to write data in SHTextureAsset into binary file for + * faster loading in the future + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #include "SHpch.h" #include "SHTextureCompiler.h" @@ -15,6 +27,8 @@ namespace SHADE auto const intBytes{sizeof(uint32_t)}; + uint32_t mipOffsetCount{ static_cast(asset.mipOffsets.size()) }; + file.write( reinterpret_cast(&asset.numBytes), intBytes @@ -35,6 +49,16 @@ namespace SHADE sizeof(SHTexture::PixelChannel) ); + file.write( + reinterpret_cast(&mipOffsetCount), + intBytes + ); + + file.write( + reinterpret_cast(&asset.numBytes), + intBytes + ); + file.write( reinterpret_cast(asset.mipOffsets.data()), intBytes * asset.mipOffsets.size() diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h index 494907f7..d8685795 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.h @@ -1,3 +1,15 @@ +/*************************************************************************//** + * \file SHTextureCompiler.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to write data in SHTextureAsset into binary file for + * faster loading in the future + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #include "Assets/Asset Types/SHTextureAsset.h" diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp index f70e21d8..68f86030 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp @@ -1,3 +1,14 @@ +/*************************************************************************//** + * \file SHTextureLoader.cpp + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to load dds textures and custom binary format + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #include "SHpch.h" #include "SHTextureLoader.h" @@ -98,13 +109,39 @@ namespace SHADE SHLOG_ERROR("Error opening SHTexture file: {}", path.string()); } - VkFormat format; + tinyddsloader::DDSFile::DXGIFormat format; + uint32_t formatCarrier; + uint32_t mipCount; + uint32_t byteCount; file >> asset.numBytes; file >> asset.width; file >> asset.height; - //file >> format; + file >> formatCarrier; + asset.format = ddsLoaderToVkFormat(static_cast(formatCarrier), true); + + file >> mipCount; + file >> byteCount; + + std::vector mips(mipCount); + for (auto i {0}; i < mipCount; ++i) + { + file >> mips[i]; + } + + asset.mipOffsets = std::move(mips); + + auto pixel = new SHTexture::PixelChannel[byteCount]; + auto pixelIt{ pixel }; + + while(!file.eof()) + { + file >> *(pixelIt++); + } + asset.pixelData = std::move( pixel ); + + file.close(); } void SHTextureLoader::LoadImageAsset(AssetPath path, SHTextureAsset& asset) diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h index ecc35605..e84fe5cf 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.h @@ -1,3 +1,14 @@ +/*************************************************************************//** + * \file SHTextureLoader.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Library to load dds textures and custom binary format + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #define TINYDDSLOADER_IMPLEMENTATION diff --git a/SHADE_Engine/src/Assets/SHAsset.h b/SHADE_Engine/src/Assets/SHAsset.h index 0ba2285f..8d7b55d1 100644 --- a/SHADE_Engine/src/Assets/SHAsset.h +++ b/SHADE_Engine/src/Assets/SHAsset.h @@ -1,3 +1,14 @@ +/*************************************************************************//** + * \file SHAsset.h + * \author Loh Xiao Qi + * \date 30 September 2022 + * \brief Struct for asset identification and meta file writing + * + * + * Copyright (C) 2022 DigiPen Institute of Technology. Reproduction or + * disclosure of this file or its contents without the prior written consent + * of DigiPen Institute of Technology is prohibited. + *****************************************************************************/ #pragma once #include "Filesystem/SHFileSystem.h" From 5069a42319ee3142cef93c0f56e7f9f85e820593 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Sat, 1 Oct 2022 13:12:37 +0800 Subject: [PATCH 09/18] SP3-237 Mesh compile and load successfully. Although now path to load/compile is hardcoded. Flow will be done after MS1 --- Assets/Cube.003.shmesh | Bin 0 -> 31656 bytes Assets/Cube.012.shmesh | Bin 0 -> 223192 bytes .../src/Application/SBApplication.cpp | 3 +- SHADE_Application/src/Scenes/SBTestScene.cpp | 2 +- .../src/Assets/Libraries/SHMeshCompiler.cpp | 19 ++-- .../src/Assets/Libraries/SHMeshLoader.cpp | 90 +++++++++--------- SHADE_Engine/src/Assets/SHAssetManager.cpp | 10 +- 7 files changed, 65 insertions(+), 59 deletions(-) create mode 100644 Assets/Cube.003.shmesh create mode 100644 Assets/Cube.012.shmesh diff --git a/Assets/Cube.003.shmesh b/Assets/Cube.003.shmesh new file mode 100644 index 0000000000000000000000000000000000000000..54cfb867570cf8bdca307ccb4b2763a4bbd29892 GIT binary patch literal 31656 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

m#f?V1!0@6Y<*WGlKe`?kK$#j|V2W3!SMIn#Lv| z_e)o3zz#S;KOR4MZxs$b>VmNv@hEMK<;85X&kBpJ67cna0lb(^K6JrkX*|CEepPZN z(F(gAOF;eIev)|uyP<|b5{~HMPRi`8acS!$T*Il5legvGk9rcm34I|csI|e|4Jp_@ z?YYF%WH27Sbqp7`x+%GtYlq#Y9K)4^t~KM-M}zT$Rx0`(=`V5DvqO#LsVIbX=f&)` z#vaE9q~O+wt`ae~OtMGQyD2#Kb`So4u|c*Yw!d}^hdG%^IzDv79RpI(BC97KnCpNS z!jm!lRjp+AIKZ>dlCg5Si6k$MpznvH=&|aKWLds5meZq{__mXz_geYe4%{*Prq+vh zc;SrqIwhl>UN3&XHlX*@Wb~Z!{-qRcschgKlU}^;#+a}?bAm-igUsiCh;h!oAd6$ zcDPR?0rMxa;P9kymZv9PZQ>-H%35>(7G2fledK3JoRU97QN+f-*JD|&xSp0F~ zl4M6!2;v*PcwDxkHCY)w1kd!5f1mK|eM$En^8DU79N=t0in9QJ$RCF$ z%RI@v-yDt{6^C_geI@-h2)4czi+PQ0iRW`C9C;uXbI;wEBrbMBml?4*UI&Q#btioD zDHd(?CXoG49q@UlSiDy?gXkP`#6PC7xMN6PvM9{~3qHi4{+H3DrmX`udBh@~?nc}X z+9PQli|+=EC$rM+FuODs)zkWtG{Fv!&yL07K4VD406Wa`jKf%KB>NB8Vf@ipJUVzL z>FHyKQySthIN6KzmglRD<8bodWklKBn!umz=3{A z_~nS9WO=L``s_)-h|6k{#uX!QA5FsL1A6gL;D&a$643ZlFFs0h1V+wJ!iG@|yy+A- zRNt3?*J@t!f82&+{+dMenmtg+jUI&o1@XA|khx$XbwMj>95(3K3gK^D@%oBbl$lxz zhb1oPd_NYs<)8Q^uC7>mN&bCZr?-6f)~=YeF9tQg^x`Y(-SGGRXw>(5z^4bh<2=k5?j3`V>>C5YVb(8)pz6%Sl8VYPIH5;0zPT||GT`7C{BtlC7d{D>A?lqOp2&kdv*y2Oe~e!%?UD@H3Z>L-kkDcxG5XzE;Bn zA9RSrO8yT2yWKc+coB_`Ay;_^=P@|#NG$%cG!=}k$KqmL`Sq%53F@cEV6Is-#!PQ3 zygO`*g+CKfcf%ctnD^P*V!(q0T(i?rBIaI0Y~}ys5-_Z5H~xRIt*;I4DNjJxHzOpD zqiry9b^>shPTIVPZF`QSAk&K!VoXW*~H|EknPqP7d_0t zft3e@-hDe^c5o&Z7eor$4@}W3G7G;w9V7JV*%>cvJcW@~u0m0vF{%&DM%5`^LS9Hm z1kaOrp>4E~RIZCg@-;VkUl(3a(!tWlad`Sms!%rRG%@X2i)C`(1Pe|6&wo*A`Noks zFO%l%aboVwu}9iG^JN?cZ*yYa&84;-c;?-l?HJ_5ydE*T_BZC4*CXa0r&c;KSIGZO zSDyJnGuIV4GS8^Tv4uSIjH`N^o;gi@x?YtsH_9OA zBhTC@|9Ul^c~!O{tp(;)o&7MCXHM4LowfpVvMRnz;hE1h)OWDJd@jF9(L8g(3?uvn z=6`jLjpr2}S%KUmJ9=n=z}&H-y!$+J&@vAl6qt9mrT90`{IwB_k_G0k`88Mz%#Rau zPxYGu^WemM)^4D{oVzcZY6Rxob^I`1V7{KW!&iYhde@vs3e5G>+FdU&ziYJ$N0M1g!4n4hTqWvIa1M$29=1?Dq)?l2da7rFFV zrNF$%hJm5Sc;=saeIFw*=X9SWjc4wv=7gmJb5}hVyyKboT5J+6FxNFv=pzjO&zXJF zvP@vkY#Uso;l!eRVN6{0r#1Dm}mZY zP5m^1IphCqj^LSl-l#iOVD94?C5dEXHac;?zKU35TTuKhHXbe=i;5BDzj05%>`Yk)Nbk%jf%S(BA7@TkXUN9+(E{rpiPaiFS@+10 zR}lj1Et$EeH)UNV{=;_)tn*~|Yh%hfPY!onC$PR0b>;q87P6yQ_`hzJ`1d^Pc**P-Be0H_vOg(2>xXds%7EM!SVP>$(Z-HgIE2XR}DbPFLiFE{t zx#>=>lyxPE`9)BX6YCl>-*QUII+1KfTyZi#+R|s;=%Ju)e9hGDm^+R^3~$Q(#?HUZ+C@)_HaI%O!zz zUO5#V5?EhWm~cm6eObLb#|!`0uO-w8th1}!GFf1qU1C;Gel4(0Fflh)o)B1P*V$X2 z1=bH%q*W*|FKk$o24zm%)4rbs=7<&3o|O4?SKk^@=8Jua^q|bYyIkr-nLDOizJW4# z&mqH?GLI~`?IFrMvOWD5Qs$AB434GDBO81mfHIG)rF#lx9+_)Q5M>^j%=#o{9+|9R zD`g(p-^`DHQf7$GLNjv?hIufS;qYk`DX+FdSs7A?WfEm zE52z*nMbyK^l8dGGK1MUlzC+R24AJjBO8`gL77LUD_o?^Bb#PdNts6`X5%NfDD%j~ zd~{ChQS8Ol7esNXr1d1T%?J1O(X zcHCJ}p#fvHP$ov~RQs$A(wsWJ*BZFui$~-bL2Zj!z%p()? zs=a!Yd1Q5C2xT6b*PQ8;d1UhgTq*O&yox+1^T>*h`cdYQk@m|d^TJ$kD$yWqerqS^T?vEMN;OGc`nMP%p)tBv6eEAOg82)Wgc1fu58LYvWOlVDf7r; zG~y}q$kr7eqs$|7e;rDhNA|i`Hf0`J_ab?R%YPo(K0lr^kL=Ib^OSjHrh)mCd1RL# z7EtDqiTS0alroP@%+uFW$~>~6H_lV$kxh5bq0A%ewLP0MkIY_(rOYE!ADKd#N2YDR zlQNI&Wt(WqJhGvZb(DEz`dz~*^T+}=FQd#O6SLGYj53c*%x79{q0A#Yq!CV;M;5Q) zOPNP@ST>0=kF3MMNXk62@`5PJJhBG^V=42XC9d%!#py@oOxu5JoCsD8Rn5G=FB5gQ_Pu1rpPmoOp#$8nIgkHGDU`YWQq)P$Hc72GmlKnirX@eOw5YM znR#T2JoCs-$n(r2Q)HM&rpPdlOp#$8nIgkHGR2&EWQzQh|2#59hIwR)IrGRAdFGKR zGRz}W%$Y}~$TN>jkzpR0V$M7=MV@(Nr+1}M=8}QhaAd0vW4MklzC(~KcA({BNKCzbu?ujnV640OQXyqyPJ|jnMWq(MLpsv^T@=U z-TgRa9+{YjrzKJ5k%`$fK8rGsOw4`yAE(SC(`=bdnMdY2E|D^i%<4lLWgeNBM;u6? z%p((X$FbRzd1PW##VRGLI}hI+ikz?CXq3 z$~>}VvEh_?WMXy-J4~5J)>SQvGLKBmA8$lZ=8=hck~ESskL-VO|M7<@^T;alj!@>2 ziMf+!6lETnf|*AayEu|Ek4(YLBQxwAL77LUVCIpv)Hp<$M;0f~GmlKniglPfCT3&# z{W6bCu?OanDdx;0Q>?>0GBIaNilWRTgDFvzd1MpAA}RC8#C$g)k}{7>%x&BwDD%kv z%#EPTBbzHt!C9V*kt|Q|y^}WI6KvFptbpz8~h1ef5o^%p*G>-vjf=Ru@K6 z=8?t3Mo{LF{TO|SGLOt+Srla+**|%alzC)|4D-muoH8?tGLKAgTjr68S#w$xWggku zqDaa-GBFo)jHb*ZGi)P&{_vkiCgbub^T@=kx$_)l9$D$x3zT_eVperIN0~<^W-awR z$~?0F#UUxVlzC*lSsrB`*|st%WggjfIWv#!d~hCR9+{YP<#XndDVTX=w{ztEYyWv< z3T7Ueq%4;*k4(&mbaxGnR@6zemO%r7ICGLP(adM;%iS>DV%$~?0A zae0(^WGQh{$~-c+ZBoiSvSN9jd1PV^mR~#b$Q0MhJTfsW_QTvUF)Q}WJTe6{k8F{A z&&(rxCf_sj$oiz^Qs$AR$oI@VGBHW3K24cNwydlCb@6{58SdXknMc-hxIJYa z*~`F_lzC)YV^>k;k(C`xq0A#ITD^!ek8J+JSjs%Irnl26^T;8lzC()WWNOFk*$j~ zr_3Yk>DG-hkL=UF$#lVg9$EiO)|7cYL|L=8@fuUO<^g7SS+_ zGLLLej}Xc{vdKoFlzC(t>tiVM$R;gYLzzcrBzN1GM>f_nfHIFveM~B49+}#y1C)7W zVqTNKmNJh_%x-_uDD%j~98tEPGLJ0sUI1kt+5LVglzC((ZT3^{fd@bgY4RKDz%p)^$O2o_~8(H%YW*(W*idf7%G6k>&GmmUa2z`(Kcx0P$y)pC1 zDi2S`%p;2|kHpL)vwtxYGmngD`eWvikywD4M^v=WWQSzF!RVHx#R9a%setl zR!FzP%pPg2Gmk89st#rz*_cje%sjG&3VF;tG7BRI%sevv%Y8BP$fQmJ z%sjH#_pdqTks0KV#LOd``>ldw9@+l2I+%H6$*!#&^T>|a-Qbu<7QIggGmi}EN@3=a z1!ZVp=8^62d&4o0?0AkeW*(U&x390^m`5hbFQQa2^T;Gw@sl)W9$BS_3T7Uec5EHT zJhGpQr7`o!oG#UI%p=PhtBjdPR(P%tW**sOS9#1lvTm(Fbp$~tn94@ zW*(XC*Ws9XWKc>AGmmVU#&FC$vd6XqG4sf#tr(1%M|M4_KV}}8eYyf>9$8#^AIv;5 zhp&Aw^T@JgTR7&C&C9Ffm`A42_?=@OS>C`Zj(KEZiQhQpku_R<;Fw2NSX9L^kL-nW z6~{a>oya#F^T=u*zvh@nru?RsV;)&nK`qBTvN`cmn0aK!G^8=}$odUb#>^vg%~HY4 zBfIo)IA$IhoT!JHM;3a0G-e)|#gMU>d1QMZjKRz!(|JA?Gmq@!7d^~8vJ<8Hn0aIt zJBDNCk)4Pcg_%bdyh9r^j|@H^jG0GfdQulNk4%zJ7>>ovBO4N{kC{g%$vzh>G4sfF zM;T$}kxBB95P+FSrmtg)nMWqciJ|tGd1U<@OfmDwB)Kfm5i^hMm+v^tJTgg6SpqTh z$Q~m#%setlmH~q?^T>)gY0NybzgW62W*(WILk-6~GD$94`hjB}*$cH79P`K|S^n1@ zj(KD+SG?hvM<&VNGw*ZEBTJf@&M}Xy+4>;IJhG1&&p76h<(|65F^^2yqaS7-nZgxA zoJc(~0rkjC*=DI#<7an~i&BeuhI_ z{6V?(5UlZ}8UoWq5J0Lq*12j(eE`;{s@pXa+t5B$>(E7@zk?%YeX2Ii$vA>`sK(DW z0_)48FzZm&iA=`|v_m!Z#~ARdbT97hP;E2G7hd*1hgpZJBu}?pje9#(_s|a2>08%f z)}iV&D-g2|)o`;E%sNyhd96<*W*w^c{1#x=p(+&~idl!MBoA$k!>mJ9l7mZ^W7eVi z|HC<>BQfhxjciu|RFzaI7=M{@t=W1$o z1ZJJ9RrfYx*17uj^&!kUS3O<#VAi>sTab&H`y_E)?HAzn0I2JSaO_JyJ*T&3!yS8mC zX5QSaa&yeQIXBT1%sjj3kqMZ&cvZ^uz4+tYbp##9%*!isIg6R&Z1k=OGsijA@hN6r z^V*pum^smLM~`9V`ejZ!kC`(_b|z!y21?)ez|0M_7VW~!A2hAngPB*@|H>}RJj92q z&tv8xdMamP<}DUg-p98>td~Lzt zCzyHPl6<&-9%jyXvQsf;&bTDwbGbN;I_CP+F<*0%e)l`19wvVq1HLGxVCJoRmF>sO zPv6lJjhUaWmaqad|JvwzD9+eW2Pe5r1$l>qG4r)|U+~1t*KXaOhMC{}>{9|}es_n{ z1Q1e=zfiCHeBt6wG|^Z`-$E=8Wrhq+sTNOY&i_7|dMq zMZVFP`Q|T7<1ll{CHYc$0%p#*Fm)?t&bYz*jhH#(whz-VbH;UE?8eL)zn*XiGiSW- z*W;Ku<26gOFmuKYK4oF%jBn=8W9E!Y^5+*9F>}UedR)cK8JFbH0ar0|#=)-~%$#va zrk`V&IpewCuVChk$G*RgnKLfQC9f`F=8T_BJdc?(p11EJX3n@II~kqD%o$%>PWQI? z!eRaH+JDm^t9;vH6&J+*>^hF!Q)2xg(sz%;WxSTZoy* zEy?Ylb20O{4;vE9JZ?#LgjX>0xJQNNVCHd4^4SO1F!Q+G_F~LD?i-iSV&-ulkIBKz z<9-(U4`v?s(>0qh^SHxsCT1RYW8*>0JZ`rg*D&+A2lbrA%;Wy`17qfKzswe6=5aS) zD8S6!?rGsLbGOSX3NdrHEiGWZePJF!PAZ<=$ZC5leDq<5SE$V#AcDn0dsjXBK1T5vRr# zV&)M~9C!mWkNDatb;5j7Np`+Jj4+?{TfHG+KIxiix`g?pcA>)w^GPMS)WnD|pHz}t zWJeO_lV(0PB+MtBBGe+xCyi|zPMA;XC_9KSpY;59Ve^GV+=QzFbKO;*$*%qNxPQJg-x_s1udWQAc`g!!ZyrTT>Vq;q|> z3G+$000Y8&(j&5lg!!b|Du#slq{`Eb3G+$seJ~-+Cza&=iYA2lqylI{m`^InjwekC z^GPMSxzv;}pY*@6^jmYneA0dj;|cRg!#|i2=99)HSrF!vo_#ctFrU=thc#h7sn#hA z!hBK#4I9FI(scq0!hBNUNpr${($(j!3G+$!B}^pDCvC5_BFrcCdT&OUPZ}vVfiR!+ z%_396d{VWjNrd^NrTOCt^GT=6nG)ucPS%=4m`|D#KAte2RG4i-m`_^x$dWLhwC15X zVLs`p4HF6TNwt5Q5$2NyO)@3SC$&&8CCn#XWo1H`PkQjOF=0Nbn~MoyK53l431L2| zb*(XBKI!sk`u9IR>9tR0g!!bh0cM2xq;|Oz2=hrZQtA8k$0zl+uq4bURbMudFrW0Z zyftAysceKLVLqwn|3G+#3RhSUwlOFhPLYPmw zae)b8KIuB%gfO2}W1|USKItHOd*+jNRhbgzlTN#7N|;X?9cE6LPx^2#J)S>4>FJX3 zg!!Zj8Rmrfq%Ymg3G+$2KbjKelU7_aCCn%7IciIoPuk#UOPEi3Z5<@cCq3dIAj~IK zhKMkqbmnIvVLs_+BRj%;()o#iFrResLp#EJ((lIrVLqv8ogHC5X^Isf%qLaaVn>)y zS|2MU%qPvfKbbI}RQIbbVLs`4ZA6$)njC6Nm`~~*0}1m<)u|HAd{V4qPnb`7Fx#Fm zpVUi!3SmC!KX2^_^GPkFrV!?nO6l1X=96aVOd-rC{Z(R5m`{p(90~JDb#FNm=96X~ zb|TCtRSKU%m`{3jsWV|d>6imk2=hs29(5+nCw*c$g)pDA&fb|YpVVNvBVj(NoR1S> zK55H4N5Xv4%DYB{`J|GZ=x;=rPb$e85k~Yg?ms^1f8#M*#}Vd}8m<{fm`^InPY#SD z%qP`VG$hO?1v`xh^GPLnW33TkKB*+%J7z+dPb$fm`WX}ElNyGa66TXia^h=a!hBMh zZh69d(v+102=hrz3ls_SNtMjx3G+#h$Ep+NlMeD6NSIIBBd1B2PpUOXoiLyDYP~99 zKIz%(%5?LU|M;Z4I{OjklfF!rCCn$acvH>AYyW4@ub_peIkqoYtj>9k?H6`vrx(YZ z)5vAc9NTNG|I~3D+v6@tC;O&_M}UlV|$`W^4&8k9NSy1 zJD^6)_C%B9QOcjiY#+4Aw3D6f>DCaUDQ0`U$!E%QY)`kU5Dkv)P6EW+1k>qabN3gyZNj|UYiCN!^ zzmg?peJ?Mr{Nz~Qi@p0Pj`h9Nn0Iol@5Nr}8uhgQ)Auq*_dUn@UV@8Ga;)#=+0|5z z^}R^)<_9Sp>wEd0y^mvkFOn?(dpF1WUOas_aIEh|l7oIHa;)#A_-r!A`d)T!JIt}Z z7Z20D9P4|TbMXSl`d&))PI9d8rQrtQSl>(XoAVs&dl}{YfMb0x-taWX`d+T<-r`u_ z%TRokV|_1~O*tIvd+}d)fn$9yPDhS%tnVfJ;VzE#y`*LlT>rWj%HJ5r&0Nl5F{p(P z7B-2SwIAWjel^g3ZeK3d?iQ}3-;+FAZ_ORLTZmT~H$Ye6sK5C5oDzKSSuNC!8OV)3 zSBi^K9Xx!aODxHKuD-zj`QPE|Z3W_r)|WW-ehpkb>d0TbQLh5qum1*n0npt3@lU=atNFdh%|TyiCrNg`Y~UyC*!&ru9++V($xa*I;t$bZ zpy;T5{?$3<*jn!!EOnbL#^bAScJLS2X2083lB@O0apHz=aP+and`T|*@fJtz{|f&N zD6lp7R*r{p-{BgI1G!hKX%`3AG!1;OGA zvdYL>Yo{Q!|5@9Z&B{oNK2G^CIc`_CD*AbSnP57XA`Xlgh?dj)&bsKu?Kq~64v2yU zj!X2oav2R&`b0%=p=mRhGh6-t;z3WhauHsdsPFk?!B*XMoZTBu^s&`LpzL#k^I55h zKK&njeZ?^@-g6KNTQgK3$#?K+PVu(}YLZj49rR`w$Bj})!*&3t=+?7lDe{IVu$qt6?bp}_eJ)j)dmdHcv3 ziDUj5h`1R>V&^~S=eYZ~zZmGc2u9{AqYd=@vvXTiC(TJRJO4giqd4~7-J`d8_UHVk zKUd}0`*n;yeqcf{cYd)d%B9bHKz5)wc#9&ky8XsRl9T)n{mG|=KM_1rSEe?ELRrFX9gWc^@&o4LkquW`uAaf8IMG zeS8g_0J3car+FS5@U>UgQ4{F6CioOfJ! zFjoz|(A)4A=kBQxZc})FoF8FDn ze=e@DS@yO+C<@d>Ltm^ENb=PNX>jG8I%+ZgZ0mfrN_ew+AoA^!%b)(|zHPsE3nV%3 z&oONN>L!rnne=#u(BqM5xhU}a^IB?0?-8)$>86iE{=BZe^u9JL9t$^Z)IdrmpKYU_ z?GeU3QbPmj^JWKG3pcD(MJ{av#JcociRrnTqclR0rFKiOt6K?0)AJwq=R6Om`8n#( z`M09ETKMPvQlx*EWXC_}-)PfjLE4}9&YnJ|BpV$R3(wD1LH_i4XUu;LmKC(XjTbln z#Tt)j*QI|e{5P;pJi5CQyz18mo$4q3#Rlwu!HgZVDTHDJKRE5*9%w1n&Ho4vB{#v_(+-PYj`#$0G@IeY_U6BMzJ3Kr%>4<;=x5?l2P%O7 zf=0L{Vkjrc&a29SkzzBnA7a5Jz-QnXX@TUrKBwXE0c57OKqDs=&OWIMxX89a=_NAU zO0T!z)F#fc?g`SxboBQ~7NsCfqtnKZ#0pOVCqyjl4X zn7i;NoY1^Y?4wo;3j5VV6<@J9Z_7Jyf9y}#xo4bs$EqrDadbWO$%+#jZf^v$&`nHU4ddc>2x)jtdYk*^$*4hqU zBLyS#8{wFKv464mxxUa}rIGHE{ zCHe8BR$zIq9xl4@PAtj3_xr%DstqvQ=xn}1Rx^0jryj0wN)=m)^S~HR8+H zKY(+i>f!h?CY&U1Rw)Gv`gPE9rY^Vh$z!m*Z#^8d*84A3w0Hva=KX{}tygiD=8wUR z3r%pHj4$WW=Od8Tr{}-Ho+}*p0qi$wf<@7$Tv@<-@UgB5P9IG>^jw~RA9S9Vq4T^X zFI6uE`E<6=rn9{YenYdg23pbCUXn9EJp;XS{yjS9=Y*Dl7&_-W(>Xt{^)2X~?KSCa z58SH2BRbnB)7f6j^E>FB=S%54-|`U()8;Tw8qcnQwg+6a2*`C)XP zA9b}E^v?4!be=cv+XR~E3@@THyd>+&wE+h@&%dYhyd?V>G=OS4&uh|o{!!~^U`gls z3_8zOl>Y>m={#@au-mrh;b+i0!zUk2%&*zi09MeseNbS5t=;x7K(}{pH#?A9yrBv7 z&h2(|ZkJ^Dqu;S5B8D5g@S{lK9I?qSVs?JNT{SJEP`PFouUw-8s=uhYQJUY+o z7FU7=be^9>=XpuK#XYBcS~b8rI@>32dZ^{`qu!{*?vBq?Hg=gf!^7EIGydoie7=4be?}m=XvuSjC*r_56yW=?$W1D2hI79 zH0R~#731EV_oq28$qE%b?#=m0H0NI`-^RT;KZ)kNw_z#n&3O}=^T#`%;NG0SM{_>t z#w*;L^Qk)w^UOz7;@+HJOLN{O`X%no`AVAel058kHSW#%#Wd%aCVaxZIX{i&e4gtE z+?(@&=DZ~Dee(tP=KM*T^O8K|<$K(l^Vez4n{T1dMRR@(&3V;?kGMDI6KT%ZM83wo zIscaCd`;Fz+?(_9H0PnH68Gl(Hk$K==RV`!oPR)bUXmXVeTNNb&Ue$Cm*kqnPq;Vd zwHG+#M_+u4dvm^s=Dh5n=eRfLU(%c}NO+EWb3T{myd+Ove;4=W{1ck<{hIIM-kje> zb6%27p54a1IX|7|ynlKD?#=o8H0L{xKE=H`Z$Wcj|5YjO&3Ofy^Ir7#SG_qunCATV zk~}O=bH0M+eB%x=4yW1vhGu(;b16=z*-$ zf_t-FXYV-i%4emxH{0WBwo9_|w<_G5^HCAX`9@OJxHsqT)0~&&k$c|b-po&=nJ->m zhkJ8gi{||LT|aSe&VO%Q`xk4^`iXlpKSegy_IP$1?#=nxH0LEbQdEz7bADymmHfPr zYTTRi=``ot{%yp)IscvJyd+;5{So(O{*Z$AVo9Fc-GF=ZKbhwLk@X*OZ~l*=`R_x2 z|JIxT6*T{^@BWA_Xyz}WnSZjj9{1*aKF#?C=?}O!=aXp84_W&J_vZXnn)7>ApW)t| z7t)+xx|GAc*$!y7uQnz)oMyW*&GzOrf_wA4ljgb3HjI1oJelUXBwH?ehI_O9H_i5} zO;2%ewinZEmt?NsG5$bv-izk^L$NB>ZElAPudV_Ajg5*1;;sAJp={b}Ajy-`)NuFZ z4tU~79FXLo9}0M00sS{MCJ9KgD5x*>ZrWi@=~^Jk6`6{7=FJZHcySV_i&wyfYVGic zTRcc!E{~;ew!vW)tH7qkGC1N}8-(|hz>3FGc+}=Lco(e!b$Kn^b**+dDSj>JuK3AW za&6GJI03wv^@WQ&)(!`LSqmD@wsT!~+Tpppb${`MPqkc4S3A7_bR8&EY3C+$9Wbl! zdZ6#v%4NOigwtoP0|A+RX@^4x6sxQQbyZ)vTDlj5U)?$&?D)iK7Is1_hjk!Z?=5G& zu>*EISPN!azTlQj?ST7NCxSe!S6m_8Giz6)2()B9=K_~?Lfy6Tz`*V`ci>_d6jvsI zp+@CgQd$>GTN?`!2UT+}Tf3p1V;pEP`pk_h=z^`0B49c9E2kOU4eQMkfQ?BDcl=Wq z9ONzn(?`nSLmgdk#n?o!Z+R2<=yErV{I=#VPB|)ti=TBvlP$48lI7Lwx%28haHP&E za4zRNcV43hCXQJFa*zM!s_lB;TLu_rMb?B7yhYemGX8 z2MWxWg5Tp*@WOT7aJcO9zu0D$95y`P4JRLp0g_xCrHq|@yI~%T0{@NoSSsM`sxG+y zd>lA*S`kM-?}VOb6M)!)x)?XRVA=SXzc_4wI^Lbz3HKaZ4J7$clRCD}=z>GameYA> z5Z;#72?w;T0M{?858NCkRM#d?8)`DqYaEX$f#X(--$^>VUF7fuPR0l{41q zf}<+~!Ke8O_!iw;Z{F{4}(gr8Ljs`o``r+y!?a)v?{4dV*>gL|Jx53Eh zEP6#wZm~`VL*RU8#n()2fUIH4ARDZ<9fcg!vV7+z}jh_ zIh*zlIMsbAus5pYR%>*?`wv&r8L*byFoM3W#ecKz#cD2SSv!1>qd|c~J=aJxq;u

}~=RTc&?zhE)Rr|sn5BQLb~>3SAmX)W!#H7 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

y^Tc5gv4OA-D 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 QjKFLmr8b^C-J12HH>J3PCN%T1C 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 literal 0 HcmV?d00001 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 0412028e..0584d39b 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -81,7 +81,8 @@ namespace Sandbox SHADE::SHSystemManager::RegisterRoutine(); //TODO: REMOVE AFTER PRESENTATION - SHADE::SHAssetManager::LoadDataTemp("../../Assets/racoon.gltf"); + //SHADE::SHAssetManager::LoadDataTemp("../../Assets/racoon.gltf"); + SHADE::SHAssetManager::LoadDataTemp("../../Assets/Cube.012.shmesh"); //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); //TODO: REMOVE AFTER PRESENTATION diff --git a/SHADE_Application/src/Scenes/SBTestScene.cpp b/SHADE_Application/src/Scenes/SBTestScene.cpp index 7c7ad1e0..6daa3645 100644 --- a/SHADE_Application/src/Scenes/SBTestScene.cpp +++ b/SHADE_Application/src/Scenes/SBTestScene.cpp @@ -42,7 +42,7 @@ namespace Sandbox std::vector> handles; for (auto const& mesh : meshes) { - if (mesh.meshName == "Cube.012") + if (mesh.header.meshName == "Cube.012") { handles.push_back(graphicsSystem->AddMesh( mesh.header.vertexCount, diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp index 6d4b6fcb..12b2517e 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshCompiler.cpp @@ -18,7 +18,11 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPath path) noexcept { - std::ofstream file{path, std::ios::out | std::ios::binary}; + std::string newPath{ path.string() }; + newPath = newPath.substr(0, newPath.find_last_of('/') + 1); + newPath += asset.header.meshName + MESH_EXTENSION; + + std::ofstream file{ newPath, std::ios::out | std::ios::binary | std::ios::trunc }; if (!file.is_open()) { SHLOG_ERROR("Unable to open file for writing mesh file: {}", path.string()); @@ -34,17 +38,6 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat sizeof(uint32_t) ); - uint32_t charCount{static_cast(asset.header.meshName.size())}; - file.write( - reinterpret_cast(&charCount), - sizeof(uint32_t) - ); - - file.write( - asset.header.meshName.c_str(), - asset.header.meshName.size() - ); - auto const vertexVec3Byte {sizeof(SHVec3) * asset.header.vertexCount}; auto const vertexVec2Byte {sizeof(SHVec2) * asset.header.vertexCount}; @@ -70,7 +63,7 @@ void SHADE::SHMeshCompiler::CompileMeshBinary(SHMeshAsset const& asset, AssetPat file.write( reinterpret_cast(asset.indices.data()), - sizeof(uint32_t) + sizeof(uint32_t) * asset.header.indexCount ); file.close(); diff --git a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp index a1a8b29c..b77d429d 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHMeshLoader.cpp @@ -19,7 +19,7 @@ namespace SHADE { Assimp::Importer SHMeshLoader::aiImporter; - void SHMeshLoader::ProcessNode(aiNode const& node, aiScene const& scene, std::vector& meshes) + void SHMeshLoader::ProcessNode(aiNode const& node, aiScene const& scene, std::vector& meshes) noexcept { for (size_t i {0}; i < node.mNumMeshes; ++i) { @@ -33,7 +33,7 @@ namespace SHADE } } - SHMeshAsset SHMeshLoader::ProcessMesh(aiMesh const& mesh, aiScene const& scene) + SHMeshAsset SHMeshLoader::ProcessMesh(aiMesh const& mesh, aiScene const& scene) noexcept { (void)scene; @@ -43,8 +43,6 @@ namespace SHADE .changed { false } }; - result.header.meshName = mesh.mName.C_Str(); - for (size_t i{0}; i < mesh.mNumVertices; ++i) { // Vertex position @@ -95,6 +93,7 @@ namespace SHADE result.header.vertexCount = result.vertexPosition.size(); result.header.indexCount = result.indices.size(); + result.header.meshName = mesh.mName.C_Str(); return result; } @@ -143,16 +142,21 @@ namespace SHADE SHLOG_ERROR("Unable to open SHMesh File: {}", path.string()); } - uint32_t vertCount, indexCount, charCount; + std::string name{ path.filename().string() }; + name = name.substr(0, name.find_last_of('.')); + + file.seekg(0); + + uint32_t vertCount, indexCount; std::vector vertPos, vertTan, vertNorm; std::vector texCoord; std::vector indices; - std::string name; + file.read(reinterpret_cast(&vertCount), sizeof(uint32_t)); + file.read(reinterpret_cast(&indexCount), sizeof(uint32_t)); - file >> vertCount; - file >> indexCount; - file >> charCount; + auto const vertexVec3Byte{ sizeof(SHVec3) * vertCount }; + auto const vertexVec2Byte{ sizeof(SHVec2) * vertCount }; vertPos.resize(vertCount); vertTan.resize(vertCount); @@ -160,43 +164,43 @@ namespace SHADE texCoord.resize(vertCount); indices.resize(indexCount); - name.reserve(charCount); - for (auto i{0}; i < charCount; ++i) - { - file >> name[i]; - } + file.read(reinterpret_cast(vertPos.data()), vertexVec3Byte); + file.read(reinterpret_cast(vertTan.data()), vertexVec3Byte); + file.read(reinterpret_cast(vertNorm.data()), vertexVec3Byte); + file.read(reinterpret_cast(texCoord.data()), vertexVec2Byte); + file.read(reinterpret_cast(indices.data()), sizeof(uint32_t) * indexCount); - for (auto i{ 0 }; i < vertCount; ++i) - { - file >> vertPos[i].x; - file >> vertPos[i].y; - file >> vertPos[i].z; - } - - for (auto i{ 0 }; i < vertCount; ++i) - { - file >> vertTan[i].x; - file >> vertTan[i].y; - file >> vertTan[i].z; - } + //for (auto i{ 0 }; i < vertCount; ++i) + //{ + // file >> vertPos[i].x; + // file >> vertPos[i].y; + // file >> vertPos[i].z; + //} + // + //for (auto i{ 0 }; i < vertCount; ++i) + //{ + // file >> vertTan[i].x; + // file >> vertTan[i].y; + // file >> vertTan[i].z; + //} - for (auto i{ 0 }; i < vertCount; ++i) - { - file >> vertNorm[i].x; - file >> vertNorm[i].y; - file >> vertNorm[i].z; - } + //for (auto i{ 0 }; i < vertCount; ++i) + //{ + // file >> vertNorm[i].x; + // file >> vertNorm[i].y; + // file >> vertNorm[i].z; + //} - for (auto i{ 0 }; i < vertCount; ++i) - { - file >> texCoord[i].x; - file >> texCoord[i].y; - } + //for (auto i{ 0 }; i < vertCount; ++i) + //{ + // file >> texCoord[i].x; + // file >> texCoord[i].y; + //} - for (auto i{ 0 }; i < indexCount; ++i) - { - file >> indices[i]; - } + //for (auto i{ 0 }; i < indexCount; ++i) + //{ + // file >> indices[i]; + //} mesh.compiled = true; mesh.changed = false; @@ -214,7 +218,7 @@ namespace SHADE file.close(); } - void SHMeshLoader::LoadMesh(std::vector& meshes, AssetPath path) + void SHMeshLoader::LoadMesh(std::vector& meshes, AssetPath path) noexcept { if (path.extension().string() == GLTF_EXTENSION) { diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index 6c617c04..dde3b0e2 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -17,6 +17,8 @@ #include "Libraries/SHMeshLoader.h" #include "Libraries/SHTextureLoader.h" +#include "Libraries/SHMeshCompiler.h" + namespace SHADE { FMOD::System* SHAssetManager::audioSystem; @@ -200,7 +202,8 @@ namespace SHADE AssetPath path{ p }; if (path.extension().string() == FBX_EXTENSION - || path.extension().string() == GLTF_EXTENSION) + || path.extension().string() == GLTF_EXTENSION + || path.extension().string() == MESH_EXTENSION) { LoadGLTF( { @@ -301,6 +304,11 @@ namespace SHADE for (auto const& mesh : meshes) { meshCollection.emplace(GenerateAssetID(AssetType::MESH), mesh); + + if (!mesh.compiled) + { + SHMeshCompiler::CompileMeshBinary(mesh, asset.path); + } } } From c82d01631ce9aeb6aacab89630dbd53569171ee7 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Sat, 1 Oct 2022 13:27:51 +0800 Subject: [PATCH 10/18] SP3-237 Texture load/compile successfully --- Assets/RaccoonPreTexturedVer1_Base9.shtex | Bin 0 -> 349612 bytes .../src/Application/SBApplication.cpp | 3 +- .../src/Assets/Asset Types/SHTextureAsset.h | 2 + .../Assets/Libraries/SHTextureCompiler.cpp | 13 +++---- .../src/Assets/Libraries/SHTextureLoader.cpp | 36 ++++++------------ SHADE_Engine/src/Assets/SHAssetManager.cpp | 9 ++++- 6 files changed, 30 insertions(+), 33 deletions(-) create mode 100644 Assets/RaccoonPreTexturedVer1_Base9.shtex diff --git a/Assets/RaccoonPreTexturedVer1_Base9.shtex b/Assets/RaccoonPreTexturedVer1_Base9.shtex new file mode 100644 index 0000000000000000000000000000000000000000..38e0cd0f80f5299e8e3d53ba07f88462c5f6c9e2 GIT binary patch literal 349612 zcmeFa4_K7vl{ZYtrt0u2z0BvP*Lt-vrbcCo6YFP`#*9i46rOPyO-e9>FuvxEt)!4@ix|`yiW|WPnK7i};0(<3okKY1 z8Etm+X47WV*10as^~<^M`?;U{&-tBm?mthi_MVuS*qE`uGWd@I{yzNu9sCDm%i(Vo z{H=yRNV^>VR>5Be=DSB4`%#X+R$QA5udbcM?_0YV@v7y2t?&ES-k*2gZ@dNmM&|FG z{=U=SV=ZuJy#Gz`_3iV0jIXE7x`+6>Hu;>iTR)5+tZ%{{?}?d8!7z?O>J_Z#U4-ibY@J<8bb+} zU#7!&fp#^?$DSSa{5yEO1wNzkaHqZRwD(vG+!=3o?2$Y6$X}g3cIDf^x0Tao5#L?` zzAlbPb%c?>x0;;n|G$NNZiv9Q?>7pq49X#Fwcl7fe{d`A1e`@_~v4B3DCHp^z zEthA&Y9{NW!AxIzhQr`IU&mpW-M>@DoT%8$9{jJ`crYAm-3NsYZLE^rTVPQ zJC&?Wl@bWoXVxZbz2afQ+jWRT<%CaXj-}s8xGnR_w~Lb87Q&)og=X)dw3P75ycOy_ z(lwqB6~-)0(%>&cBo__e(p=c|>jJ`UhUAHcs;Vl&D>Q#w{quPnFL&xQ-U5H6`rvP^ ze^LKWyJyl}q+fn*F_^_4G%E;Cwq~1KF7JyF9(*am{P;uF0^yxC7R#adGC$$>4-dZN zjr?04;hi;yEuwJv=Y)qKe!3s_DFDA(=3GQ_ zMfSIJt;e1+60Xaft&y_&!-Tg(JYYEvn(_H_#~#4OfZrWHy5s-f@&7;8|9^7^`VTU{ zOtxM5cD=o>gyzq+mn@c|^owf=TP)k=m#kZpO8D27=NI4I+1W{Wo^{*&nAj5b7pGW3 zBMGGrlD}W`Yl~9VvX$_en#tCIgn4fee*f@ft0*Lv5mO!xKUzZfKpd>xs-a|dD3kfjMvTlCL_mEhkeg|9MS zuLS;oS6aM@eun3&3G)25MrK>tsj@Mw>W z4=%1cxneotzT|E5_1e{X!h$#Y_36Dj>v$KXqGVxvTO2>7kx=Tn*qBOfluDKI|%F@B(3v#Nyf`0QZ$?e@*V zvGZ42mfw!Y_G4?ctUvp3e>QC2rt)u3e>=wAVgJ?o#)tMxCAZfQ@clw`;K$!*sw2mC zDRS~VgwNE>v!0I(tRcM1R$)%)Y0D>^YumQCq@;lPd(iUq{QOjTzxk=;r{}-_ejq^U zvHy~mjz;09=NGP))BhUs$In{G@o5|nU!V6p$FC`wM#rf8P7=t8>TZmy+sx<-_^O{WnK_>wNt% z9wN`*+i}*|`iU(6r1g7H{; z)K>BPkM$20Isu2@zA|sy{LW50>ywSJ{;Su^@B3ul zLD;`7a`|PNQ;QQ5yHu3lVP2uO$0a%lt19XPfMsB_toJ@mXdFeLlkP z*G#GC|GNDG;UhMfQ8UV!f2LTUUz}06h1+|=2Y$LGEAh{9FnCekT~L^gb2l)0wdf zVGrTM<}%&&O#_z+BmZyy*RYAO!@NPGZ{5F)F!FzEaO4BRupXdsOv!nGF#7lV7fC_F zxIR!F{#rI+^!HneA`=Ot{or`@9gY`Z`2{aMd79*CADpgEdWSH^Bf>jPJpP}A=P8Q| zcs#8%Zr8P$dPn8-S-MDok6Do|ruP_~` zJZw*Gm5j&i3siFB`dlXxYd*j}AUlAFrI z^^!nH&-SR8S*DRBV3hIawPn`p1_mDg1>v~tdYx7~$o&K9b$Wf*a+0?J_If=$e=xn< zeTn%_%xu%STywa8lpycwdPMF&Xn#q{?Uc)_*I6vjZ6PcgW~*-`D0u#hnX}dUy1J

pupMwLf$iJ^xAUpB9DU793UHMv%9Z%l#3TJzHH= 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 a6|~el={=5-?}Oe~5+YqR=_l}h%>M@*NQLzP literal 0 HcmV?d00001 diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 0584d39b..fa626d63 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -84,7 +84,8 @@ namespace Sandbox //SHADE::SHAssetManager::LoadDataTemp("../../Assets/racoon.gltf"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/Cube.012.shmesh"); //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); - SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); + //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); + SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.shtex"); //TODO: REMOVE AFTER PRESENTATION //SHADE::SHSystemManager::RegisterRoutine(); diff --git a/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h index 94b1b74c..634d9a9a 100644 --- a/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h +++ b/SHADE_Engine/src/Assets/Asset Types/SHTextureAsset.h @@ -7,6 +7,8 @@ namespace SHADE { struct SHTextureAsset { + bool compiled; + uint32_t numBytes; uint32_t width; uint32_t height; diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp index a2fc3b77..62af4da6 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureCompiler.cpp @@ -19,7 +19,11 @@ namespace SHADE { void SHTextureCompiler::CompileTextureBinary(SHTextureAsset const& asset, AssetPath path) { - std::ofstream file{path, std::ios::out | std::ios::binary}; + std::string newPath{ path.string() }; + newPath = newPath.substr(0, newPath.find_last_of('.')); + newPath += TEXTURE_EXTENSION; + + std::ofstream file{ newPath, std::ios::out | std::ios::binary }; if (!file.is_open()) { SHLOG_ERROR("Unable to open file for writing texture file: {}", path.string()); @@ -46,18 +50,13 @@ namespace SHADE file.write( reinterpret_cast(&asset.format), - sizeof(SHTexture::PixelChannel) + sizeof(SHTexture::TextureFormat) ); file.write( reinterpret_cast(&mipOffsetCount), intBytes ); - - file.write( - reinterpret_cast(&asset.numBytes), - intBytes - ); file.write( reinterpret_cast(asset.mipOffsets.data()), diff --git a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp index 68f86030..1047cdc6 100644 --- a/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/SHTextureLoader.cpp @@ -93,6 +93,7 @@ namespace SHADE std::memcpy(pixel, file.GetImageData()->m_mem, totalBytes); //pixel = std::move(reinterpret_cast(file.GetDDSData())); + asset.compiled = false; asset.numBytes = totalBytes; asset.width = file.GetWidth(); asset.height = file.GetHeight(); @@ -109,38 +110,25 @@ namespace SHADE SHLOG_ERROR("Error opening SHTexture file: {}", path.string()); } - tinyddsloader::DDSFile::DXGIFormat format; - uint32_t formatCarrier; + auto const intBytes{ sizeof(uint32_t) }; uint32_t mipCount; - uint32_t byteCount; - file >> asset.numBytes; - file >> asset.width; - file >> asset.height; - - file >> formatCarrier; - asset.format = ddsLoaderToVkFormat(static_cast(formatCarrier), true); - - file >> mipCount; - file >> byteCount; + file.read(reinterpret_cast(&asset.numBytes), intBytes); + file.read(reinterpret_cast(&asset.width), intBytes); + file.read(reinterpret_cast(&asset.height), intBytes); + file.read(reinterpret_cast(&asset.format), sizeof(SHTexture::TextureFormat)); + file.read(reinterpret_cast(&mipCount), intBytes); std::vector mips(mipCount); - for (auto i {0}; i < mipCount; ++i) - { - file >> mips[i]; - } + file.read(reinterpret_cast(mips.data()), intBytes * mipCount); + + auto pixel = new SHTexture::PixelChannel[asset.numBytes]; + file.read(reinterpret_cast(pixel), asset.numBytes); asset.mipOffsets = std::move(mips); - - auto pixel = new SHTexture::PixelChannel[byteCount]; - auto pixelIt{ pixel }; - - while(!file.eof()) - { - file >> *(pixelIt++); - } asset.pixelData = std::move( pixel ); + asset.compiled = true; file.close(); } diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index dde3b0e2..989cd2ad 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -18,6 +18,7 @@ #include "Libraries/SHTextureLoader.h" #include "Libraries/SHMeshCompiler.h" +#include "Libraries/SHTextureCompiler.h" namespace SHADE { @@ -215,7 +216,8 @@ namespace SHADE } ); } - else if (path.extension().string() == DDS_EXTENSION) + else if (path.extension().string() == DDS_EXTENSION + || path.extension().string() == TEXTURE_EXTENSION) { LoadDDS( { @@ -319,6 +321,11 @@ namespace SHADE SHTextureLoader::LoadImageAsset(asset.path, image); textureCollection.emplace(GenerateAssetID(AssetType::DDS), image); + + if (!image.compiled) + { + SHTextureCompiler::CompileTextureBinary(image, asset.path); + } } /**************************************************************************** From 0792979dfff9cc8f351e961c9da2e020972cb086 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Sat, 1 Oct 2022 13:31:08 +0800 Subject: [PATCH 11/18] Moved some comments --- SHADE_Application/src/Application/SBApplication.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 1dee3c5f..8abc341b 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -88,10 +88,12 @@ namespace Sandbox //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); //SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.dds"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonPreTexturedVer1_Base9.shtex"); + //TODO: REMOVE AFTER PRESENTATION + + auto id = SHFamilyID::GetID(); auto id2 = SHFamilyID::GetID(); auto id3 = SHFamilyID::GetID(); - //TODO: REMOVE AFTER PRESENTATION //SHADE::SHSystemManager::RegisterRoutine(); From af24ed78dc84199cf7d8d39a9658856535400d96 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Sat, 1 Oct 2022 13:43:34 +0800 Subject: [PATCH 12/18] Fixed MSIL warning when building scripts --- SHADE_Engine/src/Scripting/SHScriptEngine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp index d613dbfe..d65eaf64 100644 --- a/SHADE_Engine/src/Scripting/SHScriptEngine.cpp +++ b/SHADE_Engine/src/Scripting/SHScriptEngine.cpp @@ -254,8 +254,8 @@ namespace SHADE \n\ \n\ \n\ - ..\\bin\\Debug\\SHADE_Managed.dll\ - ..\\bin\\Release\\SHADE_Managed.dll\ + ..\\bin\\Debug\\SHADE_Managed.dll\n\ + ..\\bin\\Release\\SHADE_Managed.dll\n\ \n\ \n\ "; @@ -520,7 +520,7 @@ namespace SHADE std::wostringstream oss; oss << "dotnet build \"" << SHStringUtils::StrToWstr(CSPROJ_PATH) << "\" -c "; oss << debug ? "Debug" : "Release"; - oss << " -o \"./tmp/\" -fl -flp:LogFile=build.log;Verbosity=quiet"; + oss << " -o \"./tmp/\" -fl -flp:LogFile=build.log;Verbosity=quiet -r \"win-x64\""; return oss.str(); } } From dc8d58d95caf0c8fa3fca7e61f17e6618d04035b Mon Sep 17 00:00:00 2001 From: mushgunAX Date: Sat, 1 Oct 2022 13:49:11 +0800 Subject: [PATCH 13/18] fix GetMouseWindowPosition() --- SHADE_Engine/src/Input/SHInputManagerSystem.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SHADE_Engine/src/Input/SHInputManagerSystem.h b/SHADE_Engine/src/Input/SHInputManagerSystem.h index eb40b240..2a8fe052 100644 --- a/SHADE_Engine/src/Input/SHInputManagerSystem.h +++ b/SHADE_Engine/src/Input/SHInputManagerSystem.h @@ -417,8 +417,8 @@ namespace SHADE { POINT p{ mouseScreenX, mouseScreenY }; ScreenToClient(GetActiveWindow(), &p); - if (x) *x = mouseScreenX; - if (y) *y = mouseScreenY; + if (x) *x = p.x; + if (y) *y = p.y; } //Get the mouse velocity From 0360a8bfa145c4773755ff2ba3a4cc36d825d86b Mon Sep 17 00:00:00 2001 From: mushgunAX Date: Sat, 1 Oct 2022 14:34:30 +0800 Subject: [PATCH 14/18] made the Input Manager NOT be a System anymore --- .../src/Application/SBApplication.cpp | 5 +- .../src/Graphics/Windowing/SHWindow.cpp | 7 +- ...utManagerSystem.cpp => SHInputManager.cpp} | 80 +++++++------------ ...HInputManagerSystem.h => SHInputManager.h} | 33 +++----- 4 files changed, 42 insertions(+), 83 deletions(-) rename SHADE_Engine/src/Input/{SHInputManagerSystem.cpp => SHInputManager.cpp} (60%) rename SHADE_Engine/src/Input/{SHInputManagerSystem.h => SHInputManager.h} (93%) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 3e9b0dce..700b36e3 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -23,7 +23,7 @@ #include "Graphics/MiddleEnd/Interface/SHRenderable.h" #include "Scene/SHSceneManager.h" #include "Math/Transform/SHTransformSystem.h" -#include "Input/SHInputManagerSystem.h" +#include "Input/SHInputManager.h" #include "FRC/SHFramerateController.h" //#include "AudioSystem/SHAudioSystem.h" @@ -58,7 +58,6 @@ namespace Sandbox // TODO(Diren): Create Physics System here SHADE::SHSystemManager::CreateSystem(); SHADE::SHGraphicsSystem* graphicsSystem = static_cast(SHADE::SHSystemManager::GetSystem()); - SHADE::SHSystemManager::CreateSystem(); //SHADE::SHSystemManager::CreateSystem(); // Create Routines @@ -80,8 +79,6 @@ namespace Sandbox SHADE::SHComponentManager::CreateComponentSparseSet(); SHADE::SHComponentManager::CreateComponentSparseSet(); - SHADE::SHSystemManager::RegisterRoutine(); - //TODO: REMOVE AFTER PRESENTATION SHADE::SHAssetManager::LoadDataTemp("../../Assets/racoon.gltf"); SHADE::SHAssetManager::LoadDataTemp("../../Assets/RaccoonBag_Color_Ver4.dds"); diff --git a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp index 4d8dae72..3a1deb00 100644 --- a/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp +++ b/SHADE_Engine/src/Graphics/Windowing/SHWindow.cpp @@ -2,7 +2,7 @@ #include "SHWindowMap.h" #include "SHWindow.h" #include "ECS_Base/Managers/SHSystemManager.h" -#include "Input/SHInputManagerSystem.h" +#include "Input/SHInputManager.h" namespace SHADE @@ -343,10 +343,7 @@ namespace SHADE } case WM_MOUSEWHEEL: { - if (auto im = SHSystemManager::GetSystem()) - { - im->PollWheelVerticalDelta(wparam); - } + SHInputManager::PollWheelVerticalDelta(wparam); break; } default: diff --git a/SHADE_Engine/src/Input/SHInputManagerSystem.cpp b/SHADE_Engine/src/Input/SHInputManager.cpp similarity index 60% rename from SHADE_Engine/src/Input/SHInputManagerSystem.cpp rename to SHADE_Engine/src/Input/SHInputManager.cpp index 1beabe3f..619afec0 100644 --- a/SHADE_Engine/src/Input/SHInputManagerSystem.cpp +++ b/SHADE_Engine/src/Input/SHInputManager.cpp @@ -1,5 +1,5 @@ /********************************************************************* - * \file SHInputManagerSystem.cpp + * \file SHInputManager.cpp * \author Ryan Wang Nian Jing * \brief Definition of input manager. * Handles input from keyboard and mouse. Soon to include controller. @@ -11,7 +11,8 @@ #pragma once #include -#include "SHInputManagerSystem.h" +#include "SHInputManager.h" +#include "../Tools/SHException.h" namespace SHADE { @@ -19,61 +20,34 @@ namespace SHADE /* Static defines */ /*------------------------------------------------------------------------*/ - unsigned SHInputManagerSystem::keyCount = 0; - bool SHInputManagerSystem::keys[MAX_KEYS]; - bool SHInputManagerSystem::keysLast[MAX_KEYS]; - double SHInputManagerSystem::keysHeldTime[MAX_KEYS]; - double SHInputManagerSystem::keysReleasedTime[MAX_KEYS]; + unsigned SHInputManager::keyCount = 0; + bool SHInputManager::keys[MAX_KEYS]; + bool SHInputManager::keysLast[MAX_KEYS]; + double SHInputManager::keysHeldTime[MAX_KEYS]; + double SHInputManager::keysReleasedTime[MAX_KEYS]; - unsigned SHInputManagerSystem::keyToggleCount = 0; - bool SHInputManagerSystem::keysToggle[MAX_KEYS]; - bool SHInputManagerSystem::keysToggleLast[MAX_KEYS]; - double SHInputManagerSystem::keysToggleOnTime[MAX_KEYS]; - double SHInputManagerSystem::keysToggleOffTime[MAX_KEYS]; + unsigned SHInputManager::keyToggleCount = 0; + bool SHInputManager::keysToggle[MAX_KEYS]; + bool SHInputManager::keysToggleLast[MAX_KEYS]; + double SHInputManager::keysToggleOnTime[MAX_KEYS]; + double SHInputManager::keysToggleOffTime[MAX_KEYS]; - int SHInputManagerSystem::mouseScreenX = 0; - int SHInputManagerSystem::mouseScreenY = 0; - int SHInputManagerSystem::mouseScreenXLast = 0; - int SHInputManagerSystem::mouseScreenYLast = 0; - double SHInputManagerSystem::mouseVelocityX = 0; - double SHInputManagerSystem::mouseVelocityY = 0; - int SHInputManagerSystem::mouseWheelVerticalDelta = 0; - int SHInputManagerSystem::mouseWheelVerticalDeltaPoll = 0; + int SHInputManager::mouseScreenX = 0; + int SHInputManager::mouseScreenY = 0; + int SHInputManager::mouseScreenXLast = 0; + int SHInputManager::mouseScreenYLast = 0; + double SHInputManager::mouseVelocityX = 0; + double SHInputManager::mouseVelocityY = 0; + int SHInputManager::mouseWheelVerticalDelta = 0; + int SHInputManager::mouseWheelVerticalDeltaPoll = 0; - void SHInputManagerSystem::Init() - { - keyCount = 0; - SecureZeroMemory(keys, sizeof(keys)); - SecureZeroMemory(keysLast, sizeof(keysLast)); - SecureZeroMemory(keysHeldTime, sizeof(keysHeldTime)); - SecureZeroMemory(keysReleasedTime, sizeof(keysReleasedTime)); - - keyToggleCount = 0; - SecureZeroMemory(keysToggle, sizeof(keysToggle)); - SecureZeroMemory(keysToggleLast, sizeof(keysToggleLast)); - SecureZeroMemory(keysToggleOnTime, sizeof(keysToggleOnTime)); - SecureZeroMemory(keysToggleOffTime, sizeof(keysToggleOffTime)); - - mouseScreenX = 0; - mouseScreenY = 0; - mouseScreenXLast = 0; - mouseScreenYLast = 0; - mouseWheelVerticalDelta = 0; - mouseWheelVerticalDeltaPoll = 0; - } - - void SHInputManagerSystem::Exit() - { - //No dynamically allocated memory. Nothing to do here. - } - - void SHInputManagerSystem::InputManagerRoutine:: - FixedExecute(double dt) noexcept + void SHInputManager::UpdateInput(double dt) noexcept { //Keyboard and Mouse Buttons//////////////////////////////////////////////// //Poll unsigned char keyboardState[MAX_KEYS]; - GetKeyboardState(keyboardState); + //if (GetKeyboardState(keyboardState) == false) return; + SHASSERT(GetKeyboardState(keyboardState), "SHInputManager:GetKeyboardState() failed ({})", GetLastError()); keyCount = 0; keyToggleCount = 0; for (size_t i = 0; i < MAX_KEYS; ++i) @@ -144,7 +118,7 @@ namespace SHADE mouseWheelVerticalDeltaPoll = 0; } - bool SHInputManagerSystem::AnyKeyDown(SH_KEYCODE* firstDetected) noexcept + bool SHInputManager::AnyKeyDown(SH_KEYCODE* firstDetected) noexcept { for (size_t i = 0; i < MAX_KEYS; ++i) { @@ -157,7 +131,7 @@ namespace SHADE return false; } - bool SHInputManagerSystem::AnyKey(SH_KEYCODE* firstDetected) noexcept + bool SHInputManager::AnyKey(SH_KEYCODE* firstDetected) noexcept { for (size_t i = 0; i < MAX_KEYS; ++i) { @@ -170,7 +144,7 @@ namespace SHADE return false; } - bool SHInputManagerSystem::AnyKeyUp(SH_KEYCODE* firstDetected) noexcept + bool SHInputManager::AnyKeyUp(SH_KEYCODE* firstDetected) noexcept { for (size_t i = 0; i < MAX_KEYS; ++i) { diff --git a/SHADE_Engine/src/Input/SHInputManagerSystem.h b/SHADE_Engine/src/Input/SHInputManager.h similarity index 93% rename from SHADE_Engine/src/Input/SHInputManagerSystem.h rename to SHADE_Engine/src/Input/SHInputManager.h index 2a8fe052..d3e31004 100644 --- a/SHADE_Engine/src/Input/SHInputManagerSystem.h +++ b/SHADE_Engine/src/Input/SHInputManager.h @@ -1,5 +1,5 @@ /********************************************************************* - * \file SHInputManagerSystem.h + * \file SHInputManager.h * \author Ryan Wang Nian Jing * \brief Declaration of input manager. * Handles input from keyboard and mouse. Soon to include controller. @@ -13,19 +13,12 @@ //#include //#include "../../SHADE_Managed/src/SHpch.h" #include "SH_API.h" -#include "ECS_Base/System/SHSystem.h" -#include "ECS_Base/System/SHFixedSystemRoutine.h" namespace SHADE { - class SH_API SHInputManagerSystem : public SHSystem + class SH_API SHInputManager { public: - class SH_API InputManagerRoutine : public SHFixedSystemRoutine - { - public: - virtual void FixedExecute(double dt) noexcept override final; - }; public: /*------------------------------------------------------------------------*/ @@ -276,23 +269,21 @@ namespace SHADE }; public: + //Updates current state of the input, with dt to be fetched from FRC + //TODO should dt be fixed or variable? + static void UpdateInput(double dt) noexcept; + /*------------------------------------------------------------------------*/ /* Constructors & Destructor */ /*------------------------------------------------------------------------*/ - SHInputManagerSystem() noexcept = default; - ~SHInputManagerSystem() noexcept = default; + SHInputManager() noexcept = default; + ~SHInputManager() noexcept = default; - SHInputManagerSystem(const SHInputManagerSystem&) = delete; - SHInputManagerSystem(SHInputManagerSystem&&) = delete; + SHInputManager(const SHInputManager&) = delete; + SHInputManager(SHInputManager&&) = delete; - SHInputManagerSystem& operator= (const SHInputManagerSystem&) = delete; - SHInputManagerSystem& operator= (SHInputManagerSystem&&) = delete; - - /*------------------------------------------------------------------------*/ - /* SHSystem Overrides */ - /*------------------------------------------------------------------------*/ - virtual void Init() override final; - virtual void Exit() override final; + SHInputManager& operator= (const SHInputManager&) = delete; + SHInputManager& operator= (SHInputManager&&) = delete; /*------------------------------------------------------------------------*/ /* Member Functions */ From 0c78eca1bce62b4e94fc91bc9265b425609557e1 Mon Sep 17 00:00:00 2001 From: Glence Date: Sat, 1 Oct 2022 15:09:26 +0800 Subject: [PATCH 15/18] added audiosystem back in added a button for the audio --- SHADE_Application/src/Application/SBApplication.cpp | 6 +++--- SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp | 4 ++-- .../src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 8abc341b..b982557c 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -25,7 +25,7 @@ #include "Math/Transform/SHTransformSystem.h" #include "Input/SHInputManagerSystem.h" #include "FRC/SHFramerateController.h" -//#include "AudioSystem/SHAudioSystem.h" +#include "AudioSystem/SHAudioSystem.h" #include "Scenes/SBTestScene.h" #include "Math/Transform/SHTransformComponent.h" @@ -59,7 +59,7 @@ namespace Sandbox SHADE::SHSystemManager::CreateSystem(); SHADE::SHGraphicsSystem* graphicsSystem = static_cast(SHADE::SHSystemManager::GetSystem()); SHADE::SHSystemManager::CreateSystem(); - //SHADE::SHSystemManager::CreateSystem(); + SHADE::SHSystemManager::CreateSystem(); // Create Routines SHADE::SHSystemManager::RegisterRoutine(); @@ -95,7 +95,7 @@ namespace Sandbox auto id2 = SHFamilyID::GetID(); auto id3 = SHFamilyID::GetID(); - //SHADE::SHSystemManager::RegisterRoutine(); + SHADE::SHSystemManager::RegisterRoutine(); // Set up graphics system and windows graphicsSystem->SetWindow(&window); diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index be9ee832..2482fe8e 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -93,8 +93,8 @@ namespace SHADE void SHADE::SHAudioSystem::Run(float dt) { static_cast(dt); - if (GetKeyState(VK_SPACE) & 0x8000) - PlayEventOnce("event:/Characters/sfx_footsteps_raccoon"); + //if (GetKeyState(VK_SPACE) & 0x8000) + // PlayEventOnce("event:/Characters/sfx_footsteps_raccoon"); fmodStudioSystem->update(); if (!denseListener->empty()) diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp index 25d3d955..35836dc2 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp @@ -45,6 +45,12 @@ namespace SHADE SHEditorWindow::Update(); if (Begin()) { + if (ImGui::Button("AUDIO")) + { + auto audioSystem = SHSystemManager::GetSystem(); + audioSystem->PlayEventOnce("event:/Characters/sfx_footsteps_raccoon"); + } + if (!SHEditor::selectedEntities.empty()) { EntityID const& eid = SHEditor::selectedEntities[0]; From aef3e4ef1affbcf63f365d426f17bfcfc185850b Mon Sep 17 00:00:00 2001 From: mushgunAX Date: Sat, 1 Oct 2022 17:04:07 +0800 Subject: [PATCH 16/18] Update SBApplication.cpp --- SHADE_Application/src/Application/SBApplication.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 8fbf1858..606ab4e2 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -58,7 +58,6 @@ namespace Sandbox // TODO(Diren): Create Physics System here SHADE::SHSystemManager::CreateSystem(); SHADE::SHGraphicsSystem* graphicsSystem = static_cast(SHADE::SHSystemManager::GetSystem()); - SHADE::SHSystemManager::CreateSystem(); SHADE::SHSystemManager::CreateSystem(); // Create Routines From 3c58a538ae12afef869eb4129513f56a486db580 Mon Sep 17 00:00:00 2001 From: mushgunAX Date: Sat, 1 Oct 2022 18:02:27 +0800 Subject: [PATCH 17/18] Mouse Vel & UpdateInput called from SBApplication --- SHADE_Application/src/Application/SBApplication.cpp | 1 + SHADE_Engine/src/Input/SHInputManager.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 606ab4e2..fc3e02ad 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -118,6 +118,7 @@ namespace Sandbox while (!window.WindowShouldClose()) { SHFrameRateController::UpdateFRC(); + SHInputManager::UpdateInput(SHFrameRateController::GetRawDeltaTime()); SHSceneManager::UpdateSceneManager(); SHSceneManager::SceneUpdate(1/60.0f); //#ifdef SHEDITOR diff --git a/SHADE_Engine/src/Input/SHInputManager.cpp b/SHADE_Engine/src/Input/SHInputManager.cpp index 619afec0..04f2b02e 100644 --- a/SHADE_Engine/src/Input/SHInputManager.cpp +++ b/SHADE_Engine/src/Input/SHInputManager.cpp @@ -112,6 +112,10 @@ namespace SHADE mouseScreenX = p.x; mouseScreenY = p.y; + //Velocity + mouseVelocityX = static_cast(mouseScreenX - mouseScreenXLast) / dt; + mouseVelocityY = static_cast(mouseScreenY - mouseScreenYLast) / dt; + //Mouse wheel vertical delta updating mouseWheelVerticalDelta = 0; mouseWheelVerticalDelta = mouseWheelVerticalDeltaPoll; From a6e17847bf54968818084a5e935b1d01008890cf Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Sat, 1 Oct 2022 18:58:13 +0800 Subject: [PATCH 18/18] Warning disables Remove SDL hint that gave warning (it was unnecessary anyway) --- SHADE_Application/premake5.lua | 9 ++++++++- SHADE_Application/src/Application/SBApplication.cpp | 1 - SHADE_Engine/premake5.lua | 9 ++++++++- SHADE_Managed/premake5.lua | 6 ++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/SHADE_Application/premake5.lua b/SHADE_Application/premake5.lua index 2119808d..a02b7f2a 100644 --- a/SHADE_Application/premake5.lua +++ b/SHADE_Application/premake5.lua @@ -67,9 +67,16 @@ project "SHADE_Application" disablewarnings { - "4251" + "4251", + "26812", + "26439", + "26451", + "26437", + "4275" } + linkoptions { "-IGNORE:4006" } + warnings 'Extra' filter "configurations:Debug" diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index b982557c..5e57e6a5 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -14,7 +14,6 @@ #include #include #include -#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN 1 #include #include "Scripting/SHScriptEngine.h" diff --git a/SHADE_Engine/premake5.lua b/SHADE_Engine/premake5.lua index f11ccf79..5481fa7d 100644 --- a/SHADE_Engine/premake5.lua +++ b/SHADE_Engine/premake5.lua @@ -76,8 +76,15 @@ project "SHADE_Engine" disablewarnings { - "4251" + "4251", + "26812", + "26439", + "26451", + "26437", + "4275" } + + linkoptions { "-IGNORE:4006" } defines { diff --git a/SHADE_Managed/premake5.lua b/SHADE_Managed/premake5.lua index a7b20144..9724c296 100644 --- a/SHADE_Managed/premake5.lua +++ b/SHADE_Managed/premake5.lua @@ -61,6 +61,12 @@ project "SHADE_Managed" "MultiProcessorCompile" } + disablewarnings + { + "4275" + } + + dependson { "yaml-cpp",