Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/assets/shader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ static void Shader_InternalAddShader(CPakFileBuilder* const pak, const char* con
const char* const targetName = shader->name.length() > 0 ? shader->name.c_str() : assetPath;

char pathStem[PAK_MAX_STEM_PATH];
const size_t stemLen = Pak_ExtractAssetStem(targetName, pathStem, sizeof(pathStem));
const size_t stemLen = Pak_ExtractAssetStem(targetName, pathStem, sizeof(pathStem), "shader");

if (stemLen > 0)
{
Expand Down
2 changes: 1 addition & 1 deletion src/assets/shaderset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void ShaderSet_InternalCreateSet(CPakFileBuilder* const pak, const char* const a
if (pak->IsFlagSet(PF_KEEP_DEV))
{
char pathStem[PAK_MAX_STEM_PATH];
const size_t stemLen = Pak_ExtractAssetStem(assetPath, pathStem, sizeof(pathStem));
const size_t stemLen = Pak_ExtractAssetStem(assetPath, pathStem, sizeof(pathStem), "shaderset");

if (stemLen > 0)
{
Expand Down
2 changes: 1 addition & 1 deletion src/assets/texture.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ static void Texture_InternalAddTexture(CPakFileBuilder* const pak, const PakGuid
if (pak->IsFlagSet(PF_KEEP_DEV))
{
char pathStem[PAK_MAX_STEM_PATH];
const size_t stemLen = Pak_ExtractAssetStem(assetPath, pathStem, sizeof(pathStem));
const size_t stemLen = Pak_ExtractAssetStem(assetPath, pathStem, sizeof(pathStem), "texture");

if (stemLen > 0)
{
Expand Down
19 changes: 12 additions & 7 deletions src/utils/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,15 +294,20 @@ PakGuid_t Pak_ParseGuidFromMap(const rapidjson::Value& mapEntry, rapidjson::Valu
return Pak_ParseGuidFromObject(it->value, debugName, outAssetName);
}

size_t Pak_ExtractAssetStem(const char* const assetPath, char* const outBuf, const size_t outBufLen)
size_t Pak_ExtractAssetStem(const char* const assetPath, char* const outBuf, const size_t outBufLen, const char* const assetPrefix)
{
// skip 'texture/'
const char* bufPos = strchr(assetPath, '/');
const char* bufPos = assetPath;

if (!bufPos)
bufPos = assetPath;
else
bufPos += 1; // skip the '/'.
// check if the path has the desired prefix
if (strstr(assetPath, assetPrefix))
{
const size_t prefixLength = strnlen(assetPrefix, 32ull);

assert(bufPos[prefixLength] == '/' || bufPos[prefixLength] == '\\');

// add one to skip the (back)slash
bufPos += (prefixLength + 1);
}

// copy until '.rpak' or '\0'
size_t i = 0;
Expand Down
2 changes: 1 addition & 1 deletion src/utils/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ extern PakGuid_t Pak_ParseGuidFromObject(const rapidjson::Value& val, const char
extern PakGuid_t Pak_ParseGuidFromMap(const rapidjson::Value& mapEntry, rapidjson::Value::StringRefType fieldName,
const char* const debugName, const char*& outAssetName, const bool requiredField);

extern size_t Pak_ExtractAssetStem(const char* const assetPath, char* const outBuf, const size_t outBufLen);
extern size_t Pak_ExtractAssetStem(const char* const assetPath, char* const outBuf, const size_t outBufLen, const char* const assetPrefix);

using namespace std::chrono;

Expand Down