public static void WriteTransportInfo(WorldPacket data, MovementInfo.TransportInfo transportInfo) { bool hasPrevTime = transportInfo.prevTime != 0; bool hasVehicleId = transportInfo.vehicleId != 0; data.WritePackedGuid(transportInfo.guid); // Transport Guid data.WriteFloat(transportInfo.pos.GetPositionX()); data.WriteFloat(transportInfo.pos.GetPositionY()); data.WriteFloat(transportInfo.pos.GetPositionZ()); data.WriteFloat(transportInfo.pos.GetOrientation()); data.WriteInt8(transportInfo.seat); // VehicleSeatIndex data.WriteUInt32(transportInfo.time); // MoveTime data.WriteBit(hasPrevTime); data.WriteBit(hasVehicleId); data.FlushBits(); if (hasPrevTime) { data.WriteUInt32(transportInfo.prevTime); // PrevMoveTime } if (hasVehicleId) { data.WriteUInt32(transportInfo.vehicleId); // VehicleRecID } }
public static MovementInfo.TransportInfo ReadTransportData(Packet packet, params object[] idx) { var transportInfo = new MovementInfo.TransportInfo(); transportInfo.Guid = packet.ReadPackedGuid128("TransportGuid", idx); transportInfo.Offset = packet.ReadVector4("TransportPosition", idx); packet.ReadByte("TransportSeat", idx); packet.ReadInt32("TransportMoveTime", idx); packet.ResetBitReader(); var hasPrevMoveTime = packet.ReadBit("HasPrevMoveTime", idx); var hasVehicleRecID = packet.ReadBit("HasVehicleRecID", idx); if (hasPrevMoveTime) { packet.ReadUInt32("PrevMoveTime", idx); } if (hasVehicleRecID) { packet.ReadUInt32("VehicleRecID", idx); } return(transportInfo); }
public static void ReadTransportInfo(WorldPacket data, ref MovementInfo.TransportInfo transportInfo) { transportInfo.guid = data.ReadPackedGuid(); // Transport Guid transportInfo.pos.posX = data.ReadFloat(); transportInfo.pos.posY = data.ReadFloat(); transportInfo.pos.posZ = data.ReadFloat(); transportInfo.pos.Orientation = data.ReadFloat(); transportInfo.seat = data.ReadInt8(); // VehicleSeatIndex transportInfo.time = data.ReadUInt32(); // MoveTime bool hasPrevTime = data.HasBit(); bool hasVehicleId = data.HasBit(); if (hasPrevTime) { transportInfo.prevTime = data.ReadUInt32(); // PrevMoveTime } if (hasVehicleId) { transportInfo.vehicleId = data.ReadUInt32(); // VehicleRecID } }