mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-28 15:55:39 +00:00
Asset data management
Added functions to AssetManager to pack/unpack assets using an id hash instead of their id string this cuts down how much data is sent across the network for assets All asset macros updated to use this new functionality.
This commit is contained in:
parent
563c0266e4
commit
74638c0f2c
4 changed files with 115 additions and 173 deletions
|
|
@ -536,52 +536,12 @@ if (m##name##AssetId[index] != StringTable->EmptyString())\
|
|||
}
|
||||
|
||||
#define PACKDATA_SOUNDASSET_ARRAY(name, index)\
|
||||
if (stream->writeFlag(AssetDatabase.isDeclaredAsset(m##name##AssetId[index])))\
|
||||
{\
|
||||
stream->writeString(m##name##AssetId[index]);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
if(stream->writeFlag(Sim::findObject(m##name##Name[index])))\
|
||||
{\
|
||||
SFXTrack* sndTrack = get##name##Profile(index);\
|
||||
if(stream->writeFlag(sndTrack != nullptr))\
|
||||
{\
|
||||
stream->writeRangedU32(SimObjectId(sndTrack->getId()), DataBlockObjectIdFirst, DataBlockObjectIdLast);\
|
||||
sfxWrite(stream, sndTrack);\
|
||||
}\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
stream->writeString(m##name##Name[index]);\
|
||||
}\
|
||||
}
|
||||
|
||||
AssetDatabase.packDataAsset(stream, m##name##AssetId[index])
|
||||
|
||||
//network recieve - datablock
|
||||
#define UNPACKDATA_SOUNDASSET_ARRAY(name, index)\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
m##name##AssetId[index] = stream->readSTString();\
|
||||
_set##name(m##name##AssetId[index], index);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
if(stream->readFlag())\
|
||||
{\
|
||||
String errorStr;\
|
||||
if(stream->readFlag())\
|
||||
{\
|
||||
m##name##SFXId[index] = stream->readRangedU32( DataBlockObjectIdFirst, DataBlockObjectIdLast );\
|
||||
sfxReadAndResolve(stream, &m##name##Profile[index], errorStr);\
|
||||
}\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
m##name##Name[index] = stream->readSTString(); \
|
||||
_set##name(m##name##Name[index], index); \
|
||||
}\
|
||||
}
|
||||
m##name##AssetId[index] = AssetDatabase.unpackDataAsset(stream)
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#endif // _ASSET_BASE_H_
|
||||
|
|
|
|||
|
|
@ -59,122 +59,46 @@ if (m##name##AssetId != StringTable->EmptyString())\
|
|||
|
||||
//network send - datablock refactor
|
||||
#define PACKDATA_ASSET_REFACTOR(name)\
|
||||
if (stream->writeFlag(m##name##Asset.notNull()))\
|
||||
{\
|
||||
stream->writeString(m##name##Asset.getAssetId());\
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##File != StringTable->EmptyString()))\
|
||||
{\
|
||||
stream->writeString(m##name##File);\
|
||||
}\
|
||||
AssetDatabase.packDataAsset(stream, m##name##Asset.getAssetId())
|
||||
|
||||
//network recieve - datablock
|
||||
#define UNPACKDATA_ASSET_REFACTOR(name)\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(stream->readSTString());\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(stream->readSTString());\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString());\
|
||||
}\
|
||||
m##name##Asset = AssetDatabase.unpackDataAsset(stream)
|
||||
|
||||
//network send - object-instance
|
||||
#define PACK_ASSET_REFACTOR(netconn, name)\
|
||||
if (stream->writeFlag(m##name##Asset.notNull()))\
|
||||
{\
|
||||
NetStringHandle assetIdStr = m##name##Asset.getAssetId();\
|
||||
netconn->packNetStringHandleU(stream, assetIdStr);\
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##File != StringTable->EmptyString()))\
|
||||
{\
|
||||
NetStringHandle fileStr = m##name##File;\
|
||||
netconn->packNetStringHandleU(stream, fileStr);\
|
||||
}\
|
||||
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset.getAssetId())
|
||||
|
||||
//network recieve - object-instance
|
||||
#define UNPACK_ASSET_REFACTOR(netconn, name)\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(netconn->unpackNetStringHandleU(stream).getString());\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(netconn->unpackNetStringHandleU(stream).getString());\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString());\
|
||||
}\
|
||||
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream))
|
||||
|
||||
//network send - datablock
|
||||
#define PACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
||||
for (U32 i = 0; i < max; i++)\
|
||||
{\
|
||||
if (stream->writeFlag(m##name##Asset[i].notNull()))\
|
||||
{\
|
||||
stream->writeString(m##name##Asset[i].getAssetId()); \
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##File[i] != StringTable->EmptyString()))\
|
||||
{\
|
||||
stream->writeString(m##name##File[i]);\
|
||||
}\
|
||||
AssetDatabase.packDataAsset(stream, m##name##Asset[i].getAssetId());\
|
||||
}
|
||||
|
||||
//network recieve - datablock
|
||||
#define UNPACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
||||
for (U32 i = 0; i < max; i++)\
|
||||
{\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
m##name##Asset[i] = stream->readSTString();\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(stream->readSTString(), i);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString(), i);\
|
||||
}\
|
||||
m##name##Asset[i] = AssetDatabase.unpackDataAsset(stream);\
|
||||
}
|
||||
|
||||
//network send - object-instance
|
||||
#define PACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
||||
for (U32 i = 0; i < max; i++)\
|
||||
{\
|
||||
if (stream->writeFlag(m##name##Asset[i].notNull()))\
|
||||
{\
|
||||
NetStringHandle assetIdStr = m##name##Asset[i].getAssetId();\
|
||||
netconn->packNetStringHandleU(stream, assetIdStr);\
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##File[i] != StringTable->EmptyString()))\
|
||||
{\
|
||||
NetStringHandle fileStr = m##name##File[i];\
|
||||
netconn->packNetStringHandleU(stream, fileStr);\
|
||||
}\
|
||||
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset[i].getAssetId());\
|
||||
}
|
||||
|
||||
//network recieve - object-instance
|
||||
#define UNPACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
||||
for (U32 i = 0; i < max; i++)\
|
||||
{\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
m##name##Asset[i] = StringTable->insert(netconn->unpackNetStringHandleU(stream).getString());\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
_set##name(StringTable->insert(netconn->unpackNetStringHandleU(stream).getString()), i);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString(), i);\
|
||||
}\
|
||||
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream), i);\
|
||||
}
|
||||
|
||||
#define DEF_ASSET_BINDS_REFACTOR(className,name)\
|
||||
|
|
@ -348,61 +272,19 @@ if (m##name##AssetId[index] != StringTable->EmptyString())\
|
|||
}
|
||||
//network send - datablock
|
||||
#define PACKDATA_ASSET_ARRAY(name, index)\
|
||||
if (stream->writeFlag(m##name##Asset[index].notNull()))\
|
||||
{\
|
||||
stream->writeString(m##name##Asset[index].getAssetId());\
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##Name[index] != StringTable->EmptyString()))\
|
||||
{\
|
||||
stream->writeString(m##name##Name[index].getAssetId());\
|
||||
}\
|
||||
AssetDatabase.packDataAsset(stream, m##name##Asset[index].getAssetId())
|
||||
|
||||
//network recieve - datablock
|
||||
#define UNPACKDATA_ASSET_ARRAY(name, index)\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
m##name##AssetId[index] = stream->readSTString();\
|
||||
_set##name(m##name##AssetId[index], index);\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
m##name##Name[index] = stream->readSTString();\
|
||||
_set##name(m##name##Name[index], index);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString());\
|
||||
}\
|
||||
m##name##Asset[index] = AssetDatabase.unpackDataAsset(stream)
|
||||
|
||||
//network send - object-instance
|
||||
#define PACK_ASSET_ARRAY(netconn, name, index)\
|
||||
if (stream->writeFlag(m##name##Asset[index].notNull()))\
|
||||
{\
|
||||
NetStringHandle assetIdStr = m##name##Asset[index].getAssetId();\
|
||||
netconn->packNetStringHandleU(stream, assetIdStr);\
|
||||
}\
|
||||
else if (stream->writeFlag(m##name##Name[index] != StringTable->EmptyString()))\
|
||||
{\
|
||||
NetStringHandle fileStr = m##name##Name[index].getAssetId();\
|
||||
netconn->packNetStringHandleU(stream, fileStr);\
|
||||
}\
|
||||
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset[index].getAssetId());
|
||||
|
||||
//network recieve - object-instance
|
||||
#define UNPACK_ASSET_ARRAY(netconn, name, index)\
|
||||
if (stream->readFlag())\
|
||||
{\
|
||||
m##name##AssetId[index] = StringTable->insert(netconn->unpackNetStringHandleU(stream).getString());\
|
||||
_set##name(m##name##AssetId[index], index);\
|
||||
}\
|
||||
else if (stream->readFlag())\
|
||||
{\
|
||||
m##name##Name[index] = StringTable->insert(netconn->unpackNetStringHandleU(stream).getString());\
|
||||
_set##name(m##name##Name[index], index);\
|
||||
}\
|
||||
else\
|
||||
{\
|
||||
_set##name(StringTable->EmptyString(), index);\
|
||||
}
|
||||
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream), index);
|
||||
|
||||
//script methods for class.asset acces
|
||||
//declare general get<entry>, get<entry>Asset and set<entry> methods
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue