Пример #1
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            int delta = reader.ReadInt32();

            networkValue = fixRange(networkValue + delta);
            setInterpolationTarget(fixRange(targetValue + delta));
        }
Пример #2
0
        protected override T readEventArg(BinaryReader reader, NetVersion version)
        {
            T arg = new T();

            arg.Read(reader);
            return(arg);
        }
Пример #3
0
        protected override T readEventArg(BinaryReader reader, NetVersion version)
        {
            TField val = new TField();

            val.ReadFull(reader, version);
            return(val.Value);
        }
Пример #4
0
 private void removed(TKey key, TField field, NetVersion reassign)
 {
     outgoingChanges.Add(new OutgoingChange(removal: true, key, field, reassign));
     clearFieldParent(field);
     MarkDirty();
     removedEvent(key, field);
 }
Пример #5
0
        protected virtual TField ReadFieldFull(BinaryReader reader, NetVersion version)
        {
            TField val = new TField();

            val.NetFields.ReadFull(reader, version);
            return(val);
        }
Пример #6
0
 public override void ReadFull(BinaryReader reader, NetVersion version)
 {
     foreach (INetSerializable field in fields)
     {
         field.ReadFull(reader, version);
     }
 }
Пример #7
0
 public OutgoingChange(bool removal, TKey key, TField field, NetVersion reassigned)
 {
     Removal    = removal;
     Key        = key;
     Field      = field;
     Reassigned = reassigned;
 }
Пример #8
0
        private void readRemoval(BinaryReader reader, NetVersion version)
        {
            TKey       key      = ReadKey(reader);
            NetVersion reassign = default(NetVersion);

            reassign.Read(reader);
            queueIncomingChange(removal: true, key, null, reassign);
        }
Пример #9
0
        public override void ReadFull(BinaryReader reader, NetVersion version)
        {
            int fullValue = reader.ReadInt32();

            cleanSet(fullValue);
            networkValue = fullValue;
            ChangeVersion.Merge(version);
        }
Пример #10
0
 public IncomingChange(uint tick, bool removal, TKey key, TField field, NetVersion reassigned)
 {
     Tick       = tick;
     Removal    = removal;
     Key        = key;
     Field      = field;
     Reassigned = reassigned;
 }
Пример #11
0
        public void Read(BinaryReader reader)
        {
            NetVersion remoteVersion = default(NetVersion);

            remoteVersion.Read(reader);
            base.Read(reader, remoteVersion);
            Clock.netVersion.Merge(remoteVersion);
        }
Пример #12
0
 private T readBaseValue(BinaryReader reader, NetVersion version)
 {
     if (Serializer != null)
     {
         return(deserialize(reader));
     }
     return(ReadType(reader));
 }
Пример #13
0
        private void readMultiple(ReadFunc readFunc, BinaryReader reader, NetVersion version)
        {
            uint count = reader.Read7BitEncoded();

            for (uint i = 0u; i < count; i++)
            {
                readFunc(reader, version);
            }
        }
Пример #14
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            T newValue = (T)Enum.ToObject(typeof(T), reader.ReadInt16());

            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(newValue);
            }
        }
Пример #15
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            Guid newValue = reader.ReadGuid();

            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(newValue);
            }
        }
Пример #16
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            int newX = reader.ReadInt32();
            int newY = reader.ReadInt32();

            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(new Point(newX, newY));
            }
        }
Пример #17
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            Color newValue = default(Color);

            newValue.PackedValue = reader.ReadUInt32();
            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(newValue);
            }
        }
Пример #18
0
 private void readDictChange(BinaryReader reader, NetVersion version)
 {
     if (reader.ReadByte() != 0)
     {
         readRemoval(reader, version);
     }
     else
     {
         readAddition(reader, version);
     }
 }
Пример #19
0
        private void readAddition(BinaryReader reader, NetVersion version)
        {
            TKey       key      = ReadKey(reader);
            NetVersion reassign = default(NetVersion);

            reassign.Read(reader);
            TField field = ReadFieldFull(reader, version);

            setFieldParent(field);
            queueIncomingChange(removal: false, key, field, reassign);
        }
Пример #20
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            float newX = reader.ReadSingle();
            float newY = reader.ReadSingle();

            if (version.IsPriorityOver(ChangeVersion))
            {
                isFixingExtrapolation = isExtrapolating;
                setInterpolationTarget(new Vector2(newX, newY));
                isExtrapolating = false;
            }
        }
Пример #21
0
        public override void ReadFull(BinaryReader reader, NetVersion version)
        {
            reassigned.Read(reader);
            T remoteValue = readBaseValue(reader, version);

            if (remoteValue != null)
            {
                ReadValueFull(remoteValue, reader, version);
            }
            cleanSet(remoteValue);
            ChangeVersion.Merge(version);
        }
