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(); } }
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; }
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); }
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(); } }
/// <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); }
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(); }
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(); }
public bool IsMoveFlagSet2(MovementFlags2 flag2) { return(((MoveFlags2 & flag2) >= (MovementFlags2)1) ? true : false); }
public void UnSetMoveFlag2(MovementFlags2 flag2) { MoveFlags2 &= ~flag2; }
public void SetMoveFlag2(MovementFlags2 flag2) { MoveFlags2 |= flag2; }
public void Clear2() { MoveFlags2 = new MovementFlags2(); }
public static bool Has(this MovementFlags2 flags, MovementFlags2 toCheck) { return (flags & toCheck) != 0; }