Ejemplo n.º 1
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     base.Deserialize(reader, mode, framesAgo);
     if ((mode & SerializationModeFlags.VaryingDataFromServer) != 0)
     {
         var maybeHoverAroundPos = reader.ReadHalfVector2();
         if (float.IsNaN(maybeHoverAroundPos.X))
             _hoverAroundPos = null;
         else
             _hoverAroundPos = maybeHoverAroundPos;
     }
 }
Ejemplo n.º 2
0
 public override void Deserialize(NetworkBinaryReader reader, SerializationModeFlags mode, int framesAgo)
 {
     // Note: Gob.{Pos,Rotation,Move,RotationSpeed} are computed from Host
     // and don't need to be serialized except at birth.
     var baseSerializationMode = mode.HasFlag(SerializationModeFlags.ConstantDataFromServer)
         ? mode
         : mode & ~SerializationModeFlags.VaryingDataFromServer;
     base.Deserialize(reader, baseSerializationMode, framesAgo);
     if (mode.HasFlag(SerializationModeFlags.ConstantDataFromServer))
     {
         int hostID = reader.ReadInt16();
         _hostProxy = new LazyProxy<int, Gob>(FindGob);
         _hostProxy.SetData(hostID);
         HostBoneIndex = reader.ReadByte();
     }
     if (mode.HasFlag(SerializationModeFlags.VaryingDataFromServer))
     {
         int wallPunchCount = reader.ReadByte();
         var punchedPoses = new List<Vector2>(wallPunchCount);
         for (int i = 0; i < wallPunchCount; i++) punchedPoses.Add(reader.ReadHalfVector2());
         foreach (var pos in punchedPoses) GobHelper.CreateGobs(_wallPunchEffects, Arena, pos);
         PlayWallHitSound(punchedPoses);
     }
 }