I'm not sure, there is a small bug in Door::packUpdate and Door::unpackUpdate that dont update door property islocked on editor The commented lines make work... U32 Door::packUpdate(NetConnection *connection, U32 mask, BitStream *stream)
{
Con::errorf(ConsoleLogEntry::General, "Door::packUpdate");
U32 retMask = Parent::packUpdate(connection, mask, stream);
stream->writeFlag(mBlockCheckEnable);
//if (stream->writeFlag(mask & OpenMask))<--------if enabled, dont update door property islocked on editor
stream->writeFlag(mIsOpen);
//if (stream->writeFlag(mask & LockMask))<--------if enabled, dont update door property islocked on editor
stream->writeFlag(mIsLocked);
if (stream->writeFlag(key))
stream->writeRangedU32(key->getId(), DataBlockObjectIdFirst, DataBlockObjectIdLast);
//...rest of code
} why only stream->writeFlag(mask & LockMask) dont work however only stream->writeFlag(mIsLocked); work ? :?: void Door::unpackUpdate(NetConnection *connection, BitStream *stream)
{
Con::errorf(ConsoleLogEntry::General, "Door::unpackUpdate");
Parent::unpackUpdate(connection, stream);
mBlockCheckEnable = stream->readFlag();
Con::errorf(ConsoleLogEntry::General, "mBlockCheckEnable %d",mBlockCheckEnable);
//if (stream->readFlag()) <-------if enabled, dont update door property islocked on editor
{
mIsOpen = stream->readFlag();
Con::errorf(ConsoleLogEntry::General, "mIsOpen %d",mIsOpen);
}
//if (stream->readFlag()) <--------if enabled, dont update door property islocked on editor
{
mIsLocked = stream->readFlag();
Con::errorf(ConsoleLogEntry::General, "mIsLocked %d",mIsLocked);
}
//...rest of code
} if I am not mistaken, both BitStream::writeFlag() and BitStream::readFlag() foward the bit mask from bitNum , if i call two times subsequently I would not take the wrong bit ? Thanks for any help!