Core/Movement: converted collision height and move update opcodes back to movement structures and implement new movement status elements for future use

This commit is contained in:
Ovahlord committed 2020-05-10 19:21:33 +02:00
1 parent a2cea3ce08
commit d8ec67df50
8 files changed
+459 -635

No files matched your search

+187 -181
View File
@@ -13732,187 +13732,193 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle
switch (element)
{
case MSEHasGuidByte0:
case MSEHasGuidByte1:
case MSEHasGuidByte2:
case MSEHasGuidByte3:
case MSEHasGuidByte4:
case MSEHasGuidByte5:
case MSEHasGuidByte6:
case MSEHasGuidByte7:
data.WriteBit(guid[element - MSEHasGuidByte0]);
break;
case MSEHasTransportGuidByte0:
case MSEHasTransportGuidByte1:
case MSEHasTransportGuidByte2:
case MSEHasTransportGuidByte3:
case MSEHasTransportGuidByte4:
case MSEHasTransportGuidByte5:
case MSEHasTransportGuidByte6:
case MSEHasTransportGuidByte7:
if (hasTransportData)
data.WriteBit(tguid[element - MSEHasTransportGuidByte0]);
break;
case MSEGuidByte0:
case MSEGuidByte1:
case MSEGuidByte2:
case MSEGuidByte3:
case MSEGuidByte4:
case MSEGuidByte5:
case MSEGuidByte6:
case MSEGuidByte7:
data.WriteByteSeq(guid[element - MSEGuidByte0]);
break;
case MSETransportGuidByte0:
case MSETransportGuidByte1:
case MSETransportGuidByte2:
case MSETransportGuidByte3:
case MSETransportGuidByte4:
case MSETransportGuidByte5:
case MSETransportGuidByte6:
case MSETransportGuidByte7:
if (hasTransportData)
data.WriteByteSeq(tguid[element - MSETransportGuidByte0]);
break;
case MSEHasMovementFlags:
data.WriteBit(!hasMovementFlags);
break;
case MSEHasMovementFlags2:
data.WriteBit(!hasMovementFlags2);
break;
case MSEHasTimestamp:
data.WriteBit(!hasTimestamp);
break;
case MSEHasOrientation:
data.WriteBit(!hasOrientation);
break;
case MSEHasTransportData:
data.WriteBit(hasTransportData);
break;
case MSEHasTransportTime2:
if (hasTransportData)
data.WriteBit(hasTransportTime2);
break;
case MSEHasVehicleId:
if (hasTransportData)
data.WriteBit(hasTransportVehicleId);
break;
case MSEHasPitch:
data.WriteBit(!hasPitch);
break;
case MSEHasFallData:
data.WriteBit(hasFallData);
break;
case MSEHasFallDirection:
if (hasFallData)
data.WriteBit(hasFallDirection);
break;
case MSEHasSplineElevation:
data.WriteBit(!hasSplineElevation);
break;
case MSEHasSpline:
data.WriteBit(hasSpline);
break;
case MSEMovementFlags:
if (hasMovementFlags)
data.WriteBits(GetUnitMovementFlags(), 30);
break;
case MSEMovementFlags2:
if (hasMovementFlags2)
data.WriteBits(GetExtraUnitMovementFlags(), 12);
break;
case MSETimestamp:
if (hasTimestamp)
data << mi.time;
break;
case MSEPositionX:
data << GetPositionX();
break;
case MSEPositionY:
data << GetPositionY();
break;
case MSEPositionZ:
data << GetPositionZ();
break;
case MSEOrientation:
if (hasOrientation)
data << GetOrientation();
break;
case MSETransportPositionX:
if (hasTransportData)
data << GetTransOffsetX();
break;
case MSETransportPositionY:
if (hasTransportData)
data << GetTransOffsetY();
break;
case MSETransportPositionZ:
if (hasTransportData)
data << GetTransOffsetZ();
break;
case MSETransportOrientation:
if (hasTransportData)
data << GetTransOffsetO();
break;
case MSETransportSeat:
if (hasTransportData)
data << GetTransSeat();
break;
case MSETransportTime:
if (hasTransportData)
data << GetTransTime();
break;
case MSETransportTime2:
if (hasTransportData && hasTransportTime2)
data << mi.transport.time2;
break;
case MSETransportVehicleId:
if (hasTransportData && hasTransportVehicleId)
data << mi.transport.vehicleId;
break;
case MSEPitch:
if (hasPitch)
data << mi.pitch;
break;
case MSEFallTime:
if (hasFallData)
data << mi.jump.fallTime;
break;
case MSEFallVerticalSpeed:
if (hasFallData)
data << mi.jump.zspeed;
break;
case MSEFallCosAngle:
if (hasFallData && hasFallDirection)
data << mi.jump.cosAngle;
break;
case MSEFallSinAngle:
if (hasFallData && hasFallDirection)
data << mi.jump.sinAngle;
break;
case MSEFallHorizontalSpeed:
if (hasFallData && hasFallDirection)
data << mi.jump.xyspeed;
break;
case MSESplineElevation:
if (hasSplineElevation)
data << mi.splineElevation;
break;
case MSECounter:
data << m_movementCounter++;
break;
case MSEZeroBit:
data.WriteBit(0);
break;
case MSEOneBit:
data.WriteBit(1);
break;
case MSEExtraElement:
extras->WriteNextElement(data);
break;
default:
ASSERT(Movement::PrintInvalidSequenceElement(element, __FUNCTION__));
break;
case MSEHasGuidByte0:
case MSEHasGuidByte1:
case MSEHasGuidByte2:
case MSEHasGuidByte3:
case MSEHasGuidByte4:
case MSEHasGuidByte5:
case MSEHasGuidByte6:
case MSEHasGuidByte7:
data.WriteBit(guid[element - MSEHasGuidByte0]);
break;
case MSEHasTransportGuidByte0:
case MSEHasTransportGuidByte1:
case MSEHasTransportGuidByte2:
case MSEHasTransportGuidByte3:
case MSEHasTransportGuidByte4:
case MSEHasTransportGuidByte5:
case MSEHasTransportGuidByte6:
case MSEHasTransportGuidByte7:
if (hasTransportData)
data.WriteBit(tguid[element - MSEHasTransportGuidByte0]);
break;
case MSEGuidByte0:
case MSEGuidByte1:
case MSEGuidByte2:
case MSEGuidByte3:
case MSEGuidByte4:
case MSEGuidByte5:
case MSEGuidByte6:
case MSEGuidByte7:
data.WriteByteSeq(guid[element - MSEGuidByte0]);
break;
case MSETransportGuidByte0:
case MSETransportGuidByte1:
case MSETransportGuidByte2:
case MSETransportGuidByte3:
case MSETransportGuidByte4:
case MSETransportGuidByte5:
case MSETransportGuidByte6:
case MSETransportGuidByte7:
if (hasTransportData)
data.WriteByteSeq(tguid[element - MSETransportGuidByte0]);
break;
case MSEHasMovementFlags:
data.WriteBit(!hasMovementFlags);
break;
case MSEHasMovementFlags2:
data.WriteBit(!hasMovementFlags2);
break;
case MSEHasTimestamp:
data.WriteBit(!hasTimestamp);
break;
case MSEHasOrientation:
data.WriteBit(!hasOrientation);
break;
case MSEHasTransportData:
data.WriteBit(hasTransportData);
break;
case MSEHasTransportTime2:
if (hasTransportData)
data.WriteBit(hasTransportTime2);
break;
case MSEHasVehicleId:
if (hasTransportData)
data.WriteBit(hasTransportVehicleId);
break;
case MSEHasPitch:
data.WriteBit(!hasPitch);
break;
case MSEHasFallData:
data.WriteBit(hasFallData);
break;
case MSEHasFallDirection:
if (hasFallData)
data.WriteBit(hasFallDirection);
break;
case MSEHasSplineElevation:
data.WriteBit(!hasSplineElevation);
break;
case MSEHasSpline:
data.WriteBit(hasSpline);
break;
case MSEHasHeightChangeFailed:
data.WriteBit(mi.HasHeightChangeFailed());
break;
case MSEMovementFlags:
if (hasMovementFlags)
data.WriteBits(GetUnitMovementFlags(), 30);
break;
case MSEMovementFlags2:
if (hasMovementFlags2)
data.WriteBits(GetExtraUnitMovementFlags(), 12);
break;
case MSETimestamp:
if (hasTimestamp)
data << mi.time;
break;
case MSEPositionX:
data << GetPositionX();
break;
case MSEPositionY:
data << GetPositionY();
break;
case MSEPositionZ:
data << GetPositionZ();
break;
case MSEOrientation:
if (hasOrientation)
data << GetOrientation();
break;
case MSETransportPositionX:
if (hasTransportData)
data << GetTransOffsetX();
break;
case MSETransportPositionY:
if (hasTransportData)
data << GetTransOffsetY();
break;
case MSETransportPositionZ:
if (hasTransportData)
data << GetTransOffsetZ();
break;
case MSETransportOrientation:
if (hasTransportData)
data << GetTransOffsetO();
break;
case MSETransportSeat:
if (hasTransportData)
data << GetTransSeat();
break;
case MSETransportTime:
if (hasTransportData)
data << GetTransTime();
break;
case MSETransportTime2:
if (hasTransportData && hasTransportTime2)
data << mi.transport.time2;
break;
case MSETransportVehicleId:
if (hasTransportData && hasTransportVehicleId)
data << mi.transport.vehicleId;
break;
case MSEPitch:
if (hasPitch)
data << mi.pitch;
break;
case MSEFallTime:
if (hasFallData)
data << mi.jump.fallTime;
break;
case MSEFallVerticalSpeed:
if (hasFallData)
data << mi.jump.zspeed;
break;
case MSEFallCosAngle:
if (hasFallData && hasFallDirection)
data << mi.jump.cosAngle;
break;
case MSEFallSinAngle:
if (hasFallData && hasFallDirection)
data << mi.jump.sinAngle;
break;
case MSEFallHorizontalSpeed:
if (hasFallData && hasFallDirection)
data << mi.jump.xyspeed;
break;
case MSESplineElevation:
if (hasSplineElevation)
data << mi.splineElevation;
break;
case MSECounter:
data << m_movementCounter++;
break;
case MSEZeroBit:
data.WriteBit(0);
break;
case MSEOneBit:
data.WriteBit(1);
break;
case MSEFlushBits:
data.FlushBits();
break;
case MSEExtraElement:
extras->WriteNextElement(data);
break;
default:
ASSERT(Movement::PrintInvalidSequenceElement(element, __FUNCTION__));
break;
}
}
}