Пример #22
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            int newX      = reader.ReadInt32();
            int newY      = reader.ReadInt32();
            int newWidth  = reader.ReadInt32();
            int newHeight = reader.ReadInt32();

            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(new Rectangle(newX, newY, newWidth, newHeight));
            }
        }
Пример #23
0
        public override void Read(BinaryReader reader, NetVersion version)
        {
            BitArray dirtyBits = reader.ReadBitArray();

            for (int i = 0; i < elements.Count; i++)
            {
                if (dirtyBits[i])
                {
                    elements[i].Read(reader, version);
                }
            }
        }
Пример #24
0
 public bool Remove(TKey key)
 {
     if (dict.ContainsKey(key))
     {
         TField     field    = dict[key];
         NetVersion reassign = dictReassigns[key];
         dict.Remove(key);
         dictReassigns.Remove(key);
         removed(key, field, reassign);
         return(true);
     }
     return(false);
 }
Пример #25
0
        private void queueIncomingChange(bool removal, TKey key, TField field, NetVersion fieldReassign)
        {
            if (!removal)
            {
                KeyValuePair <NetVersion, TField>?conflict = findConflict(key);
                if (conflict.HasValue && !resolveConflict(key, conflict.Value.Value, conflict.Value.Key, field, fieldReassign))
                {
                    return;
                }
            }
            uint timestamp = (uint)((int)GetLocalTick() + ((InterpolationWait && base.Root != null) ? base.Root.Clock.InterpolationTicks : 0));

            incomingChanges.Add(new IncomingChange(timestamp, removal, key, field, fieldReassign));
            base.NeedsTick = true;
        }
Пример #26
0
        public override void Read(BinaryReader reader, NetVersion version)
        {
            BitArray dirtyBits = reader.ReadBitArray();

            if (fields.Count != dirtyBits.Length)
            {
                throw new InvalidOperationException();
            }
            for (int i = 0; i < fields.Count; i++)
            {
                if (dirtyBits[i])
                {
                    fields[i].Read(reader, version);
                }
            }
        }
Пример #27
0
        public override void Read(BinaryReader reader, NetVersion version)
        {
            uint count     = reader.Read7BitEncoded();
            uint timestamp = GetLocalTick();

            if (InterpolationWait)
            {
                timestamp = (uint)((int)timestamp + base.Root.Clock.InterpolationTicks);
            }
            for (uint i = 0u; i < count; i++)
            {
                uint delay = reader.ReadUInt32();
                incomingEvents.Add(new EventRecording(readEventArg(reader, version), timestamp + delay));
            }
            ChangeVersion.Merge(version);
        }
Пример #28
0
        public override void ReadFull(BinaryReader reader, NetVersion version)
        {
            int size = reader.ReadInt32();

            elements.Clear();
            for (int i = 0; i < size; i++)
            {
                TField element = createField(elements.Count);
                element.ReadFull(reader, version);
                if (base.Parent != null)
                {
                    element.Parent = this;
                }
                elements.Add(element);
            }
        }
Пример #29
0
 protected override void ReadDelta(BinaryReader reader, NetVersion version)
 {
     if (reader.ReadByte() == 1)
     {
         reader.ReadSkippable(delegate
         {
             NetVersion other = default(NetVersion);
             other.Read(reader);
             T val = readBaseValue(reader, version);
             if (val != null)
             {
                 ReadValueFull(val, reader, version);
             }
             if (other.IsIndependent(reassigned))
             {
                 if (!other.IsPriorityOver(reassigned))
                 {
                     if (this.OnConflictResolve != null)
                     {
                         this.OnConflictResolve(val, targetValue);
                     }
                     return;
                 }
                 if (this.OnConflictResolve != null)
                 {
                     this.OnConflictResolve(targetValue, val);
                 }
             }
             else if (!other.IsPriorityOver(reassigned))
             {
                 return;
             }
             reassigned.Set(other);
             setInterpolationTarget(val);
         });
     }
     else
     {
         reader.ReadSkippable(delegate
         {
             if (version.IsPrecededBy(reassigned) && targetValue != null)
             {
                 ReadValueDelta(reader, version);
             }
         });
     }
 }
Пример #30
0
        protected override void ReadDelta(BinaryReader reader, NetVersion version)
        {
            string newValue = null;

            if (reader.ReadBoolean())
            {
                newValue = reader.ReadString();
                if (this.FilterStringEvent != null)
                {
                    newValue = this.FilterStringEvent(newValue);
                }
            }
            if (version.IsPriorityOver(ChangeVersion))
            {
                setInterpolationTarget(newValue);
            }
        }