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

Method packUpdate

Engine/source/environment/river.cpp:956–1043  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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