Merge pull request #1131 from Azaezel/alpah41/assetLoadRefactor

asset load refactor
This commit is contained in:
Brian Roberts 2023-11-12 18:43:57 -06:00 committed by GitHub
commit 4f0f97c5e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 50 additions and 68 deletions

View file

@ -207,8 +207,7 @@ U32 ImageAsset::getAssetByFilename(StringTableEntry fileName, AssetPtr<ImageAsse
{ {
//acquire and bind the asset, and return it out //acquire and bind the asset, and return it out
imageAsset->setAssetId(query.mAssetList[0]); imageAsset->setAssetId(query.mAssetList[0]);
(*imageAsset)->loadImage(); return (*imageAsset)->load();
return (*imageAsset)->mLoadedState;
} }
} }
@ -240,8 +239,7 @@ U32 ImageAsset::getAssetById(StringTableEntry assetId, AssetPtr<ImageAsset>* ima
if (imageAsset->notNull()) if (imageAsset->notNull())
{ {
(*imageAsset)->loadImage(); return (*imageAsset)->load();
return (*imageAsset)->mLoadedState;
} }
else else
{ {
@ -253,7 +251,6 @@ U32 ImageAsset::getAssetById(StringTableEntry assetId, AssetPtr<ImageAsset>* ima
//handle fallback not being loaded itself //handle fallback not being loaded itself
if ((*imageAsset)->mLoadedState == BadFileReference) if ((*imageAsset)->mLoadedState == BadFileReference)
{ {
(*imageAsset)->loadImage();
Con::warnf("ImageAsset::getAssetById - Finding of asset with id %s failed, and fallback asset reported error of Bad File Reference.", assetId); Con::warnf("ImageAsset::getAssetById - Finding of asset with id %s failed, and fallback asset reported error of Bad File Reference.", assetId);
return AssetErrCode::BadFileReference; return AssetErrCode::BadFileReference;
} }
@ -272,25 +269,26 @@ void ImageAsset::copyTo(SimObject* object)
Parent::copyTo(object); Parent::copyTo(object);
} }
void ImageAsset::loadImage() U32 ImageAsset::load()
{ {
if (mLoadedState == AssetErrCode::Ok) return; if (mLoadedState == AssetErrCode::Ok) return mLoadedState;
if (mImagePath) if (mImagePath)
{ {
if (!Torque::FS::IsFile(mImagePath)) if (!Torque::FS::IsFile(mImagePath))
{ {
Con::errorf("ImageAsset::initializeAsset: Attempted to load file %s but it was not valid!", mImageFileName); Con::errorf("ImageAsset::initializeAsset: Attempted to load file %s but it was not valid!", mImageFileName);
mLoadedState = BadFileReference; mLoadedState = BadFileReference;
return; return mLoadedState;
} }
mLoadedState = Ok; mLoadedState = Ok;
mIsValidImage = true; mIsValidImage = true;
return; return mLoadedState;
} }
mLoadedState = BadFileReference; mLoadedState = BadFileReference;
mIsValidImage = false; mIsValidImage = false;
return mLoadedState;
} }
void ImageAsset::initializeAsset() void ImageAsset::initializeAsset()
@ -327,11 +325,6 @@ void ImageAsset::setImageFileName(const char* pScriptFile)
refreshAsset(); refreshAsset();
} }
const GBitmap& ImageAsset::getImage()
{
return GBitmap(); //TODO fix this
}
GFXTexHandle ImageAsset::getTexture(GFXTextureProfile* requestedProfile) GFXTexHandle ImageAsset::getTexture(GFXTextureProfile* requestedProfile)
{ {
if (mResourceMap.contains(requestedProfile)) if (mResourceMap.contains(requestedProfile))

View file

@ -136,7 +136,6 @@ public:
bool isValid() { return mIsValidImage; } bool isValid() { return mIsValidImage; }
const GBitmap& getImage();
GFXTexHandle getTexture(GFXTextureProfile* requestedProfile); GFXTexHandle getTexture(GFXTextureProfile* requestedProfile);
StringTableEntry getImageInfo(); StringTableEntry getImageInfo();
@ -152,14 +151,14 @@ public:
static U32 getAssetById(StringTableEntry assetId, AssetPtr<ImageAsset>* imageAsset); static U32 getAssetById(StringTableEntry assetId, AssetPtr<ImageAsset>* imageAsset);
static U32 getAssetById(String assetId, AssetPtr<ImageAsset>* imageAsset) { return getAssetById(assetId.c_str(), imageAsset); }; static U32 getAssetById(String assetId, AssetPtr<ImageAsset>* imageAsset) { return getAssetById(assetId.c_str(), imageAsset); };
U32 load();
protected: protected:
virtual void initializeAsset(void); virtual void initializeAsset(void);
virtual void onAssetRefresh(void); virtual void onAssetRefresh(void);
static bool setImageFileName(void* obj, StringTableEntry index, StringTableEntry data) { static_cast<ImageAsset*>(obj)->setImageFileName(data); return false; } static bool setImageFileName(void* obj, StringTableEntry index, StringTableEntry data) { static_cast<ImageAsset*>(obj)->setImageFileName(data); return false; }
static StringTableEntry getImageFileName(void* obj, StringTableEntry data) { return static_cast<ImageAsset*>(obj)->getImageFileName(); } static StringTableEntry getImageFileName(void* obj, StringTableEntry data) { return static_cast<ImageAsset*>(obj)->getImageFileName(); }
void loadImage();
}; };
DefineConsoleType(TypeImageAssetPtr, ImageAsset) DefineConsoleType(TypeImageAssetPtr, ImageAsset)

