mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Merge pull request #1581 from Azaezel/alpha41/netpipeNarrowing
Alpha41/netpipe narrowing
This commit is contained in:
commit
ca2c502269
2 changed files with 83 additions and 97 deletions
|
|
@ -942,8 +942,9 @@ U32 TSStatic::packUpdate(NetConnection* con, U32 mask, BitStream* stream)
|
||||||
|
|
||||||
if (stream->writeFlag(mask & UpdateCollisionMask))
|
if (stream->writeFlag(mask & UpdateCollisionMask))
|
||||||
{
|
{
|
||||||
stream->write(mCollisionLOD);
|
if (stream->writeFlag(mCollisionLOD>0))
|
||||||
stream->write((U32)mCollisionType);
|
stream->writeInt(mCollisionLOD,12);
|
||||||
|
stream->writeInt(mCollisionType,4);
|
||||||
}
|
}
|
||||||
if (stream->writeFlag(mask & SkinMask))
|
if (stream->writeFlag(mask & SkinMask))
|
||||||
con->packNetStringHandleU(stream, mSkinNameHandle);
|
con->packNetStringHandleU(stream, mSkinNameHandle);
|
||||||
|
|
@ -952,7 +953,7 @@ U32 TSStatic::packUpdate(NetConnection* con, U32 mask, BitStream* stream)
|
||||||
{
|
{
|
||||||
PACK_ASSET_REFACTOR(con, Shape);
|
PACK_ASSET_REFACTOR(con, Shape);
|
||||||
|
|
||||||
stream->write((U32)mDecalType);
|
stream->writeInt(mDecalType,4);
|
||||||
|
|
||||||
stream->writeFlag(mAllowPlayerStep);
|
stream->writeFlag(mAllowPlayerStep);
|
||||||
stream->writeFlag(mMeshCulling);
|
stream->writeFlag(mMeshCulling);
|
||||||
|
|
@ -998,17 +999,18 @@ U32 TSStatic::packUpdate(NetConnection* con, U32 mask, BitStream* stream)
|
||||||
|
|
||||||
if (stream->writeFlag(mask & MaterialMask))
|
if (stream->writeFlag(mask & MaterialMask))
|
||||||
{
|
{
|
||||||
stream->writeInt(mChangingMaterials.size(), 16);
|
if (stream->writeFlag(mChangingMaterials.size() > 0))
|
||||||
|
|
||||||
for (U32 i = 0; i < mChangingMaterials.size(); i++)
|
|
||||||
{
|
{
|
||||||
stream->writeInt(mChangingMaterials[i].slot, 16);
|
stream->writeInt(mChangingMaterials.size(), 16);
|
||||||
|
|
||||||
NetStringHandle matNameStr = mChangingMaterials[i].assetId.c_str();
|
for (U32 i = 0; i < mChangingMaterials.size(); i++)
|
||||||
con->packNetStringHandleU(stream, matNameStr);
|
{
|
||||||
|
stream->writeInt(mChangingMaterials[i].slot, 16);
|
||||||
|
|
||||||
|
NetStringHandle matNameStr = mChangingMaterials[i].assetId.c_str();
|
||||||
|
con->packNetStringHandleU(stream, matNameStr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//mChangingMaterials.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return retMask;
|
return retMask;
|
||||||
|
|
@ -1042,8 +1044,9 @@ void TSStatic::unpackUpdate(NetConnection* con, BitStream* stream)
|
||||||
{
|
{
|
||||||
U32 collisionType = CollisionMesh;
|
U32 collisionType = CollisionMesh;
|
||||||
|
|
||||||
stream->read(&mCollisionLOD);
|
if (stream->readFlag())
|
||||||
stream->read(&collisionType);
|
mCollisionLOD = stream->readInt(12);
|
||||||
|
collisionType = stream->readInt(4);
|
||||||
|
|
||||||
// Handle it if we have changed CollisionType's
|
// Handle it if we have changed CollisionType's
|
||||||
if ((MeshType)collisionType != mCollisionType)
|
if ((MeshType)collisionType != mCollisionType)
|
||||||
|
|
@ -1069,7 +1072,7 @@ void TSStatic::unpackUpdate(NetConnection* con, BitStream* stream)
|
||||||
{
|
{
|
||||||
UNPACK_ASSET_REFACTOR(con, Shape);
|
UNPACK_ASSET_REFACTOR(con, Shape);
|
||||||
|
|
||||||
stream->read((U32*)&mDecalType);
|
mDecalType = (MeshType)stream->readInt(4);
|
||||||
|
|
||||||
mAllowPlayerStep = stream->readFlag();
|
mAllowPlayerStep = stream->readFlag();
|
||||||
mMeshCulling = stream->readFlag();
|
mMeshCulling = stream->readFlag();
|
||||||
|
|
@ -1124,20 +1127,22 @@ void TSStatic::unpackUpdate(NetConnection* con, BitStream* stream)
|
||||||
if (stream->readFlag())
|
if (stream->readFlag())
|
||||||
{
|
{
|
||||||
mChangingMaterials.clear();
|
mChangingMaterials.clear();
|
||||||
U32 materialCount = stream->readInt(16);
|
if (stream->readFlag())
|
||||||
|
|
||||||
for (U32 i = 0; i < materialCount; i++)
|
|
||||||
{
|
{
|
||||||
matMap newMatMap;
|
U32 materialCount = stream->readInt(16);
|
||||||
newMatMap.slot = stream->readInt(16);
|
|
||||||
newMatMap.assetId = String(con->unpackNetStringHandleU(stream).getString());
|
|
||||||
|
|
||||||
//do the lookup, now
|
for (U32 i = 0; i < materialCount; i++)
|
||||||
newMatMap.matAsset = AssetDatabase.acquireAsset<MaterialAsset>(newMatMap.assetId);
|
{
|
||||||
|
matMap newMatMap;
|
||||||
|
newMatMap.slot = stream->readInt(16);
|
||||||
|
newMatMap.assetId = String(con->unpackNetStringHandleU(stream).getString());
|
||||||
|
|
||||||
mChangingMaterials.push_back(newMatMap);
|
//do the lookup, now
|
||||||
|
newMatMap.matAsset = AssetDatabase.acquireAsset<MaterialAsset>(newMatMap.assetId);
|
||||||
|
|
||||||
|
mChangingMaterials.push_back(newMatMap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMaterials();
|
updateMaterials();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -905,62 +905,48 @@ U32 SceneObject::packUpdate( NetConnection* conn, U32 mask, BitStream* stream )
|
||||||
if ( stream->writeFlag( mask & FlagMask ) )
|
if ( stream->writeFlag( mask & FlagMask ) )
|
||||||
stream->writeRangedU32( (U32)mObjectFlags, 0, getObjectFlagMax() );
|
stream->writeRangedU32( (U32)mObjectFlags, 0, getObjectFlagMax() );
|
||||||
|
|
||||||
// PATHSHAPE
|
|
||||||
//Begin attachment
|
|
||||||
retMask = 0; //retry mask
|
retMask = 0; //retry mask
|
||||||
|
|
||||||
if (stream->writeFlag(getParent() != NULL)) {
|
|
||||||
stream->writeAffineTransform(mGraph.objToParent);
|
|
||||||
}
|
|
||||||
if (stream->writeFlag(mask & MountedMask))
|
if (stream->writeFlag(mask & MountedMask))
|
||||||
{
|
{
|
||||||
// Check to see if we need to write an object ID
|
// Check to see if we need to write an object ID
|
||||||
if (stream->writeFlag(mGraph.parent)) {
|
if (stream->writeFlag(mGraph.parent))
|
||||||
|
{
|
||||||
S32 t = conn->getGhostIndex(mGraph.parent);
|
S32 t = conn->getGhostIndex(mGraph.parent);
|
||||||
// Check to see if we can actually ghost this...
|
// Check to see if we can actually ghost this...
|
||||||
if (t == -1) {
|
if (stream->writeFlag(t != -1))
|
||||||
// Cant, try again later
|
{
|
||||||
retMask |= MountedMask;
|
// Can, write it.
|
||||||
stream->writeFlag(false);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Can, write it.
|
|
||||||
stream->writeFlag(true);
|
|
||||||
stream->writeRangedU32(U32(t), 0, NetConnection::MaxGhostCount);
|
stream->writeRangedU32(U32(t), 0, NetConnection::MaxGhostCount);
|
||||||
stream->writeAffineTransform(mGraph.objToParent);
|
stream->writeAffineTransform(mGraph.objToParent);
|
||||||
//Con::errorf("%d: sent mounted on %d", getId(), mGraph.parent->getId());
|
//Con::errorf("%d: sent mounted on %d", getId(), mGraph.parent->getId());
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
}
|
|
||||||
// End of Attachment
|
|
||||||
// PATHSHAPE END
|
|
||||||
|
|
||||||
if ( mask & MountedMask )
|
|
||||||
{
|
|
||||||
if ( mMount.object )
|
|
||||||
{
|
|
||||||
S32 gIndex = conn->getGhostIndex( mMount.object );
|
|
||||||
|
|
||||||
if ( stream->writeFlag( gIndex != -1 ) )
|
|
||||||
{
|
{
|
||||||
stream->writeFlag( true );
|
// Cant, try again later
|
||||||
stream->writeInt( gIndex, NetConnection::GhostIdBitSize );
|
retMask |= MountedMask;
|
||||||
if ( stream->writeFlag( mMount.node != -1 ) )
|
}
|
||||||
stream->writeInt( mMount.node, NumMountPointBits );
|
}
|
||||||
mathWrite( *stream, mMount.xfm );
|
else if (stream->writeFlag(mMount.object))
|
||||||
|
{
|
||||||
|
S32 gIndex = conn->getGhostIndex(mMount.object);
|
||||||
|
|
||||||
|
if (stream->writeFlag(gIndex != -1))
|
||||||
|
{
|
||||||
|
stream->writeInt(gIndex, NetConnection::GhostIdBitSize);
|
||||||
|
if (stream->writeFlag(mMount.node != -1))
|
||||||
|
stream->writeInt(mMount.node, NumMountPointBits);
|
||||||
|
mathWrite(*stream, mMount.xfm);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
// Will have to try again later
|
// Will have to try again later
|
||||||
retMask |= MountedMask;
|
retMask |= MountedMask;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
// Unmount if this isn't the initial packet
|
|
||||||
if ( stream->writeFlag( !(mask & InitialUpdateMask) ) )
|
|
||||||
stream->writeFlag( false );
|
|
||||||
}
|
}
|
||||||
else
|
else if (stream->writeFlag(getParent() != NULL)) //parent xform sync
|
||||||
stream->writeFlag( false );
|
{
|
||||||
|
stream->writeAffineTransform(mGraph.objToParent);
|
||||||
|
}
|
||||||
|
|
||||||
return retMask;
|
return retMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -974,15 +960,7 @@ void SceneObject::unpackUpdate( NetConnection* conn, BitStream* stream )
|
||||||
if ( stream->readFlag() )
|
if ( stream->readFlag() )
|
||||||
mObjectFlags = stream->readRangedU32( 0, getObjectFlagMax() );
|
mObjectFlags = stream->readRangedU32( 0, getObjectFlagMax() );
|
||||||
|
|
||||||
// PATHSHAPE
|
if (stream->readFlag())// MountedMask
|
||||||
// begin of attachment
|
|
||||||
if (stream->readFlag())
|
|
||||||
{
|
|
||||||
MatrixF m;
|
|
||||||
stream->readAffineTransform(&m);
|
|
||||||
mGraph.objToParent = m;
|
|
||||||
}
|
|
||||||
if (stream->readFlag())
|
|
||||||
{
|
{
|
||||||
// Check to see if we need to read an object ID
|
// Check to see if we need to read an object ID
|
||||||
if (stream->readFlag())
|
if (stream->readFlag())
|
||||||
|
|
@ -990,7 +968,7 @@ void SceneObject::unpackUpdate( NetConnection* conn, BitStream* stream )
|
||||||
// Check to see if we can actually ghost this...
|
// Check to see if we can actually ghost this...
|
||||||
if (stream->readFlag())
|
if (stream->readFlag())
|
||||||
{
|
{
|
||||||
GameBase *newParent = static_cast<GameBase*>(conn->resolveGhost(stream->readRangedU32(0, NetConnection::MaxGhostCount)));
|
GameBase* newParent = static_cast<GameBase*>(conn->resolveGhost(stream->readRangedU32(0, NetConnection::MaxGhostCount)));
|
||||||
MatrixF m;
|
MatrixF m;
|
||||||
stream->readAffineTransform(&m);
|
stream->readAffineTransform(&m);
|
||||||
|
|
||||||
|
|
@ -1000,40 +978,43 @@ void SceneObject::unpackUpdate( NetConnection* conn, BitStream* stream )
|
||||||
processAfter(newParent);
|
processAfter(newParent);
|
||||||
}
|
}
|
||||||
|
|
||||||
attachToParent(newParent, &m);
|
attachToParent(newParent, &m);
|
||||||
//Con::errorf("%d: got mounted on %d", getId(), mParentObject->getId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
attachToParent(NULL);
|
attachToParent(NULL);
|
||||||
}
|
|
||||||
}
|
|
||||||
// End of attachment
|
|
||||||
// PATHSHAPE END
|
|
||||||
|
|
||||||
// MountedMask
|
if (stream->readFlag()) //mounted to an object
|
||||||
if ( stream->readFlag() )
|
|
||||||
{
|
|
||||||
if ( stream->readFlag() )
|
|
||||||
{
|
|
||||||
S32 gIndex = stream->readInt( NetConnection::GhostIdBitSize );
|
|
||||||
SceneObject* obj = dynamic_cast<SceneObject*>( conn->resolveGhost( gIndex ) );
|
|
||||||
S32 node = -1;
|
|
||||||
if ( stream->readFlag() ) // node != -1
|
|
||||||
node = stream->readInt( NumMountPointBits );
|
|
||||||
MatrixF xfm;
|
|
||||||
mathRead( *stream, &xfm );
|
|
||||||
if ( !obj )
|
|
||||||
{
|
{
|
||||||
conn->setLastError( "Invalid packet from server." );
|
if (stream->readFlag()) //object was ghosted
|
||||||
return;
|
{
|
||||||
|
S32 gIndex = stream->readInt(NetConnection::GhostIdBitSize);
|
||||||
|
SceneObject* obj = dynamic_cast<SceneObject*>(conn->resolveGhost(gIndex));
|
||||||
|
S32 node = -1;
|
||||||
|
if (stream->readFlag()) // node != -1
|
||||||
|
node = stream->readInt(NumMountPointBits);
|
||||||
|
MatrixF xfm;
|
||||||
|
mathRead(*stream, &xfm);
|
||||||
|
if (!obj)
|
||||||
|
{
|
||||||
|
conn->setLastError("Invalid packet from server.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
obj->mountObject(this, node, xfm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
obj->mountObject( this, node, xfm );
|
else
|
||||||
|
unmount();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
unmount();
|
|
||||||
}
|
}
|
||||||
|
else if (stream->readFlag()) //parent xform sync
|
||||||
|
{
|
||||||
|
MatrixF m;
|
||||||
|
stream->readAffineTransform(&m);
|
||||||
|
mGraph.objToParent = m;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue