Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            }
        }
Exemplo n.º 3
0
 public void Read(WorldPacket packet)
 {
     MapID    = packet.ReadUInt32();
     Position = packet.ReadVector3();
     Facing   = packet.ReadFloat();
 }
Exemplo n.º 4
0
 public void Read(WorldPacket data)
 {
     HorzSpeed = data.ReadFloat();
     VertSpeed = data.ReadFloat();
 }