mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 11:43:49 +00:00
db-cache -- implementation of datablock caching system.
This commit is contained in:
parent
169e539e47
commit
fec893cd8b
3 changed files with 492 additions and 1 deletions
|
|
@ -20,6 +20,11 @@
|
|||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
|
||||
// Copyright (C) 2015 Faust Logic, Inc.
|
||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||
|
||||
#include "platform/platform.h"
|
||||
#include "core/dnet.h"
|
||||
#include "core/stream/bitStream.h"
|
||||
|
|
@ -136,6 +141,9 @@ void SimDataBlockEvent::notifyDelivered(NetConnection *conn, bool )
|
|||
|
||||
void SimDataBlockEvent::pack(NetConnection *conn, BitStream *bstream)
|
||||
{
|
||||
#ifdef AFX_CAP_DATABLOCK_CACHE
|
||||
((GameConnection *)conn)->tempDisableStringBuffering(bstream);
|
||||
#endif
|
||||
SimDataBlock* obj;
|
||||
Sim::findObject(id,obj);
|
||||
GameConnection *gc = (GameConnection *) conn;
|
||||
|
|
@ -157,10 +165,18 @@ void SimDataBlockEvent::pack(NetConnection *conn, BitStream *bstream)
|
|||
bstream->writeInt(classId ^ DebugChecksum, 32);
|
||||
#endif
|
||||
}
|
||||
#ifdef AFX_CAP_DATABLOCK_CACHE
|
||||
((GameConnection *)conn)->restoreStringBuffering(bstream);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SimDataBlockEvent::unpack(NetConnection *cptr, BitStream *bstream)
|
||||
{
|
||||
#ifdef AFX_CAP_DATABLOCK_CACHE
|
||||
// stash the stream position prior to unpacking
|
||||
S32 start_pos = bstream->getCurPos();
|
||||
((GameConnection *)cptr)->tempDisableStringBuffering(bstream);
|
||||
#endif
|
||||
if(bstream->readFlag())
|
||||
{
|
||||
mProcess = true;
|
||||
|
|
@ -215,6 +231,11 @@ void SimDataBlockEvent::unpack(NetConnection *cptr, BitStream *bstream)
|
|||
#endif
|
||||
|
||||
}
|
||||
#ifdef AFX_CAP_DATABLOCK_CACHE
|
||||
// rewind to stream position and then process raw bytes for caching
|
||||
((GameConnection *)cptr)->repackClientDatablock(bstream, start_pos);
|
||||
((GameConnection *)cptr)->restoreStringBuffering(bstream);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SimDataBlockEvent::write(NetConnection *cptr, BitStream *bstream)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue