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 async Task HandleNameQuery(CMSG_NAME_QUERY pkt) { var player = GrainFactory.GetGrain<IPlayer>(pkt.guid.ToInt64()); var valid = await player.IsValid(); var guid_packed = new PackedGUID(pkt.guid); PacketOut p = new PacketOut(RealmOp.SMSG_NAME_QUERY_RESPONSE); p.Write(guid_packed); if (!valid) { p.Write((byte)1); //unknown await SendPacket(p); return; } p.Write((byte)0); //known p.WriteCString(await player.GetName()); var realmid = await player.GetRealmID(); if (realmid != await GetRealmID()) //player is on a different realm to this session, append their realm name { var realm_manager = GrainFactory.GetGrain<IRealmManager>(0); p.WriteCString(await realm_manager.GetRealmName((int)realmid)); } else p.Write((byte)0); //null string aka same realm aka dont show anything extra p.Write(await player.GetRace()); p.Write(await player.GetGender()); p.Write(await player.GetClass()); p.Write((byte)0); //isNameDeclined await SendPacket(p); }
public void Write(PackedGUID guid) { Write(guid.mask); Write(guid.guidbytes); }
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 object Deserializer(System.Type expected, global::Orleans.Serialization.BinaryTokenStreamReader stream) { Shared.PackedGUID result = new Shared.PackedGUID(); result.guidbytes = ((byte[])(Orleans.Serialization.SerializationManager.DeserializeInner(typeof(byte[]), stream))); result.mask = ((byte)(Orleans.Serialization.SerializationManager.DeserializeInner(typeof(byte), stream))); return result; }
public static object DeepCopier(object original) { Shared.PackedGUID input = ((Shared.PackedGUID)(original)); Shared.PackedGUID result = new Shared.PackedGUID(); Orleans.Serialization.SerializationContext.Current.RecordObject(original, result); result.guidbytes = ((byte[])(Orleans.Serialization.SerializationManager.DeepCopyInner(input.guidbytes))); result.mask = input.mask; return result; }