コード例 #1
0
        public void Read(PacketIn p)
        {
            GUID = p.ReadPackedGUID();

            Flags  = (MovementFlags)p.ReadUInt32();
            Flags2 = (MovementFlags2)p.ReadUInt16();
            Time   = p.ReadUInt32();

            PositionX = p.ReadSingle();
            PositionY = p.ReadSingle();
            PositionZ = p.ReadSingle();
            PositionO = p.ReadSingle();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_ONTRANSPORT))
            {
                if (MovementDataTransport == null)
                {
                    MovementDataTransport = new MovementDataTransport();
                }

                MovementDataTransport.TransportGuid = p.ReadPackedGUID();
                MovementDataTransport.TransportX    = p.ReadSingle();
                MovementDataTransport.TransportY    = p.ReadSingle();
                MovementDataTransport.TransportZ    = p.ReadSingle();
                MovementDataTransport.TransportO    = p.ReadSingle();
                MovementDataTransport.TransportTime = p.ReadUInt32();
                MovementDataTransport.TransportSeat = p.ReadByte();

                if (Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_INTERPOLATED_MOVEMENT))
                {
                    MovementDataTransport.TransportTime2 = p.ReadUInt32();
                }
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SWIMMING | MovementFlags.MOVEMENTFLAG_FLYING) ||
                Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
            {
                Pitch = p.ReadSingle();
            }

            FallTime = p.ReadUInt32();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FALLING))
            {
                FallVerticalSpeed = p.ReadSingle();
                FallSine          = p.ReadSingle();
                FallCosine        = p.ReadSingle();
                FallLateralSpeed  = p.ReadSingle();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ELEVATION))
            {
                SplineElevation = p.ReadSingle();
            }
        }
コード例 #2
0
 public static TransportInfo Read(BinaryReader reader, MovementFlags2 flags2)
 {
     var tInfo = new TransportInfo();
     tInfo.Guid = reader.ReadUInt64();
     tInfo.Position = reader.ReadCoords3();
     tInfo.Facing = reader.ReadSingle();
     tInfo.Time = reader.ReadUInt32();
     tInfo.Seat = reader.ReadByte();
     if (flags2.HasFlag(MovementFlags2.InterpolateMove))
         tInfo.Time2 = reader.ReadUInt32();
     return tInfo;
 }
コード例 #3
0
        public static TransportInfo Read(BinaryReader reader, MovementFlags2 flags2)
        {
            var tInfo = new TransportInfo();

            tInfo.Guid     = reader.ReadPackedGuid();
            tInfo.Position = reader.ReadCoords3();
            tInfo.Facing   = reader.ReadSingle();
            tInfo.Time     = reader.ReadUInt32();
            tInfo.Seat     = reader.ReadByte();
            if (flags2.HasFlag(MovementFlags2.InterpolatedPlayerMovement))
            {
                tInfo.Time2 = reader.ReadUInt32();
            }
            return(tInfo);
        }
コード例 #4
0
        public MovementInfo(InPacket packet)
        {
            Flags    = (MovementFlags)packet.ReadUInt32();
            Flags2   = (MovementFlags2)packet.ReadUInt16();
            Time     = packet.ReadUInt32();
            Position = packet.ReadVector3();
            O        = packet.ReadSingle();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_ONTRANSPORT))
            {
                TransportGuid     = packet.ReadPackedGuid();
                TransportPosition = packet.ReadVector3();
                TransportO        = packet.ReadSingle();
                TransportTime     = packet.ReadUInt32();
                TransportSeat     = packet.ReadByte();
                if (Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_INTERPOLATED_MOVEMENT))
                {
                    TransportTime2 = packet.ReadUInt32();
                }
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SWIMMING) || Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FLYING) ||
                Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
            {
                Pitch = packet.ReadSingle();
            }

            FallTime = packet.ReadUInt32();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FALLING))
            {
                JumpZSpeed   = packet.ReadSingle();
                JumpSinAngle = packet.ReadSingle();
                JumpCosAngle = packet.ReadSingle();
                JumpXYSpeed  = packet.ReadSingle();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ELEVATION))
            {
                SplineElevation = packet.ReadSingle();
            }
        }
