Correct array allocation for loaded sounds
This commit is contained in:
parent
e19409f550
commit
7dbb258a47
@ -25,6 +25,15 @@ namespace Assets
|
|||||||
auto aliases = aliasesContainer.array_items();
|
auto aliases = aliasesContainer.array_items();
|
||||||
|
|
||||||
aliasList->count = aliases.size();
|
aliasList->count = aliases.size();
|
||||||
|
|
||||||
|
// Allocate
|
||||||
|
aliasList->head = builder->getAllocator()->allocateArray<Game::snd_alias_t>(aliasList->count);
|
||||||
|
if (!aliasList->head)
|
||||||
|
{
|
||||||
|
Components::Logger::Print("Error allocating memory for sound alias structure!\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
aliasList->aliasName = builder->getAllocator()->duplicateString(infoData["aliasName"].string_value().c_str());
|
aliasList->aliasName = builder->getAllocator()->duplicateString(infoData["aliasName"].string_value().c_str());
|
||||||
|
|
||||||
for (size_t i = 0; i < aliasList->count; i++)
|
for (size_t i = 0; i < aliasList->count; i++)
|
||||||
@ -37,14 +46,6 @@ namespace Assets
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allocate
|
|
||||||
aliasList->head = builder->getAllocator()->allocate<Game::snd_alias_t>();
|
|
||||||
if (!aliasList->head)
|
|
||||||
{
|
|
||||||
Components::Logger::Print("Error allocating memory for sound alias structure!\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
aliasList->head->soundFile = builder->getAllocator()->allocate<Game::SoundFile>();
|
aliasList->head->soundFile = builder->getAllocator()->allocate<Game::SoundFile>();
|
||||||
if (!aliasList->head->soundFile)
|
if (!aliasList->head->soundFile)
|
||||||
{
|
{
|
||||||
@ -281,21 +282,29 @@ namespace Assets
|
|||||||
|
|
||||||
if (volumeFalloffCurve.is_string())
|
if (volumeFalloffCurve.is_string())
|
||||||
{
|
{
|
||||||
alias->volumeFalloffCurve = Components::AssetHandler::FindAssetForZone(Game::XAssetType::ASSET_TYPE_SOUND_CURVE, volumeFalloffCurve.string_value(), builder).sndCurve;
|
alias->volumeFalloffCurve = Components::AssetHandler::FindAssetForZone(Game::XAssetType::ASSET_TYPE_SOUND_CURVE, "$default" /*volumeFalloffCurve.string_value().c_str()*/, builder).sndCurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type.number_value() == 1) // Loaded
|
if (type.number_value() == Game::snd_alias_type_t::SAT_LOADED) // Loaded
|
||||||
{
|
{
|
||||||
alias->soundFile->type = Game::SAT_LOADED;
|
alias->soundFile->type = Game::SAT_LOADED;
|
||||||
alias->soundFile->u.loadSnd = Components::AssetHandler::FindAssetForZone(Game::XAssetType::ASSET_TYPE_LOADED_SOUND, soundFile.string_value(), builder).loadSnd;
|
alias->soundFile->u.loadSnd = Components::AssetHandler::FindAssetForZone(Game::XAssetType::ASSET_TYPE_LOADED_SOUND, soundFile.string_value().c_str(), builder).loadSnd;
|
||||||
}
|
}
|
||||||
else if (type.number_value() == 2) // Streamed
|
else if (type.number_value() == Game::snd_alias_type_t::SAT_STREAMED) // Streamed
|
||||||
{
|
{
|
||||||
alias->soundFile->type = Game::SAT_STREAMED;
|
alias->soundFile->type = Game::SAT_STREAMED;
|
||||||
std::string streamedFile = soundFile.string_value();
|
std::string streamedFile = soundFile.string_value();
|
||||||
|
std::string directory = ""s;
|
||||||
int split = streamedFile.find_last_of('/');
|
int split = streamedFile.find_last_of('/');
|
||||||
alias->soundFile->u.streamSnd.filename.info.raw.dir = builder->getAllocator()->duplicateString(streamedFile.substr(0, split).c_str());
|
|
||||||
alias->soundFile->u.streamSnd.filename.info.raw.name = builder->getAllocator()->duplicateString(streamedFile.substr(split).c_str());
|
if (split >= 0)
|
||||||
|
{
|
||||||
|
directory = streamedFile.substr(split);
|
||||||
|
streamedFile = streamedFile.substr(0, split);
|
||||||
|
}
|
||||||
|
|
||||||
|
alias->soundFile->u.streamSnd.filename.info.raw.dir = builder->getAllocator()->duplicateString(directory.c_str());
|
||||||
|
alias->soundFile->u.streamSnd.filename.info.raw.name = builder->getAllocator()->duplicateString(streamedFile.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -303,10 +312,7 @@ namespace Assets
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0)
|
aliasList->head[i] = *alias;
|
||||||
{
|
|
||||||
aliasList->head = alias;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user