View file

@ -206,7 +206,7 @@ void MaterialAsset::initializeAsset()
} }
} }
loadMaterial(); load();
} }
void MaterialAsset::onAssetRefresh() void MaterialAsset::onAssetRefresh()
@ -236,7 +236,7 @@ void MaterialAsset::onAssetRefresh()
Con::setVariable("$Con::redefineBehavior", redefineBehaviorPrev.c_str()); Con::setVariable("$Con::redefineBehavior", redefineBehaviorPrev.c_str());
} }
loadMaterial(); load();
} }
void MaterialAsset::setScriptFile(const char* pScriptFile) void MaterialAsset::setScriptFile(const char* pScriptFile)
@ -255,7 +255,7 @@ void MaterialAsset::setScriptFile(const char* pScriptFile)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void MaterialAsset::loadMaterial() U32 MaterialAsset::load()
{ {
if (mMaterialDefinition) if (mMaterialDefinition)
{ {
@ -274,7 +274,7 @@ void MaterialAsset::loadMaterial()
mLoadedState = Ok; mLoadedState = Ok;
mMaterialDefinition->setInternalName(getAssetId()); mMaterialDefinition->setInternalName(getAssetId());
mMaterialDefinition->reload(); mMaterialDefinition->reload();
return; return mLoadedState;
} }
} }
} }
@ -286,7 +286,7 @@ void MaterialAsset::loadMaterial()
{ {
Con::errorf("MaterialAsset: Unable to find the Material %s", mMatDefinitionName); Con::errorf("MaterialAsset: Unable to find the Material %s", mMatDefinitionName);
mLoadedState = BadFileReference; mLoadedState = BadFileReference;
return; return mLoadedState;
} }
mMaterialDefinition = matDef; mMaterialDefinition = matDef;
@ -294,10 +294,11 @@ void MaterialAsset::loadMaterial()
mLoadedState = Ok; mLoadedState = Ok;
mMaterialDefinition->setInternalName(getAssetId()); mMaterialDefinition->setInternalName(getAssetId());
mMaterialDefinition->reload(); mMaterialDefinition->reload();
return; return mLoadedState;
} }
mLoadedState = Failed; mLoadedState = Failed;
return mLoadedState;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -104,7 +104,7 @@ public:
static void initPersistFields(); static void initPersistFields();
virtual void copyTo(SimObject* object); virtual void copyTo(SimObject* object);
void loadMaterial(); U32 load();
StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; } StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; }
SimObjectPtr<Material> getMaterialDefinition() { return mMaterialDefinition; } SimObjectPtr<Material> getMaterialDefinition() { return mMaterialDefinition; }