コード例 #5
0
ファイル: MovementHandler.cs プロジェクト: uvbs/Asda2-Server
        /// <summary>
        ///
        /// </summary>
        /// <param name="packet">The packet to read the info from</param>
        /// <param name="chr">The active character in the client that send the movement packet</param>
        /// <param name="mover">The unit we want this movement info to affect</param>
        /// <param name="clientTime">Used to return the read client time</param>
        /// <returns>A boolean value used to determine broadcasting of this movement info to other clients</returns>
        public static bool ReadMovementInfo(RealmPacketIn packet, Character chr, Unit mover, out uint clientTime)
        {
            MovementFlags  movementFlags  = (MovementFlags)packet.ReadInt32();
            MovementFlags2 movementFlags2 = (MovementFlags2)packet.ReadInt16();

            clientTime = packet.ReadUInt32();
            Vector3 pt          = packet.ReadVector3();
            float   orientation = packet.ReadFloat();

            if (movementFlags.HasFlag((Enum)MovementFlags.OnTransport))
            {
                EntityId       id            = packet.ReadPackedEntityId();
                Vector3        vector3       = packet.ReadVector3();
                float          num1          = packet.ReadFloat();
                uint           num2          = packet.ReadUInt32();
                int            num3          = (int)packet.ReadByte();
                ITransportInfo transportInfo = mover.Map.GetObject(id) as ITransportInfo;
                bool           flag          = transportInfo is Vehicle;
                if (transportInfo == null)
                {
                    if (mover.Transport != null)
                    {
                        mover.Transport.RemovePassenger(mover);
                    }
                    return(false);
                }

                if (mover.TransportInfo != transportInfo)
                {
                    if (flag)
                    {
                        return(false);
                    }
                    ((Transport)transportInfo).AddPassenger(mover);
                }

                if (!flag)
                {
                    mover.TransportPosition    = vector3;
                    mover.TransportOrientation = num1;
                    mover.TransportTime        = num2;
                }
            }
            else if (mover.Transport != null)
            {
                mover.Transport.RemovePassenger(mover);
            }

            if (movementFlags.HasFlag((Enum)(MovementFlags.Swimming | MovementFlags.Flying)) ||
                movementFlags2.HasFlag((Enum)MovementFlags2.AlwaysAllowPitching))
            {
                if (movementFlags.HasFlag((Enum)MovementFlags.Flying) && !chr.CanFly)
                {
                    return(false);
                }
                float moveAngle = packet.ReadFloat();
                if (chr == mover)
                {
                    chr.MovePitch(moveAngle);
                }
            }

            int num4 = (int)packet.ReadUInt32();

            if (movementFlags.HasFlag((Enum)MovementFlags.Falling))
            {
                double num1 = (double)packet.ReadFloat();
                double num2 = (double)packet.ReadFloat();
                double num3 = (double)packet.ReadFloat();
                double num5 = (double)packet.ReadFloat();
            }

            if (packet.PacketId.RawId == 201U && chr == mover)
            {
                chr.OnFalling();
            }
            if (movementFlags.HasFlag((Enum)MovementFlags.Swimming) && chr == mover)
            {
                chr.OnSwim();
            }
            else if (chr.IsSwimming && chr == mover)
            {
                chr.OnStopSwimming();
            }
            if (movementFlags.HasFlag((Enum)MovementFlags.SplineElevation))
            {
                double num6 = (double)packet.ReadFloat();
            }

            bool flag1 = pt == mover.Position;

            if (!flag1 && mover.IsInWorld && !mover.SetPosition(pt, orientation))
            {
                return(false);
            }
            if (flag1)
            {
                mover.Orientation = orientation;
            }
            else
            {
                mover.OnMove();
            }
            mover.MovementFlags  = movementFlags;
            mover.MovementFlags2 = movementFlags2;
            if (flag1)
            {
                mover.Orientation = orientation;
            }
            else if (!mover.CanMove)
            {
                return(false);
            }
            return(true);
        }
