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() ShapeAsset::ShapeAsset()
{ {
mFileName = StringTable->EmptyString(); mFileName = StringTable->EmptyString();

View file

@ -87,7 +87,16 @@ public:
{ {
TooManyVerts = AssetErrCode::Extended, TooManyVerts = AssetErrCode::Extended,
TooManyBones, 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(); ShapeAsset();

View file

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

View file

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

View file

@ -55,20 +55,6 @@ extern StringTableEntry assetAutoUnloadField;
//#define ASSET_BASE_AUTOUNLOAD_FIELD "AssetAutoUnload" //#define ASSET_BASE_AUTOUNLOAD_FIELD "AssetAutoUnload"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
enum AssetErrCode
{
Failed,
Ok,
NotLoaded,
BadFileReference,
InvalidFormat,
DependencyNotFound,
FileTooLarge,
UsingFallback,
Extended
};
class AssetBase : public SimObject class AssetBase : public SimObject
{ {
friend class AssetManager; friend class AssetManager;
@ -82,6 +68,26 @@ protected:
U32 mAcquireReferenceCount; U32 mAcquireReferenceCount;
public: 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(); AssetBase();
virtual ~AssetBase(); virtual ~AssetBase();