View file

@ -308,9 +308,9 @@ void ShapeAsset::_onResourceChanged(const Torque::Path &path)
onAssetRefresh(); onAssetRefresh();
} }
bool ShapeAsset::loadShape() U32 ShapeAsset::load()
{ {
if (mLoadedState == AssetErrCode::Ok) return true; if (mLoadedState == AssetErrCode::Ok) return mLoadedState;
mMaterialAssets.clear(); mMaterialAssets.clear();
mMaterialAssetIds.clear(); mMaterialAssetIds.clear();
@ -357,7 +357,7 @@ bool ShapeAsset::loadShape()
{ {
Con::errorf("ShapeAsset::loadShape : failed to load shape file %s (%s)!", getAssetName(), mFilePath); Con::errorf("ShapeAsset::loadShape : failed to load shape file %s (%s)!", getAssetName(), mFilePath);
mLoadedState = BadFileReference; mLoadedState = BadFileReference;
return false; //if it failed to load, bail out return mLoadedState; //if it failed to load, bail out
} }
// Construct billboards if not done already // Construct billboards if not done already
if (GFXDevice::devicePresent()) if (GFXDevice::devicePresent())
@ -379,7 +379,7 @@ bool ShapeAsset::loadShape()
mAnimationAssets[i]->getStartFrame(), mAnimationAssets[i]->getEndFrame(), mAnimationAssets[i]->getPadRotation(), mAnimationAssets[i]->getPadTransforms())) mAnimationAssets[i]->getStartFrame(), mAnimationAssets[i]->getEndFrame(), mAnimationAssets[i]->getPadRotation(), mAnimationAssets[i]->getPadTransforms()))
{ {
mLoadedState = MissingAnimatons; mLoadedState = MissingAnimatons;
return false; return mLoadedState;
} }
if (mAnimationAssets[i]->isBlend()) if (mAnimationAssets[i]->isBlend())
hasBlends = true; hasBlends = true;
@ -402,7 +402,7 @@ bool ShapeAsset::loadShape()
Con::errorf("ShapeAsset::initializeAsset - Unable to acquire reference animation asset %s for asset %s to blend!", mAnimationAssets[i]->getBlendAnimationName(), mAnimationAssets[i]->getAssetName()); Con::errorf("ShapeAsset::initializeAsset - Unable to acquire reference animation asset %s for asset %s to blend!", mAnimationAssets[i]->getBlendAnimationName(), mAnimationAssets[i]->getAssetName());
{ {
mLoadedState = MissingAnimatons; mLoadedState = MissingAnimatons;
return false; return mLoadedState;
} }
} }
@ -412,7 +412,7 @@ bool ShapeAsset::loadShape()
Con::errorf("ShapeAnimationAsset::initializeAsset - Unable to set animation clip %s for asset %s to blend!", mAnimationAssets[i]->getAnimationName(), mAnimationAssets[i]->getAssetName()); Con::errorf("ShapeAnimationAsset::initializeAsset - Unable to set animation clip %s for asset %s to blend!", mAnimationAssets[i]->getAnimationName(), mAnimationAssets[i]->getAssetName());
{ {
mLoadedState = MissingAnimatons; mLoadedState = MissingAnimatons;
return false; return mLoadedState;
} }
} }
} }
@ -422,7 +422,7 @@ bool ShapeAsset::loadShape()
mChangeSignal.trigger(); mChangeSignal.trigger();
mLoadedState = Ok; mLoadedState = Ok;
return true; return mLoadedState;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -706,7 +706,7 @@ DefineEngineMethod(ShapeAsset, generateCachedPreviewImage, const char*, (S32 res
"@param resolution Optional field for what resolution to bake the preview image at. Must be pow2\n" "@param resolution Optional field for what resolution to bake the preview image at. Must be pow2\n"
"@param overrideMaterialName Optional field for overriding the material used when rendering the shape for the bake.") "@param overrideMaterialName Optional field for overriding the material used when rendering the shape for the bake.")
{ {
object->loadShape(); object->load();
return object->generateCachedPreviewImage(resolution, overrideMaterialName); return object->generateCachedPreviewImage(resolution, overrideMaterialName);
} }

