MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / packUpdate

Method packUpdate

Engine/source/environment/river.cpp:951–1038  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

949}
950
951U32 River::packUpdate(NetConnection * con, U32 mask, BitStream * stream)
952{
953 // Pack Parent.
954 U32 retMask = Parent::packUpdate(con, mask, stream);
955
956 if ( stream->writeFlag( mask & RiverMask ) )
957 {
958 // Write Object Transform.
959 stream->writeAffineTransform(mObjToWorld);
960
961 stream->write( mMetersPerSegment );
962 stream->write( mSegmentsPerBatch );
963 stream->write( mDepthScale );
964 stream->write( mMaxDivisionSize );
965 stream->write( mColumnCount );
966
967 stream->write( mFlowMagnitude );
968 stream->write( mLodDistance );
969 }
970
971 if ( stream->writeFlag( mask & NodeMask ) )
972 {
973 const U32 nodeByteSize = 32; // Based on sending all of a node's parameters
974
975 // Test if we can fit all of our nodes within the current stream.
976 // We make sure we leave 100 bytes still free in the stream for whatever
977 // may follow us.
978 S32 allowedBytes = stream->getWriteByteSize() - 100;
979 if ( stream->writeFlag( (nodeByteSize * mNodes.size()) < allowedBytes ) )
980 {
981 // All nodes should fit, so send them out now.
982 stream->writeInt( mNodes.size(), 16 );
983
984 for ( U32 i = 0; i < mNodes.size(); i++ )
985 {
986 mathWrite( *stream, mNodes[i].point );
987 stream->write( mNodes[i].width );
988 stream->write( mNodes[i].depth );
989 mathWrite( *stream, mNodes[i].normal );
990 }
991 }
992 else
993 {
994 // There isn't enough space left in the stream for all of the
995 // nodes. Batch them up into NetEvents.
996 U32 id = gServerNodeListManager->nextListId();
997 U32 count = 0;
998 U32 index = 0;
999 while (count < mNodes.size())
1000 {
1001 count += NodeListManager::smMaximumNodesPerEvent;
1002 if (count > mNodes.size())
1003 {
1004 count = mNodes.size();
1005 }
1006
1007 RiverNodeEvent* event = new RiverNodeEvent();
1008 event->mId = id;

Callers

nothing calls this directly

Calls 10

mathWriteFunction · 0.85
writeAffineTransformMethod · 0.80
getWriteByteSizeMethod · 0.80
writeIntMethod · 0.80
nextListIdMethod · 0.80
postNetEventMethod · 0.80
writeFlagMethod · 0.45
writeMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected