Skip to content

Commit

Permalink
Work around not-found textures.
Browse files Browse the repository at this point in the history
As discussed in IRC and Discord, 3ds Max does some manipulation and
pretty much always successfully loads the bitmap data. Unfortunately,
we are trying to access the file manually here, which might be an
absolute path to a file on another machine. This path may not be valid
on our system, which fails, causing textures to be duplicated.
  • Loading branch information
Hoikas committed Nov 17, 2024
1 parent 5cdc425 commit 5393861
Showing 1 changed file with 15 additions and 8 deletions.
23 changes: 15 additions & 8 deletions Sources/MaxPlugin/MaxConvert/plBitmapCreator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -552,16 +552,23 @@ plBitmap *plBitmapCreator::ICreateTexture( plBitmapData *bd, const plLocation &l
// Texture reuse optimization
if( texture )
{
WIN32_FILE_ATTRIBUTE_DATA fileAttrib;
GetFileAttributesExW(bd->fileName.WideString().data(), GetFileExInfoStandard, &fileAttrib);
FILETIME &fileTime = fileAttrib.ftLastWriteTime;
WIN32_FILE_ATTRIBUTE_DATA fileAttrib{};
if (GetFileAttributesExW(bd->fileName.WideString().data(), GetFileExInfoStandard, &fileAttrib) != FALSE)
{
FILETIME &fileTime = fileAttrib.ftLastWriteTime;

// If this texture has been modified since the last export, delete the old version but reuse the key
if (!texture->IsSameModifiedTime(fileTime.dwLowDateTime, fileTime.dwHighDateTime))
// If this texture has been modified since the last export, delete the old version but reuse the key
if (!texture->IsSameModifiedTime(fileTime.dwLowDateTime, fileTime.dwHighDateTime))
{
DeleteExportedBitmap( texture->GetKey() );
texture = nullptr;
key = nullptr;
}
}
else
{
DeleteExportedBitmap( texture->GetKey() );
texture = nullptr;
key = nullptr;
// Well, this really sucks. We couldn't tell what the modify time is, so just pretend all is well (but assert in Debug mode)
hsAssert(0, ST::format("Couldn't get bitmap '{}' modify time: {}", bd->fileName, hsCOMError(hsLastWin32Error, GetLastError()).c_str()));
}
}

Expand Down

0 comments on commit 5393861

Please sign in to comment.