Browse Source

network reductons
first pass, tsstatic
sceneobject under review

AzaezelX 2 days ago
parent
commit
4579f327b4
1 changed files with 29 additions and 24 deletions
  1. 29 24
      Engine/source/T3D/tsStatic.cpp

+ 29 - 24
Engine/source/T3D/tsStatic.cpp

@@ -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);
-      stream->write((U32)mCollisionType);
+      if (stream->writeFlag(mCollisionLOD>0))
+         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);
-
-      for (U32 i = 0; i < mChangingMaterials.size(); i++)
+      if (stream->writeFlag(mChangingMaterials.size() > 0))
       {
       {
-         stream->writeInt(mChangingMaterials[i].slot, 16);
+         stream->writeInt(mChangingMaterials.size(), 16);
 
 
-         NetStringHandle matNameStr = mChangingMaterials[i].assetId.c_str();
-         con->packNetStringHandleU(stream, matNameStr);
-      }
+         for (U32 i = 0; i < mChangingMaterials.size(); i++)
+         {
+            stream->writeInt(mChangingMaterials[i].slot, 16);
 
 
-      //mChangingMaterials.clear();
+            NetStringHandle matNameStr = mChangingMaterials[i].assetId.c_str();
+            con->packNetStringHandleU(stream, matNameStr);
+         }
+      }
    }
    }
 
 
    return retMask;
    return retMask;
@@ -1042,8 +1044,9 @@ void TSStatic::unpackUpdate(NetConnection* con, BitStream* stream)
    {
    {
       U32 collisionType = CollisionMesh;
       U32 collisionType = CollisionMesh;
 
 
-      stream->read(&mCollisionLOD);
-      stream->read(&collisionType);
+      if (stream->readFlag())
+         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);
-
-      for (U32 i = 0; i < materialCount; i++)
+      if (stream->readFlag())
       {
       {
-         matMap newMatMap;
-         newMatMap.slot = stream->readInt(16);
-         newMatMap.assetId = String(con->unpackNetStringHandleU(stream).getString());
+         U32 materialCount = stream->readInt(16);
+
+         for (U32 i = 0; i < materialCount; i++)
+         {
+            matMap newMatMap;
+            newMatMap.slot = stream->readInt(16);
+            newMatMap.assetId = String(con->unpackNetStringHandleU(stream).getString());
 
 
-         //do the lookup, now
-         newMatMap.matAsset = AssetDatabase.acquireAsset<MaterialAsset>(newMatMap.assetId);
+            //do the lookup, now
+            newMatMap.matAsset = AssetDatabase.acquireAsset<MaterialAsset>(newMatMap.assetId);
 
 
-         mChangingMaterials.push_back(newMatMap);
+            mChangingMaterials.push_back(newMatMap);
+         }
       }
       }
-
       updateMaterials();
       updateMaterials();
    }
    }