From 883c3c8fc105b7ad99c80efe423dbd602d6b2333 Mon Sep 17 00:00:00 2001 From: Xiao Qi Date: Tue, 31 Jan 2023 18:27:39 +0800 Subject: [PATCH] Added recognition for audio bank files Added wrapper class to hold path for fmod system --- Assets/Audio/Master.bank.shmeta | 3 +++ Assets/Audio/Master.strings.bank.shmeta | 3 +++ Assets/Audio/Music.bank.shmeta | 3 +++ Assets/Audio/SFX.bank.shmeta | 3 +++ Assets/Audio/UI.bank.shmeta | 3 +++ Assets/Editor/Layouts/UserLayout.ini | 10 ++++---- .../src/Assets/Asset Types/SHAudioBankAsset.h | 23 +++++++++++++++++++ .../Libraries/Loaders/SHTextBasedLoader.cpp | 9 ++++++++ SHADE_Engine/src/Assets/SHAssetMacros.h | 3 +++ SHADE_Engine/src/Assets/SHAssetManager.cpp | 19 +++++++++++++++ 10 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 Assets/Audio/Master.bank.shmeta create mode 100644 Assets/Audio/Master.strings.bank.shmeta create mode 100644 Assets/Audio/Music.bank.shmeta create mode 100644 Assets/Audio/SFX.bank.shmeta create mode 100644 Assets/Audio/UI.bank.shmeta create mode 100644 SHADE_Engine/src/Assets/Asset Types/SHAudioBankAsset.h diff --git a/Assets/Audio/Master.bank.shmeta b/Assets/Audio/Master.bank.shmeta new file mode 100644 index 00000000..30aff7c2 --- /dev/null +++ b/Assets/Audio/Master.bank.shmeta @@ -0,0 +1,3 @@ +Name: Master +ID: 187131295 +Type: 11 diff --git a/Assets/Audio/Master.strings.bank.shmeta b/Assets/Audio/Master.strings.bank.shmeta new file mode 100644 index 00000000..93d0f537 --- /dev/null +++ b/Assets/Audio/Master.strings.bank.shmeta @@ -0,0 +1,3 @@ +Name: Master.strings +ID: 184993030 +Type: 11 diff --git a/Assets/Audio/Music.bank.shmeta b/Assets/Audio/Music.bank.shmeta new file mode 100644 index 00000000..5c1ca329 --- /dev/null +++ b/Assets/Audio/Music.bank.shmeta @@ -0,0 +1,3 @@ +Name: Music +ID: 187337426 +Type: 11 diff --git a/Assets/Audio/SFX.bank.shmeta b/Assets/Audio/SFX.bank.shmeta new file mode 100644 index 00000000..5ebc45cb --- /dev/null +++ b/Assets/Audio/SFX.bank.shmeta @@ -0,0 +1,3 @@ +Name: SFX +ID: 200039123 +Type: 11 diff --git a/Assets/Audio/UI.bank.shmeta b/Assets/Audio/UI.bank.shmeta new file mode 100644 index 00000000..4fb20f65 --- /dev/null +++ b/Assets/Audio/UI.bank.shmeta @@ -0,0 +1,3 @@ +Name: UI +ID: 185075145 +Type: 11 diff --git a/Assets/Editor/Layouts/UserLayout.ini b/Assets/Editor/Layouts/UserLayout.ini index 7c2df9e0..f8886d1d 100644 --- a/Assets/Editor/Layouts/UserLayout.ini +++ b/Assets/Editor/Layouts/UserLayout.ini @@ -76,7 +76,7 @@ DockId=0x0000000B,0 [Window][ Viewport] Pos=302,48 -Size=1300,836 +Size=1300,266 Collapsed=0 DockId=0x0000000B,0 @@ -93,8 +93,8 @@ Collapsed=0 DockId=0x0000000A,0 [Window][ Asset Browser] -Pos=302,886 -Size=1300,103 +Pos=302,316 +Size=1300,673 Collapsed=0 DockId=0x0000000C,0 @@ -157,8 +157,8 @@ DockSpace ID=0xC5C9B8AB Window=0xBE4044E9 Pos=0,71 Size=1920,941 Split DockNode ID=0x00000002 Parent=0x00000005 SizeRef=1300,1036 Split=Y Selected=0xB41284E7 DockNode ID=0x00000007 Parent=0x00000002 SizeRef=1501,672 Split=Y Selected=0xB41284E7 DockNode ID=0x00000009 Parent=0x00000007 SizeRef=1501,700 Split=Y Selected=0xB41284E7 - DockNode ID=0x0000000B Parent=0x00000009 SizeRef=1501,836 CentralNode=1 Selected=0xB41284E7 - DockNode ID=0x0000000C Parent=0x00000009 SizeRef=1501,103 Selected=0xB128252A + DockNode ID=0x0000000B Parent=0x00000009 SizeRef=1501,266 CentralNode=1 Selected=0xB41284E7 + DockNode ID=0x0000000C Parent=0x00000009 SizeRef=1501,673 Selected=0xB128252A DockNode ID=0x0000000A Parent=0x00000007 SizeRef=1501,310 Selected=0xD446F7B6 DockNode ID=0x00000008 Parent=0x00000002 SizeRef=1501,338 Selected=0xD9F31532 DockNode ID=0x00000006 Parent=0xC5C9B8AB SizeRef=316,1036 Selected=0xE7039252 diff --git a/SHADE_Engine/src/Assets/Asset Types/SHAudioBankAsset.h b/SHADE_Engine/src/Assets/Asset Types/SHAudioBankAsset.h new file mode 100644 index 00000000..325d90f8 --- /dev/null +++ b/SHADE_Engine/src/Assets/Asset Types/SHAudioBankAsset.h @@ -0,0 +1,23 @@ +/****************************************************************************** + * \file SHAudioBankAsset.h + * \author Loh Xiao Qi + * \date 31 January 2023 + * \brief + * + * \copyright Copyright (c) 2023 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 "SHAssetData.h" +#include + +namespace SHADE +{ + struct SHAudioBankAsset : SHAssetData + { + std::string name; + std::string path; + }; +} diff --git a/SHADE_Engine/src/Assets/Libraries/Loaders/SHTextBasedLoader.cpp b/SHADE_Engine/src/Assets/Libraries/Loaders/SHTextBasedLoader.cpp index 4858e639..01fe6e6b 100644 --- a/SHADE_Engine/src/Assets/Libraries/Loaders/SHTextBasedLoader.cpp +++ b/SHADE_Engine/src/Assets/Libraries/Loaders/SHTextBasedLoader.cpp @@ -14,6 +14,7 @@ #include "Assets/Asset Types/SHSceneAsset.h" #include "Assets/Asset Types/SHPrefabAsset.h" #include "Assets/Asset Types/SHMaterialAsset.h" +#include "Assets/Asset Types/SHAudioBankAsset.h" #include #include @@ -22,6 +23,14 @@ namespace SHADE { SHAssetData* SHTextBasedLoader::Load(AssetPath path) { + if (path.extension().string() == AUDIO_BANK_EXTENSION) + { + auto data = new SHAudioBankAsset(); + data->name = path.stem().string(); + data->path = path.string(); + return data; + } + std::ifstream file{ path, std::ios::in }; if (!file.is_open()) diff --git a/SHADE_Engine/src/Assets/SHAssetMacros.h b/SHADE_Engine/src/Assets/SHAssetMacros.h index 566e34e2..54f775fa 100644 --- a/SHADE_Engine/src/Assets/SHAssetMacros.h +++ b/SHADE_Engine/src/Assets/SHAssetMacros.h @@ -56,6 +56,7 @@ enum class AssetType : AssetTypeMeta MESH, SCRIPT, FONT, + AUDIO_BANK, MAX_COUNT }; constexpr size_t TYPE_COUNT{ static_cast(AssetType::MAX_COUNT) }; @@ -83,6 +84,7 @@ constexpr std::string_view MATERIAL_FOLDER{ "/Materials/" }; constexpr std::string_view META_EXTENSION {".shmeta"}; constexpr std::string_view AUDIO_EXTENSION {".ogg"}; constexpr std::string_view AUDIO_WAV_EXTENSION {".wav"}; +constexpr std::string_view AUDIO_BANK_EXTENSION {".bank"}; constexpr std::string_view SHADER_EXTENSION{ ".shshader" }; constexpr std::string_view SHADER_BUILT_IN_EXTENSION{ ".shshaderb" }; constexpr std::string_view FONT_EXTENSION{ ".shfont" }; @@ -106,6 +108,7 @@ constexpr std::string_view EXTENSIONS[] = { SCRIPT_EXTENSION, FONT_EXTENSION, AUDIO_WAV_EXTENSION, + AUDIO_BANK_EXTENSION }; constexpr size_t EXTENSIONS_COUNT{ 11 }; diff --git a/SHADE_Engine/src/Assets/SHAssetManager.cpp b/SHADE_Engine/src/Assets/SHAssetManager.cpp index 44d62f66..29b64d2f 100644 --- a/SHADE_Engine/src/Assets/SHAssetManager.cpp +++ b/SHADE_Engine/src/Assets/SHAssetManager.cpp @@ -431,6 +431,10 @@ namespace SHADE fontPath += FONT_EXTENSION; newPath = fontPath; } + else if (ext == AUDIO_BANK_EXTENSION.data()) + { + newPath = path.string(); + } else { SHLOG_WARNING("[Asset Manager] File Type compilation not yet Implemented: {}", path.string()); @@ -485,6 +489,7 @@ namespace SHADE loaders[static_cast(AssetType::MESH)] = nullptr; loaders[static_cast(AssetType::SCRIPT)] = nullptr; loaders[static_cast(AssetType::FONT)] = dynamic_cast(new SHFontLoader()); + loaders[static_cast(AssetType::AUDIO_BANK)] = loaders[static_cast(AssetType::SCENE)]; } /**************************************************************************** @@ -653,6 +658,20 @@ namespace SHADE return newAsset.id; } + else if (ext == AUDIO_BANK_EXTENSION) + { + SHAsset newAsset{ + path.stem().string(), + GenerateAssetID(AssetType::AUDIO_BANK), + AssetType::AUDIO_BANK, + path, + false + }; + assetCollection.emplace(newAsset.id, newAsset); + SHAssetMetaHandler::WriteMetaData(newAsset); + + return newAsset.id; + } else if(ext == MATERIAL_EXTENSION) { SHAsset newAsset{