View file

@ -132,11 +132,11 @@ public:
/// Declare Console Object. /// Declare Console Object.
DECLARE_CONOBJECT(ShapeAsset); DECLARE_CONOBJECT(ShapeAsset);
bool loadShape(); U32 load();
TSShape* getShape() { return mShape; } TSShape* getShape() { return mShape; }
Resource<TSShape> getShapeResource() { loadShape(); return mShape; } Resource<TSShape> getShapeResource() { load(); return mShape; }
void SplitSequencePathAndName(String& srcPath, String& srcName); void SplitSequencePathAndName(String& srcPath, String& srcName);
StringTableEntry getShapeFileName() { return mFileName; } StringTableEntry getShapeFileName() { return mFileName; }

View file

@ -322,10 +322,6 @@ void SoundAsset::initializeAsset(void)
mSoundPath[i] = getOwned() ? expandAssetFilePath(mSoundFile[i]) : mSoundPath[i]; mSoundPath[i] = getOwned() ? expandAssetFilePath(mSoundFile[i]) : mSoundPath[i];
} }
//loadSound(slotCount);
//mSoundPath = getOwned() ? expandAssetFilePath(mSoundFile) : mSoundPath;
//loadSound();
} }
void SoundAsset::_onResourceChanged(const Torque::Path &path) void SoundAsset::_onResourceChanged(const Torque::Path &path)
@ -337,9 +333,6 @@ void SoundAsset::_onResourceChanged(const Torque::Path &path)
return; return;
} }
refreshAsset(); refreshAsset();
//loadSound(slotCount);
//loadSound();
} }
void SoundAsset::onAssetRefresh(void) void SoundAsset::onAssetRefresh(void)
@ -354,16 +347,11 @@ void SoundAsset::onAssetRefresh(void)
mSoundPath[i] = getOwned() ? expandAssetFilePath(mSoundFile[i]) : mSoundPath[i]; mSoundPath[i] = getOwned() ? expandAssetFilePath(mSoundFile[i]) : mSoundPath[i];
} }
//loadSound(slotCount);
//Update
//mSoundPath = getOwned() ? expandAssetFilePath(mSoundFile) : mSoundPath;
//loadSound();
} }
bool SoundAsset::loadSound() U32 SoundAsset::load()
{ {
if (mLoadedState == AssetErrCode::Ok) return true; if (mLoadedState == AssetErrCode::Ok) return mLoadedState;
// find out how many active slots we have. // find out how many active slots we have.
U32 numSlots = 0; U32 numSlots = 0;
@ -394,7 +382,7 @@ bool SoundAsset::loadSound()
mSFXProfile[i].setDescription(NULL); mSFXProfile[i].setDescription(NULL);
mSFXProfile[i].setSoundFileName(StringTable->insert(StringTable->EmptyString())); mSFXProfile[i].setSoundFileName(StringTable->insert(StringTable->EmptyString()));
mSFXProfile[i].setPreload(false); mSFXProfile[i].setPreload(false);
return false; return mLoadedState;
} }
else else
{// = new SFXProfile(mProfileDesc, mSoundFile, mPreload); {// = new SFXProfile(mProfileDesc, mSoundFile, mPreload);
@ -427,7 +415,7 @@ bool SoundAsset::loadSound()
mSFXProfile[0].setDescription(NULL); mSFXProfile[0].setDescription(NULL);
mSFXProfile[0].setSoundFileName(StringTable->insert(StringTable->EmptyString())); mSFXProfile[0].setSoundFileName(StringTable->insert(StringTable->EmptyString()));
mSFXProfile[0].setPreload(false); mSFXProfile[0].setPreload(false);
return false; return mLoadedState;
} }
else else
{// = new SFXProfile(mProfileDesc, mSoundFile, mPreload); {// = new SFXProfile(mProfileDesc, mSoundFile, mPreload);
@ -446,7 +434,7 @@ bool SoundAsset::loadSound()
mChangeSignal.trigger(); mChangeSignal.trigger();
mLoadedState = Ok; mLoadedState = Ok;
return true; return mLoadedState;
} }
StringTableEntry SoundAsset::getSoundFile(const char* pSoundFile, const U32 slotId) StringTableEntry SoundAsset::getSoundFile(const char* pSoundFile, const U32 slotId)

