mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-16 00:54:54 +00:00
Merge pull request #1601 from marauder2k9-torque/Asset-Networking
Some checks are pending
Linux Build / ${{matrix.config.name}} (map[build_type:Release cc:gcc cxx:g++ generator:Ninja name:Ubuntu Latest GCC]) (push) Waiting to run
MacOSX Build / ${{matrix.config.name}} (map[build_type:Release cc:clang cxx:clang++ generator:Ninja name:MacOSX Latest Clang]) (push) Waiting to run
Windows Build / ${{matrix.config.name}} (map[build_type:Release cc:cl cxx:cl environment_script:C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat generator:Visual Studio 17 2022 name:Windows Latest MSVC]) (push) Waiting to run
Some checks are pending
Linux Build / ${{matrix.config.name}} (map[build_type:Release cc:gcc cxx:g++ generator:Ninja name:Ubuntu Latest GCC]) (push) Waiting to run
MacOSX Build / ${{matrix.config.name}} (map[build_type:Release cc:clang cxx:clang++ generator:Ninja name:MacOSX Latest Clang]) (push) Waiting to run
Windows Build / ${{matrix.config.name}} (map[build_type:Release cc:cl cxx:cl environment_script:C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat generator:Visual Studio 17 2022 name:Windows Latest MSVC]) (push) Waiting to run
Asset data management
This commit is contained in:
commit
af73e79424
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)\
|
#define PACKDATA_SOUNDASSET_ARRAY(name, index)\
|
||||||
if (stream->writeFlag(AssetDatabase.isDeclaredAsset(m##name##AssetId[index])))\
|
AssetDatabase.packDataAsset(stream, 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]);\
|
|
||||||
}\
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//network recieve - datablock
|
//network recieve - datablock
|
||||||
#define UNPACKDATA_SOUNDASSET_ARRAY(name, index)\
|
#define UNPACKDATA_SOUNDASSET_ARRAY(name, index)\
|
||||||
if (stream->readFlag())\
|
m##name##AssetId[index] = AssetDatabase.unpackDataAsset(stream)
|
||||||
{\
|
|
||||||
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); \
|
|
||||||
}\
|
|
||||||
}
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#endif // _ASSET_BASE_H_
|
#endif // _ASSET_BASE_H_
|
||||||
|
|
|
||||||
|
|
@ -59,122 +59,46 @@ if (m##name##AssetId != StringTable->EmptyString())\
|
||||||
|
|
||||||
//network send - datablock refactor
|
//network send - datablock refactor
|
||||||
#define PACKDATA_ASSET_REFACTOR(name)\
|
#define PACKDATA_ASSET_REFACTOR(name)\
|
||||||
if (stream->writeFlag(m##name##Asset.notNull()))\
|
AssetDatabase.packDataAsset(stream, m##name##Asset.getAssetId())
|
||||||
{\
|
|
||||||
stream->writeString(m##name##Asset.getAssetId());\
|
|
||||||
}\
|
|
||||||
else if (stream->writeFlag(m##name##File != StringTable->EmptyString()))\
|
|
||||||
{\
|
|
||||||
stream->writeString(m##name##File);\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network recieve - datablock
|
//network recieve - datablock
|
||||||
#define UNPACKDATA_ASSET_REFACTOR(name)\
|
#define UNPACKDATA_ASSET_REFACTOR(name)\
|
||||||
if (stream->readFlag())\
|
m##name##Asset = AssetDatabase.unpackDataAsset(stream)
|
||||||
{\
|
|
||||||
_set##name(stream->readSTString());\
|
|
||||||
}\
|
|
||||||
else if (stream->readFlag())\
|
|
||||||
{\
|
|
||||||
_set##name(stream->readSTString());\
|
|
||||||
}\
|
|
||||||
else\
|
|
||||||
{\
|
|
||||||
_set##name(StringTable->EmptyString());\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network send - object-instance
|
//network send - object-instance
|
||||||
#define PACK_ASSET_REFACTOR(netconn, name)\
|
#define PACK_ASSET_REFACTOR(netconn, name)\
|
||||||
if (stream->writeFlag(m##name##Asset.notNull()))\
|
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset.getAssetId())
|
||||||
{\
|
|
||||||
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);\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network recieve - object-instance
|
//network recieve - object-instance
|
||||||
#define UNPACK_ASSET_REFACTOR(netconn, name)\
|
#define UNPACK_ASSET_REFACTOR(netconn, name)\
|
||||||
if (stream->readFlag())\
|
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream))
|
||||||
{\
|
|
||||||
_set##name(netconn->unpackNetStringHandleU(stream).getString());\
|
|
||||||
}\
|
|
||||||
else if (stream->readFlag())\
|
|
||||||
{\
|
|
||||||
_set##name(netconn->unpackNetStringHandleU(stream).getString());\
|
|
||||||
}\
|
|
||||||
else\
|
|
||||||
{\
|
|
||||||
_set##name(StringTable->EmptyString());\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network send - datablock
|
//network send - datablock
|
||||||
#define PACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
#define PACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
||||||
for (U32 i = 0; i < max; i++)\
|
for (U32 i = 0; i < max; i++)\
|
||||||
{\
|
{\
|
||||||
if (stream->writeFlag(m##name##Asset[i].notNull()))\
|
AssetDatabase.packDataAsset(stream, m##name##Asset[i].getAssetId());\
|
||||||
{\
|
|
||||||
stream->writeString(m##name##Asset[i].getAssetId()); \
|
|
||||||
}\
|
|
||||||
else if (stream->writeFlag(m##name##File[i] != StringTable->EmptyString()))\
|
|
||||||
{\
|
|
||||||
stream->writeString(m##name##File[i]);\
|
|
||||||
}\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//network recieve - datablock
|
//network recieve - datablock
|
||||||
#define UNPACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
#define UNPACKDATA_ASSET_ARRAY_REFACTOR(name, max)\
|
||||||
for (U32 i = 0; i < max; i++)\
|
for (U32 i = 0; i < max; i++)\
|
||||||
{\
|
{\
|
||||||
if (stream->readFlag())\
|
m##name##Asset[i] = AssetDatabase.unpackDataAsset(stream);\
|
||||||
{\
|
|
||||||
m##name##Asset[i] = stream->readSTString();\
|
|
||||||
}\
|
|
||||||
else if (stream->readFlag())\
|
|
||||||
{\
|
|
||||||
_set##name(stream->readSTString(), i);\
|
|
||||||
}\
|
|
||||||
else\
|
|
||||||
{\
|
|
||||||
_set##name(StringTable->EmptyString(), i);\
|
|
||||||
}\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//network send - object-instance
|
//network send - object-instance
|
||||||
#define PACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
#define PACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
||||||
for (U32 i = 0; i < max; i++)\
|
for (U32 i = 0; i < max; i++)\
|
||||||
{\
|
{\
|
||||||
if (stream->writeFlag(m##name##Asset[i].notNull()))\
|
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset[i].getAssetId());\
|
||||||
{\
|
|
||||||
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);\
|
|
||||||
}\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//network recieve - object-instance
|
//network recieve - object-instance
|
||||||
#define UNPACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
#define UNPACK_ASSET_ARRAY_REFACTOR(netconn, name, max)\
|
||||||
for (U32 i = 0; i < max; i++)\
|
for (U32 i = 0; i < max; i++)\
|
||||||
{\
|
{\
|
||||||
if (stream->readFlag())\
|
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream), i);\
|
||||||
{\
|
|
||||||
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);\
|
|
||||||
}\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEF_ASSET_BINDS_REFACTOR(className,name)\
|
#define DEF_ASSET_BINDS_REFACTOR(className,name)\
|
||||||
|
|
@ -348,61 +272,19 @@ if (m##name##AssetId[index] != StringTable->EmptyString())\
|
||||||
}
|
}
|
||||||
//network send - datablock
|
//network send - datablock
|
||||||
#define PACKDATA_ASSET_ARRAY(name, index)\
|
#define PACKDATA_ASSET_ARRAY(name, index)\
|
||||||
if (stream->writeFlag(m##name##Asset[index].notNull()))\
|
AssetDatabase.packDataAsset(stream, m##name##Asset[index].getAssetId())
|
||||||
{\
|
|
||||||
stream->writeString(m##name##Asset[index].getAssetId());\
|
|
||||||
}\
|
|
||||||
else if (stream->writeFlag(m##name##Name[index] != StringTable->EmptyString()))\
|
|
||||||
{\
|
|
||||||
stream->writeString(m##name##Name[index].getAssetId());\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network recieve - datablock
|
//network recieve - datablock
|
||||||
#define UNPACKDATA_ASSET_ARRAY(name, index)\
|
#define UNPACKDATA_ASSET_ARRAY(name, index)\
|
||||||
if (stream->readFlag())\
|
m##name##Asset[index] = AssetDatabase.unpackDataAsset(stream)
|
||||||
{\
|
|
||||||
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());\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network send - object-instance
|
//network send - object-instance
|
||||||
#define PACK_ASSET_ARRAY(netconn, name, index)\
|
#define PACK_ASSET_ARRAY(netconn, name, index)\
|
||||||
if (stream->writeFlag(m##name##Asset[index].notNull()))\
|
AssetDatabase.packUpdateAsset(netconn, mask, stream, m##name##Asset[index].getAssetId());
|
||||||
{\
|
|
||||||
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);\
|
|
||||||
}\
|
|
||||||
|
|
||||||
//network recieve - object-instance
|
//network recieve - object-instance
|
||||||
#define UNPACK_ASSET_ARRAY(netconn, name, index)\
|
#define UNPACK_ASSET_ARRAY(netconn, name, index)\
|
||||||
if (stream->readFlag())\
|
_set##name(AssetDatabase.unpackUpdateAsset(netconn, stream), index);
|
||||||
{\
|
|
||||||
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);\
|
|
||||||
}
|
|
||||||
|
|
||||||
//script methods for class.asset acces
|
//script methods for class.asset acces
|
||||||
//declare general get<entry>, get<entry>Asset and set<entry> methods
|
//declare general get<entry>, get<entry>Asset and set<entry> methods
|
||||||
|
|
|
||||||
|
|
@ -964,6 +964,55 @@ bool AssetManager::renameReferencedAsset( const char* pAssetIdFrom, const char*
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AssetManager::packDataAsset(BitStream* stream, const char* pAssetId)
|
||||||
|
{
|
||||||
|
if(stream->writeFlag(isDeclaredAsset(pAssetId)))
|
||||||
|
{
|
||||||
|
stream->write(mAssetToNetId.find(pAssetId)->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* AssetManager::unpackDataAsset(BitStream* stream)
|
||||||
|
{
|
||||||
|
if (stream->readFlag())
|
||||||
|
{
|
||||||
|
typeAssetNetId netId;
|
||||||
|
stream->read(&netId);
|
||||||
|
|
||||||
|
typeNetIdToAssetMap::iterator netChar = mNetIdToAsset.find(netId);
|
||||||
|
if (netChar != mNetIdToAsset.end())
|
||||||
|
{
|
||||||
|
return netChar->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return StringTable->EmptyString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AssetManager::packUpdateAsset(NetConnection* con, U32 mask, BitStream* stream, const char* pAssetId)
|
||||||
|
{
|
||||||
|
if (stream->writeFlag(isDeclaredAsset(pAssetId)))
|
||||||
|
{
|
||||||
|
stream->write(mAssetToNetId.find(pAssetId)->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* AssetManager::unpackUpdateAsset(NetConnection* con, BitStream* stream)
|
||||||
|
{
|
||||||
|
if (stream->readFlag())
|
||||||
|
{
|
||||||
|
typeAssetNetId netId;
|
||||||
|
stream->read(&netId);
|
||||||
|
|
||||||
|
typeNetIdToAssetMap::iterator netChar = mNetIdToAsset.find(netId);
|
||||||
|
if (netChar != mNetIdToAsset.end())
|
||||||
|
{
|
||||||
|
return netChar->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return StringTable->EmptyString();
|
||||||
|
}
|
||||||
|
|
||||||
bool AssetManager::compileAllAssets(const bool compressed, const bool includeUnloaded)
|
bool AssetManager::compileAllAssets(const bool compressed, const bool includeUnloaded)
|
||||||
{
|
{
|
||||||
// Debug Profiling.
|
// Debug Profiling.
|
||||||
|
|
@ -2642,6 +2691,17 @@ const char* AssetManager::getAssetLooseFile(const char* pAssetId, const S32& ind
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static U32 HashAssetId(const char* str)
|
||||||
|
{
|
||||||
|
U32 hash = 2166136261u;
|
||||||
|
while (*str)
|
||||||
|
{
|
||||||
|
hash ^= (U8)*str++;
|
||||||
|
hash *= 16777619u;
|
||||||
|
}
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
bool AssetManager::scanDeclaredAssets( const char* pPath, const char* pExtension, const bool recurse, ModuleDefinition* pModuleDefinition )
|
bool AssetManager::scanDeclaredAssets( const char* pPath, const char* pExtension, const bool recurse, ModuleDefinition* pModuleDefinition )
|
||||||
{
|
{
|
||||||
// Debug Profiling.
|
// Debug Profiling.
|
||||||
|
|
@ -2763,6 +2823,24 @@ bool AssetManager::scanDeclaredAssets( const char* pPath, const char* pExtension
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
U32 netId = HashAssetId(assetIdBuffer);
|
||||||
|
|
||||||
|
// Collision detection
|
||||||
|
typeNetIdToAssetMap::iterator netIterator = mNetIdToAsset.find(netId);
|
||||||
|
if (netIterator != mNetIdToAsset.end())
|
||||||
|
{
|
||||||
|
Con::errorf(
|
||||||
|
"AssetManager: Hash collision for '%s' and '%s'",
|
||||||
|
assetIdBuffer,
|
||||||
|
mNetIdToAsset.find(netId)->value
|
||||||
|
);
|
||||||
|
|
||||||
|
AssertFatal(false, "Asset hash collision detected.");
|
||||||
|
}
|
||||||
|
|
||||||
|
mNetIdToAsset.insert(netId, foundAssetDefinition.mAssetId);
|
||||||
|
mAssetToNetId.insert(foundAssetDefinition.mAssetId, netId);
|
||||||
|
|
||||||
// Create new asset definition.
|
// Create new asset definition.
|
||||||
AssetDefinition* pAssetDefinition = new AssetDefinition( foundAssetDefinition );
|
AssetDefinition* pAssetDefinition = new AssetDefinition( foundAssetDefinition );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,10 @@
|
||||||
#include "assets/assetFieldTypes.h"
|
#include "assets/assetFieldTypes.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _NETCONNECTION_H_
|
||||||
|
#include "sim/netConnection.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Debug Profiling.
|
// Debug Profiling.
|
||||||
#include "platform/profiler.h"
|
#include "platform/profiler.h"
|
||||||
|
|
||||||
|
|
@ -84,6 +88,11 @@ public:
|
||||||
typedef HashTable<typeAssetId, typeAssetId> typeAssetIsDependedOnHash;
|
typedef HashTable<typeAssetId, typeAssetId> typeAssetIsDependedOnHash;
|
||||||
typedef HashMap<AssetPtrBase*, AssetPtrCallback*> typeAssetPtrRefreshHash;
|
typedef HashMap<AssetPtrBase*, AssetPtrCallback*> typeAssetPtrRefreshHash;
|
||||||
|
|
||||||
|
// ASSET NETWORK PACK
|
||||||
|
typedef U32 typeAssetNetId;
|
||||||
|
typedef HashMap<typeAssetNetId, typeAssetId> typeNetIdToAssetMap;
|
||||||
|
typedef HashMap<typeAssetId, typeAssetNetId> typeAssetToNetIdMap;
|
||||||
|
// ASSET NETWORK PACK END
|
||||||
private:
|
private:
|
||||||
/// Declared assets.
|
/// Declared assets.
|
||||||
typeDeclaredAssetsHash mDeclaredAssets;
|
typeDeclaredAssetsHash mDeclaredAssets;
|
||||||
|
|
@ -91,6 +100,11 @@ private:
|
||||||
/// Referenced assets.
|
/// Referenced assets.
|
||||||
typeReferencedAssetsHash mReferencedAssets;
|
typeReferencedAssetsHash mReferencedAssets;
|
||||||
|
|
||||||
|
// ASSET NETWORK PACK
|
||||||
|
typeNetIdToAssetMap mNetIdToAsset;
|
||||||
|
typeAssetToNetIdMap mAssetToNetId;
|
||||||
|
// ASSET NETWORK PACK END
|
||||||
|
|
||||||
/// Asset dependencies.
|
/// Asset dependencies.
|
||||||
typeAssetDependsOnHash mAssetDependsOn;
|
typeAssetDependsOnHash mAssetDependsOn;
|
||||||
typeAssetIsDependedOnHash mAssetIsDependedOn;
|
typeAssetIsDependedOnHash mAssetIsDependedOn;
|
||||||
|
|
@ -151,6 +165,14 @@ public:
|
||||||
bool isReferencedAsset( const char* pAssetId );
|
bool isReferencedAsset( const char* pAssetId );
|
||||||
bool renameReferencedAsset( const char* pAssetIdFrom, const char* pAssetIdTo );
|
bool renameReferencedAsset( const char* pAssetIdFrom, const char* pAssetIdTo );
|
||||||
|
|
||||||
|
// ASSET NETWORK PACK
|
||||||
|
void packDataAsset(BitStream* stream, const char* pAssetId);
|
||||||
|
const char* unpackDataAsset(BitStream* stream);
|
||||||
|
|
||||||
|
void packUpdateAsset(NetConnection* con, U32 mask, BitStream* stream, const char* pAssetId);
|
||||||
|
const char* unpackUpdateAsset(NetConnection* con, BitStream* stream);
|
||||||
|
// ASSET NETWORK PACK END
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Compile all assets.
|
/// Compile all assets.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue