public static MovementInfo ReadMovementInfo(WorldPacket data) { var movementInfo = new MovementInfo(); movementInfo.Guid = data.ReadPackedGuid(); movementInfo.Time = data.ReadUInt32(); float x = data.ReadFloat(); float y = data.ReadFloat(); float z = data.ReadFloat(); float o = data.ReadFloat(); movementInfo.Pos.Relocate(x, y, z, o); movementInfo.Pitch = data.ReadFloat(); movementInfo.SplineElevation = data.ReadFloat(); uint removeMovementForcesCount = data.ReadUInt32(); uint moveIndex = data.ReadUInt32(); for (uint i = 0; i < removeMovementForcesCount; ++i) { data.ReadPackedGuid(); } // ResetBitReader movementInfo.SetMovementFlags((MovementFlag)data.ReadBits <uint>(30)); movementInfo.SetMovementFlags2((MovementFlag2)data.ReadBits <uint>(18)); bool hasTransport = data.HasBit(); bool hasFall = data.HasBit(); bool hasSpline = data.HasBit(); // todo 6.x read this infos data.ReadBit(); // HeightChangeFailed data.ReadBit(); // RemoteTimeValid if (hasTransport) { ReadTransportInfo(data, ref movementInfo.transport); } if (hasFall) { movementInfo.jump.fallTime = data.ReadUInt32(); movementInfo.jump.zspeed = data.ReadFloat(); // ResetBitReader bool hasFallDirection = data.HasBit(); if (hasFallDirection) { movementInfo.jump.sinAngle = data.ReadFloat(); movementInfo.jump.cosAngle = data.ReadFloat(); movementInfo.jump.xyspeed = data.ReadFloat(); } } return(movementInfo); }
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 } }
public void Read(WorldPacket packet) { MapID = packet.ReadUInt32(); Position = packet.ReadVector3(); Facing = packet.ReadFloat(); }
public void Read(WorldPacket data) { HorzSpeed = data.ReadFloat(); VertSpeed = data.ReadFloat(); }