View file

@ -150,13 +150,13 @@ public:
virtual void copyTo(SimObject* object); virtual void copyTo(SimObject* object);
//SFXResource* getSound() { return mSoundResource; } //SFXResource* getSound() { return mSoundResource; }
Resource<SFXResource> getSoundResource(const U32 slotId = 0) { loadSound(); return mSFXProfile[slotId].getResource(); } Resource<SFXResource> getSoundResource(const U32 slotId = 0) { load(); return mSFXProfile[slotId].getResource(); }
/// Declare Console Object. /// Declare Console Object.
DECLARE_CONOBJECT(SoundAsset); DECLARE_CONOBJECT(SoundAsset);
void setSoundFile(const char* pSoundFile, const U32 slotId = 0); void setSoundFile(const char* pSoundFile, const U32 slotId = 0);
bool loadSound(); U32 load();
StringTableEntry getSoundFile(const char* pSoundFile, const U32 slotId = 0); StringTableEntry getSoundFile(const char* pSoundFile, const U32 slotId = 0);
inline StringTableEntry getSoundPath(const U32 slotId = 0) const { return mSoundPath[slotId]; }; inline StringTableEntry getSoundPath(const U32 slotId = 0) const { return mSoundPath[slotId]; };
SFXProfile* getSfxProfile(const U32 slotId = 0) { return &mSFXProfile[slotId]; } SFXProfile* getSfxProfile(const U32 slotId = 0) { return &mSFXProfile[slotId]; }

View file

