| 3067 | } |
| 3068 | |
| 3069 | U32 ShapeBase::packUpdate(NetConnection *con, U32 mask, BitStream *stream) |
| 3070 | { |
| 3071 | U32 retMask = Parent::packUpdate(con, mask, stream); |
| 3072 | |
| 3073 | if (mask & InitialUpdateMask) { |
| 3074 | // mask off sounds that aren't playing |
| 3075 | S32 i; |
| 3076 | for (i = 0; i < MaxSoundThreads; i++) |
| 3077 | if (!mSoundThread[i].play) |
| 3078 | mask &= ~(SoundMaskN << i); |
| 3079 | |
| 3080 | // mask off threads that aren't running |
| 3081 | for (i = 0; i < MaxScriptThreads; i++) |
| 3082 | if (mScriptThread[i].sequence == -1) |
| 3083 | mask &= ~(ThreadMaskN << i); |
| 3084 | |
| 3085 | // mask off images that aren't updated |
| 3086 | for(i = 0; i < MaxMountedImages; i++) |
| 3087 | if(!mMountedImageList[i].dataBlock) |
| 3088 | mask &= ~(ImageMaskN << i); |
| 3089 | } |
| 3090 | |
| 3091 | if(!stream->writeFlag(mask & (NameMask | DamageMask | SoundMask | MeshHiddenMask | |
| 3092 | ThreadMask | ImageMask | CloakMask | SkinMask))) |
| 3093 | return retMask; |
| 3094 | |
| 3095 | if (stream->writeFlag(mask & DamageMask)) { |
| 3096 | stream->writeFloat(mClampF(mDamage / mDataBlock->maxDamage, 0.f, 1.f), DamageLevelBits); |
| 3097 | stream->writeInt(mDamageState,NumDamageStateBits); |
| 3098 | stream->writeNormalVector( damageDir, 8 ); |
| 3099 | } |
| 3100 | |
| 3101 | if (stream->writeFlag(mask & ThreadMask)) { |
| 3102 | for (S32 i = 0; i < MaxScriptThreads; i++) { |
| 3103 | Thread& st = mScriptThread[i]; |
| 3104 | if (stream->writeFlag( (st.sequence != -1 || st.state == Thread::Destroy) && (mask & (ThreadMaskN << i)) ) ) { |
| 3105 | stream->writeInt(st.sequence,ThreadSequenceBits); |
| 3106 | stream->writeInt(st.state,2); |
| 3107 | stream->write(st.timescale); |
| 3108 | stream->write(st.position); |
| 3109 | stream->writeFlag(st.atEnd); |
| 3110 | } |
| 3111 | } |
| 3112 | } |
| 3113 | |
| 3114 | if (stream->writeFlag(mask & SoundMask)) { |
| 3115 | for (S32 i = 0; i < MaxSoundThreads; i++) { |
| 3116 | SoundThread& st = mSoundThread[i]; |
| 3117 | if (stream->writeFlag(mask & (SoundMaskN << i))) |
| 3118 | if (stream->writeFlag(st.play)) |
| 3119 | { |
| 3120 | NetStringHandle assetIdStr = st.asset->getAssetId(); |
| 3121 | con->packNetStringHandleU(stream, assetIdStr); |
| 3122 | } |
| 3123 | } |
| 3124 | } |
| 3125 | |
| 3126 | if (stream->writeFlag(mask & ImageMask)) { |
nothing calls this directly
no test coverage detected