error string interpreter, example of usage in shapebase::preload, plus flips the datablock filter back on to save some network bandwidth.

This commit is contained in:
AzaezelX 2020-12-03 15:37:51 -06:00
parent 220771d2fe
commit 8bb43dd5ae
5 changed files with 68 additions and 22 deletions

View file

@ -113,6 +113,15 @@ ConsoleSetType(TypeShapeAssetId)
//-----------------------------------------------------------------------------
const String ShapeAsset::mErrCodeStrings[] =
{
"TooManyVerts",
"TooManyBones",
"MissingAnimatons",
"UnKnown"
};
//-----------------------------------------------------------------------------
ShapeAsset::ShapeAsset()
{
mFileName = StringTable->EmptyString();

View file

@ -87,7 +87,16 @@ public:
{
TooManyVerts = AssetErrCode::Extended,
TooManyBones,
MissingAnimatons
MissingAnimatons,
Extended
};
static const String mErrCodeStrings[ShapeAssetErrCode::Extended - Parent::Extended + 1];
static String getAssetErrstrn(U32 errCode)
{
if (errCode < Parent::Extended) return Parent::getAssetErrstrn(errCode);
if (errCode > ShapeAssetErrCode::Extended) return "undefined error";
return mErrCodeStrings[errCode];
};
ShapeAsset();

View file

@ -366,14 +366,14 @@ bool ShapeBaseData::preload(bool server, String &errorStr)
shapeAssetId = ShapeAsset::getAssetIdByFilename(shapeName);
}
U32 assetState = ShapeAsset::getAssetById(shapeAssetId, &shapeAsset);
if (AssetErrCode::Failed != assetState)
if (ShapeAsset::Failed != assetState)
{
//only clear the legacy direct file reference if everything checks out fully
if (assetState == AssetErrCode::Ok)
if (assetState == ShapeAsset::Ok)
{
shapeName = StringTable->EmptyString();
}
else Con::warnf("Warning: ShapeBaseData::preload-%s", ShapeAsset::getAssetErrstrn(assetState).c_str());
S32 i;
// Resolve shapename
@ -798,10 +798,14 @@ void ShapeBaseData::packData(BitStream* stream)
stream->write(shadowSphereAdjust);
//if (stream->writeFlag(shapeAsset.notNull()))
if (stream->writeFlag(shapeAsset.notNull()))
{
stream->writeString(shapeAsset.getAssetId());
//else
}
else
{
stream->writeString(shapeName);
}
stream->writeString(cloakTexName);
if(stream->writeFlag(mass != gShapeBaseDataProto.mass))
@ -880,10 +884,16 @@ void ShapeBaseData::unpackData(BitStream* stream)
stream->read(&shadowSphereAdjust);
//if (stream->readFlag())
if (stream->readFlag())
{
shapeAssetId = stream->readSTString();
//else
ShapeAsset::getAssetById(shapeAssetId, &shapeAsset);
shapeName = shapeAsset->getShapeFilename();
}
else
{
shapeName = stream->readSTString();
}
cloakTexName = stream->readSTString();
if(stream->readFlag())

View file

@ -52,6 +52,18 @@ StringTableEntry assetInternalField = StringTable->insert("AssetInternal");
StringTableEntry assetPrivateField = StringTable->insert("AssetPrivate");
//-----------------------------------------------------------------------------
const String AssetBase::mErrCodeStrings[] =
{
"Failed",
"Ok",
"NotLoaded",
"BadFileReference",
"InvalidFormat",
"DependencyNotFound",
"FileTooLarge",
"UsingFallback",
"UnKnown"
};
AssetBase::AssetBase() :
mpOwningAssetManager(NULL),

View file

@ -55,20 +55,6 @@ extern StringTableEntry assetAutoUnloadField;
//#define ASSET_BASE_AUTOUNLOAD_FIELD "AssetAutoUnload"
//-----------------------------------------------------------------------------
enum AssetErrCode
{
Failed,
Ok,
NotLoaded,
BadFileReference,
InvalidFormat,
DependencyNotFound,
FileTooLarge,
UsingFallback,
Extended
};
class AssetBase : public SimObject
{
friend class AssetManager;
@ -82,6 +68,26 @@ protected:
U32 mAcquireReferenceCount;
public:
enum AssetErrCode
{
Failed,
Ok,
NotLoaded,
BadFileReference,
InvalidFormat,
DependencyNotFound,
FileTooLarge,
UsingFallback,
Extended
};
static const String mErrCodeStrings[AssetErrCode::Extended + 1];
static String getAssetErrstrn(U32 errCode)
{
if (errCode > AssetErrCode::Extended) return "undefined error";
return mErrCodeStrings[errCode];
};
AssetBase();
virtual ~AssetBase();