@ -161,14 +161,14 @@ void TerrainAsset::initializeAsset()
mTerrainFilePath = getOwned() ? expandAssetFilePath(mTerrainFileName) : mTerrainFilePath; mTerrainFilePath = getOwned() ? expandAssetFilePath(mTerrainFileName) : mTerrainFilePath;
loadTerrain(); load();
} }
void TerrainAsset::onAssetRefresh() void TerrainAsset::onAssetRefresh()
{ {
mTerrainFilePath = getOwned() ? expandAssetFilePath(mTerrainFileName) : mTerrainFilePath; mTerrainFilePath = getOwned() ? expandAssetFilePath(mTerrainFileName) : mTerrainFilePath;
loadTerrain(); load();
} }
void TerrainAsset::setTerrainFileName(const char* pScriptFile) void TerrainAsset::setTerrainFileName(const char* pScriptFile)
@ -189,10 +189,10 @@ void TerrainAsset::setTerrainFileName(const char* pScriptFile)
refreshAsset(); refreshAsset();
} }
bool TerrainAsset::loadTerrain() U32 TerrainAsset::load()
{ {
if (!Torque::FS::IsFile(mTerrainFilePath)) if (!Torque::FS::IsFile(mTerrainFilePath))
return false; return BadFileReference;
mTerrMaterialAssets.clear(); mTerrMaterialAssets.clear();
mTerrMaterialAssetIds.clear(); mTerrMaterialAssetIds.clear();
@ -229,9 +229,9 @@ bool TerrainAsset::loadTerrain()
mTerrainFile = ResourceManager::get().load(mTerrainFilePath); mTerrainFile = ResourceManager::get().load(mTerrainFilePath);
if (mTerrainFile) if (mTerrainFile)
return true; return Ok;
return false; return BadFileReference;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -82,7 +82,7 @@ public:
inline Resource<TerrainFile> getTerrainResource(void) const { return mTerrainFile; }; inline Resource<TerrainFile> getTerrainResource(void) const { return mTerrainFile; };
bool loadTerrain(); U32 load();
static bool getAssetByFilename(StringTableEntry fileName, AssetPtr<TerrainAsset>* shapeAsset); static bool getAssetByFilename(StringTableEntry fileName, AssetPtr<TerrainAsset>* shapeAsset);
static StringTableEntry getAssetIdByFilename(StringTableEntry fileName); static StringTableEntry getAssetIdByFilename(StringTableEntry fileName);

View file

@ -202,7 +202,7 @@ void TerrainMaterialAsset::initializeAsset()
} }
} }
loadMaterial(); load();
} }
void TerrainMaterialAsset::onAssetRefresh() void TerrainMaterialAsset::onAssetRefresh()
@ -232,7 +232,7 @@ void TerrainMaterialAsset::onAssetRefresh()
Con::setVariable("$Con::redefineBehavior", redefineBehaviorPrev.c_str()); Con::setVariable("$Con::redefineBehavior", redefineBehaviorPrev.c_str());
} }
loadMaterial(); load();
} }
void TerrainMaterialAsset::setScriptFile(const char* pScriptFile) void TerrainMaterialAsset::setScriptFile(const char* pScriptFile)
@ -251,7 +251,7 @@ void TerrainMaterialAsset::setScriptFile(const char* pScriptFile)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void TerrainMaterialAsset::loadMaterial() U32 TerrainMaterialAsset::load()
{ {
if (mMaterialDefinition) if (mMaterialDefinition)
mMaterialDefinition->safeDeleteObject(); mMaterialDefinition->safeDeleteObject();
@ -287,7 +287,7 @@ void TerrainMaterialAsset::loadMaterial()
} }
if(mLoadedState == Ok) if(mLoadedState == Ok)
return; return mLoadedState;
} }
else if ((mLoadedState == ScriptLoaded || mLoadedState == DefinitionAlreadyExists) && mMatDefinitionName != StringTable->EmptyString()) else if ((mLoadedState == ScriptLoaded || mLoadedState == DefinitionAlreadyExists) && mMatDefinitionName != StringTable->EmptyString())
{ {
@ -296,17 +296,18 @@ void TerrainMaterialAsset::loadMaterial()
{ {
Con::errorf("TerrainMaterialAsset: Unable to find the Material %s", mMatDefinitionName); Con::errorf("TerrainMaterialAsset: Unable to find the Material %s", mMatDefinitionName);
mLoadedState = BadFileReference; mLoadedState = BadFileReference;
return; return mLoadedState;
} }
mMaterialDefinition = matDef; mMaterialDefinition = matDef;
mLoadedState = Ok; mLoadedState = Ok;
mMaterialDefinition->setInternalName(getAssetId()); mMaterialDefinition->setInternalName(getAssetId());
return; return mLoadedState;
} }
mLoadedState = Failed; mLoadedState = Failed;
return mLoadedState;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------

View file

@ -89,7 +89,7 @@ public:
static void initPersistFields(); static void initPersistFields();
virtual void copyTo(SimObject* object); virtual void copyTo(SimObject* object);
void loadMaterial(); U32 load();
StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; } StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; }
SimObjectPtr<TerrainMaterial> getMaterialDefinition() { return mMaterialDefinition; } SimObjectPtr<TerrainMaterial> getMaterialDefinition() { return mMaterialDefinition; }

View file

@ -91,7 +91,7 @@ public:
return mErrCodeStrings[errCode]; return mErrCodeStrings[errCode];
}; };
U32 getStatus() { return mLoadedState; }; U32 getStatus() { return mLoadedState; };
U32 load() { return NotLoaded; };
AssetBase(); AssetBase();
virtual ~AssetBase(); virtual ~AssetBase();