コード例 #6
0
ファイル: AutomatedGame.cs プロジェクト: Kittnz/BotFarm
        public MovementInfo(InPacket packet)
        {
            Flags = (MovementFlags)packet.ReadUInt32();
            Flags2 = (MovementFlags2)packet.ReadUInt16();
            Time = packet.ReadUInt32();
            Position = packet.ReadVector3();
            O = packet.ReadSingle();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_ONTRANSPORT))
            {
                TransportGuid = packet.ReadPackedGuid();
                TransportPosition = packet.ReadVector3();
                TransportO = packet.ReadSingle();
                TransportTime = packet.ReadUInt32();
                TransportSeat = packet.ReadByte();
                if (Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_INTERPOLATED_MOVEMENT))
                    TransportTime2 = packet.ReadUInt32();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SWIMMING) || Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FLYING)
                || Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
                Pitch = packet.ReadSingle();

            FallTime = packet.ReadUInt32();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FALLING))
            {
                JumpZSpeed = packet.ReadSingle();
                JumpSinAngle = packet.ReadSingle();
                JumpCosAngle = packet.ReadSingle();
                JumpXYSpeed = packet.ReadSingle();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ELEVATION))
                SplineElevation = packet.ReadSingle();
        }
コード例 #7
0
ファイル: Movement.cs プロジェクト: andy012345/WoWServer
        public void Read(PacketIn p)
        {
            GUID = p.ReadPackedGUID();

            Flags = (MovementFlags)p.ReadUInt32();
            Flags2 = (MovementFlags2)p.ReadUInt16();
            Time = p.ReadUInt32();

            PositionX = p.ReadSingle();
            PositionY = p.ReadSingle();
            PositionZ = p.ReadSingle();
            PositionO = p.ReadSingle();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_ONTRANSPORT))
            {
                if (MovementDataTransport == null)
                    MovementDataTransport = new MovementDataTransport();

                MovementDataTransport.TransportGuid = p.ReadPackedGUID();
                MovementDataTransport.TransportX = p.ReadSingle();
                MovementDataTransport.TransportY = p.ReadSingle();
                MovementDataTransport.TransportZ = p.ReadSingle();
                MovementDataTransport.TransportO = p.ReadSingle();
                MovementDataTransport.TransportTime = p.ReadUInt32();
                MovementDataTransport.TransportSeat = p.ReadByte();

                if (Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_INTERPOLATED_MOVEMENT))
                    MovementDataTransport.TransportTime2 = p.ReadUInt32();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SWIMMING | MovementFlags.MOVEMENTFLAG_FLYING) ||
                Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
                Pitch = p.ReadSingle();

            FallTime = p.ReadUInt32();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FALLING))
            {
                FallVerticalSpeed = p.ReadSingle();
                FallSine = p.ReadSingle();
                FallCosine = p.ReadSingle();
                FallLateralSpeed = p.ReadSingle();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ELEVATION))
                SplineElevation = p.ReadSingle();
        }
コード例 #8
0
ファイル: MovementMgr.cs プロジェクト: nexustheru/Unity3DWoW
 public bool IsMoveFlagSet2(MovementFlags2 flag2)
 {
     return(((MoveFlags2 & flag2) >= (MovementFlags2)1) ? true : false);
 }
コード例 #9
0
ファイル: MovementMgr.cs プロジェクト: nexustheru/Unity3DWoW
 public void UnSetMoveFlag2(MovementFlags2 flag2)
 {
     MoveFlags2 &= ~flag2;
 }
コード例 #10
0
ファイル: MovementMgr.cs プロジェクト: nexustheru/Unity3DWoW
 public void SetMoveFlag2(MovementFlags2 flag2)
 {
     MoveFlags2 |= flag2;
 }
コード例 #11
0
ファイル: MovementMgr.cs プロジェクト: nexustheru/Unity3DWoW
 public void Clear2()
 {
     MoveFlags2 = new MovementFlags2();
 }
コード例 #12
0
ファイル: Extensions.cs プロジェクト: pallmall/WCell
		public static bool Has(this MovementFlags2 flags, MovementFlags2 toCheck)
		{
			return (flags & toCheck) != 0;
		}