Skip to content

Commit

Permalink
Absolute Path Bank sounds
Browse files Browse the repository at this point in the history
  • Loading branch information
chrystianfarias committed Jan 18, 2022
1 parent 53276f8 commit 9bac789
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 16 deletions.
8 changes: 4 additions & 4 deletions GTAFmod/FMODAudio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
#include <string>
#include <game_sa/CHud.h>

void FMODAudio::LoadBank(FMOD::Studio::System* fmodSystem, std::string bank)
void FMODAudio::LoadBank(FMOD::Studio::System* fmodSystem, char* bank, char* absolutePath)
{
m_bIsLoaded = false;

const std::string path = "modloader\\GTAFmod\\banks\\" + bank + ".bank";
const std::string event = "event:/cars/" + bank;
const std::string eventName = bank;
const std::string event = "event:/cars/" + eventName;

FMOD::Studio::Bank* vehiclesBank = NULL;
CheckError(fmodSystem->loadBankFile(GAME_PATH((char*)path.c_str()), FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank), "Failed on load bank SFX");
CheckError(fmodSystem->loadBankFile(absolutePath, FMOD_STUDIO_LOAD_BANK_NORMAL, &vehiclesBank), "Failed on load bank SFX");

//Load events
FMOD::Studio::EventDescription* rpmEventDescription = NULL;
Expand Down
2 changes: 1 addition & 1 deletion GTAFmod/FMODAudio.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class FMODAudio
FMOD_STUDIO_PARAMETER_DESCRIPTION m_LoadDesc;
FMOD_3D_ATTRIBUTES m_Attributes;

void LoadBank(FMOD::Studio::System* fmodSystem, std::string bank);
void LoadBank(FMOD::Studio::System* fmodSystem, char* bank, char* absolutePath);

static void CheckError(FMOD_RESULT result, const char* text)
{
Expand Down
37 changes: 28 additions & 9 deletions GTAFmod/GTAFmod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,17 @@ class GTAFmod {
FMOD::System* coreSystem = NULL;
FMODAudio::CheckError(fmodSystem->getCoreSystem(&coreSystem), "Failed on create FMOD CORE System");
FMODAudio::CheckError(coreSystem->setSoftwareFormat(0, FMOD_SPEAKERMODE_5POINT1, 0), "Failed on set software format");
FMODAudio::CheckError(coreSystem->setPluginPath(GAME_PATH((char*)"modloader\\GTAFmod\\plugins")), "Failed on set path");
FMODAudio::CheckError(coreSystem->setPluginPath(PLUGIN_PATH((char*)"plugins")), "Failed on set path");
FMODAudio::CheckError(coreSystem->loadPlugin("fmod_distance_filterL.dll", 0, 0), "Failed on load plugin");

FMODAudio::CheckError(fmodSystem->initialize(1024, FMOD_STUDIO_INIT_NORMAL, FMOD_INIT_NORMAL, extraDriverData), "Failed to initialize");

//Load banks
FMOD::Studio::Bank* masterBank = NULL;
FMODAudio::CheckError(fmodSystem->loadBankFile(GAME_PATH((char*)"modloader\\GTAFmod\\banks\\common.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank), "Failed on load bank Master");
FMODAudio::CheckError(fmodSystem->loadBankFile(PLUGIN_PATH((char*)"banks\\common.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &masterBank), "Failed on load bank Master");

FMOD::Studio::Bank* stringsBank = NULL;
FMODAudio::CheckError(fmodSystem->loadBankFile(GAME_PATH((char*)"modloader\\GTAFmod\\banks\\common.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank), "Failed on load bank Master String");
FMODAudio::CheckError(fmodSystem->loadBankFile(PLUGIN_PATH((char*)"banks\\common.strings.bank"), FMOD_STUDIO_LOAD_BANK_NORMAL, &stringsBank), "Failed on load bank Master String");
}
static void PrevGear()
{
Expand Down Expand Up @@ -111,7 +111,16 @@ class GTAFmod {
fClutch = 1;
}
}
static void SetVehicleFMODBank(CVehicle* vehicle, std::string bank)
static void SetIndexFMODBank(int id, char* bank, char* absolutePath)
{
StopCurrentAudio();

FMODAudio* audio = new FMODAudio();
audio->LoadBank(fmodSystem, bank, absolutePath);

audios[id] = audio;
}
static void SetVehicleFMODBank(CVehicle* vehicle, char* bank, char* absolutePath)
{
if (vehicle == NULL)
return;
Expand All @@ -124,7 +133,7 @@ class GTAFmod {
audioInstance.insert(std::make_pair(vehicle, audio));
}
FMODAudio* audio = new FMODAudio();
audio->LoadBank(fmodSystem, bank);
audio->LoadBank(fmodSystem, bank, absolutePath);

audioInstance[vehicle] = audio;

Expand Down Expand Up @@ -205,16 +214,17 @@ class GTAFmod {
std::string defaultBank = ini.ReadString("EngineBanks", "Default", "");
std::string custom = ini.ReadString("CarBanks", sectionId, "");
std::string bank = ini.ReadString("EngineBanks", section, defaultBank);
std::string path = "banks\\" + bank + ".bank";

audio = new FMODAudio();
//Load INI
if (custom.empty())
{
audio->LoadBank(fmodSystem, bank);
audio->LoadBank(fmodSystem, (char*)bank.c_str(), PLUGIN_PATH((char*)path.c_str()));
}
else
{
audio->LoadBank(fmodSystem, custom);
audio->LoadBank(fmodSystem, (char*)custom.c_str(), PLUGIN_PATH((char*)path.c_str()));
nLastId = vehicle->m_nModelIndex;
}

Expand Down Expand Up @@ -444,7 +454,16 @@ extern "C" float __declspec(dllexport) Ext_GetClutchValue()
{
return fClutch;
}
extern "C" void __declspec(dllexport) Ext_SetVehicleFMODBank(CVehicle* vehicle, std::string bank)

extern "C" void __declspec(dllexport) Ext_SetEngineSoundIdFMODBank(int id, char* bank, char* absolutePath)
{
return GTAFmod::SetIndexFMODBank(id, bank, absolutePath);
}
extern "C" void __declspec(dllexport) Ext_SetModelIdFMODBank(int id, char* bank, char* absolutePath)
{
return GTAFmod::SetIndexFMODBank(id, bank, absolutePath);
}
extern "C" void __declspec(dllexport) Ext_SetVehicleFMODBank(CVehicle* vehicle, char* bank, char* absolutePath)
{
return GTAFmod::SetVehicleFMODBank(vehicle, bank);
return GTAFmod::SetVehicleFMODBank(vehicle, bank, absolutePath);
}
4 changes: 2 additions & 2 deletions GTAFmodDashboard/GTAFmodDashboard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ GTAFmod_Ext_GetCurrentRPM gtaFmod_Ext_GetCurrentRPM;
typedef int(__cdecl* GTAFmod_Ext_GetCurrentGear)();
GTAFmod_Ext_GetCurrentGear gtaFmod_Ext_GetCurrentGear;

typedef void(__cdecl* GTAFmod_Ext_SetVehicleFMODBank)(CVehicle* vehicle, std::string bank);
typedef void(__cdecl* GTAFmod_Ext_SetVehicleFMODBank)(CVehicle* vehicle, char* bank, char* absolutePath);
GTAFmod_Ext_SetVehicleFMODBank gtaFmod_Ext_SetVehicleFMODBank;


Expand Down Expand Up @@ -54,7 +54,7 @@ class GTAFmodDashboard {

if (KeyPressed(VK_F8) && CTimer::m_snTimeInMilliseconds >= (keyTime + 2000))
{
gtaFmod_Ext_SetVehicleFMODBank(vehicle, "ks_mazda_rx7_spirit_r");
gtaFmod_Ext_SetVehicleFMODBank(vehicle, (char*)"ks_mazda_rx7_spirit_r", GAME_PATH((char*)"modloader\\GTAFmod\\banks\\ks_mazda_rx7_spirit_r.bank"));
keyTime = CTimer::m_snTimeInMilliseconds;
}
}
Expand Down

0 comments on commit 9bac789

Please sign in to comment.