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

Method packUpdate

Engine/source/T3D/shapeBase.cpp:2918–3041  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2916}
2917
2918U32 ShapeBase::packUpdate(NetConnection *con, U32 mask, BitStream *stream)
2919{
2920 U32 retMask = Parent::packUpdate(con, mask, stream);
2921
2922 if (mask & InitialUpdateMask) {
2923 // mask off sounds that aren't playing
2924 S32 i;
2925 for (i = 0; i < MaxSoundThreads; i++)
2926 if (!mSoundThread[i].play)
2927 mask &= ~(SoundMaskN << i);
2928
2929 // mask off threads that aren't running
2930 for (i = 0; i < MaxScriptThreads; i++)
2931 if (mScriptThread[i].sequence == -1)
2932 mask &= ~(ThreadMaskN << i);
2933
2934 // mask off images that aren't updated
2935 for(i = 0; i < MaxMountedImages; i++)
2936 if(!mMountedImageList[i].dataBlock)
2937 mask &= ~(ImageMaskN << i);
2938 }
2939
2940 if(!stream->writeFlag(mask & (NameMask | DamageMask | SoundMask | MeshHiddenMask |
2941 ThreadMask | ImageMask | CloakMask | SkinMask)))
2942 return retMask;
2943
2944 if (stream->writeFlag(mask & DamageMask)) {
2945 stream->writeFloat(mClampF(mDamage / mDataBlock->maxDamage, 0.f, 1.f), DamageLevelBits);
2946 stream->writeInt(mDamageState,NumDamageStateBits);
2947 stream->writeNormalVector( damageDir, 8 );
2948 }
2949
2950 if (stream->writeFlag(mask & ThreadMask)) {
2951 for (S32 i = 0; i < MaxScriptThreads; i++) {
2952 Thread& st = mScriptThread[i];
2953 if (stream->writeFlag( (st.sequence != -1 || st.state == Thread::Destroy) && (mask & (ThreadMaskN << i)) ) ) {
2954 stream->writeInt(st.sequence,ThreadSequenceBits);
2955 stream->writeInt(st.state,2);
2956 stream->write(st.timescale);
2957 stream->write(st.position);
2958 stream->writeFlag(st.atEnd);
2959 }
2960 }
2961 }
2962
2963 if (stream->writeFlag(mask & SoundMask)) {
2964 for (S32 i = 0; i < MaxSoundThreads; i++) {
2965 Sound& st = mSoundThread[i];
2966 if (stream->writeFlag(mask & (SoundMaskN << i)))
2967 if (stream->writeFlag(st.play))
2968 stream->writeRangedU32(st.profile->getId(),DataBlockObjectIdFirst,
2969 DataBlockObjectIdLast);
2970 }
2971 }
2972
2973 if (stream->writeFlag(mask & ImageMask)) {
2974 for (S32 i = 0; i < MaxMountedImages; i++)
2975 if (stream->writeFlag(mask & (ImageMaskN << i))) {

Callers

nothing calls this directly

Calls 10

mClampFFunction · 0.85
writeFloatMethod · 0.80
writeIntMethod · 0.80
writeNormalVectorMethod · 0.80
writeRangedU32Method · 0.80
packNetStringHandleUMethod · 0.80
writeFlagMethod · 0.45
writeMethod · 0.45
getIdMethod · 0.45
writeBitsMethod · 0.45

Tested by

no test coverage detected