From 48b512ef73dc9a111616f7bb84f02fbb8f7eed61 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Tue, 17 Jun 2025 15:06:07 +0100 Subject: [PATCH] move population of image metadata to onAssetRefresh --- Engine/source/T3D/assets/ImageAsset.cpp | 87 +++++++++++++------------ Engine/source/T3D/assets/ImageAsset.h | 2 +- 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/Engine/source/T3D/assets/ImageAsset.cpp b/Engine/source/T3D/assets/ImageAsset.cpp index 7e0cf1952..99dc97eb9 100644 --- a/Engine/source/T3D/assets/ImageAsset.cpp +++ b/Engine/source/T3D/assets/ImageAsset.cpp @@ -345,6 +345,8 @@ void ImageAsset::initializeAsset(void) return; mImageFile = expandAssetFilePath(mImageFile); + + populateImage(); } void ImageAsset::onAssetRefresh(void) @@ -356,6 +358,8 @@ void ImageAsset::onAssetRefresh(void) // Call parent. Parent::onAssetRefresh(); + populateImage(); + } //------------------------------------------------------------------------------ @@ -395,46 +399,6 @@ void ImageAsset::setImageFile(StringTableEntry pImageFile) mImageFile = getOwned() ? expandAssetFilePath(pImageFile) : StringTable->insert(pImageFile); - if (Torque::FS::IsFile(mImageFile)) - { - if (dStrEndsWith(mImageFile, ".dds")) - { - DDSFile* tempFile = new DDSFile(); - FileStream* ddsFs; - if ((ddsFs = FileStream::createAndOpen(mImageFile, Torque::FS::File::Read)) == NULL) - { - Con::errorf("ImageAsset::setImageFile Failed to open ddsfile: %s", mImageFile); - } - - if (!tempFile->readHeader(*ddsFs)) - { - Con::errorf("ImageAsset::setImageFile Failed to read header of ddsfile: %s", mImageFile); - } - else - { - mImageWidth = tempFile->mWidth; - mImageHeight = tempFile->mHeight; - } - - ddsFs->close(); - delete tempFile; - } - else - { - if (!stbi_info(mImageFile, &mImageWidth, &mImageHeight, &mImageChannels)) - { - StringTableEntry stbErr = stbi_failure_reason(); - if (stbErr == StringTable->EmptyString()) - stbErr = "ImageAsset::Unkown Error!"; - - Con::errorf("ImageAsset::setImageFile STB Get file info failed: %s", stbErr); - } - } - - // we only support 2d textures..... for no ;) - mImageDepth = 1; - } - refreshAsset(); } @@ -675,6 +639,49 @@ void ImageAsset::onTamlCustomRead(const TamlCustomNodes& customNodes) } } +void ImageAsset::populateImage(void) +{ + if (Torque::FS::IsFile(mImageFile)) + { + if (dStrEndsWith(mImageFile, ".dds")) + { + DDSFile* tempFile = new DDSFile(); + FileStream* ddsFs; + if ((ddsFs = FileStream::createAndOpen(mImageFile, Torque::FS::File::Read)) == NULL) + { + Con::errorf("ImageAsset::setImageFile Failed to open ddsfile: %s", mImageFile); + } + + if (!tempFile->readHeader(*ddsFs)) + { + Con::errorf("ImageAsset::setImageFile Failed to read header of ddsfile: %s", mImageFile); + } + else + { + mImageWidth = tempFile->mWidth; + mImageHeight = tempFile->mHeight; + } + + ddsFs->close(); + delete tempFile; + } + else + { + if (!stbi_info(mImageFile, &mImageWidth, &mImageHeight, &mImageChannels)) + { + StringTableEntry stbErr = stbi_failure_reason(); + if (stbErr == StringTable->EmptyString()) + stbErr = "ImageAsset::Unkown Error!"; + + Con::errorf("ImageAsset::setImageFile STB Get file info failed: %s", stbErr); + } + } + + // we only support 2d textures..... for now ;) + mImageDepth = 1; + } +} + const char* ImageAsset::getImageInfo() { if (isAssetValid()) diff --git a/Engine/source/T3D/assets/ImageAsset.h b/Engine/source/T3D/assets/ImageAsset.h index c60523b81..2300e0de6 100644 --- a/Engine/source/T3D/assets/ImageAsset.h +++ b/Engine/source/T3D/assets/ImageAsset.h @@ -196,7 +196,7 @@ public: static U32 getAssetById(StringTableEntry assetId, AssetPtr* imageAsset); static U32 getAssetById(String assetId, AssetPtr* imageAsset) { return getAssetById(assetId.c_str(), imageAsset); }; - + void populateImage(void); const char* getImageInfo(); protected: