diff --git a/Source/Game/Entities/Object/Update/UpdateField.cs b/Source/Game/Entities/Object/Update/UpdateField.cs index 38e9f169b..b890d29d4 100644 --- a/Source/Game/Entities/Object/Update/UpdateField.cs +++ b/Source/Game/Entities/Object/Update/UpdateField.cs @@ -199,13 +199,7 @@ namespace Game.Entities public void AddValue(T value) { MarkChanged(_values.Count); - - if (value is IHasChangesMask) - { - IHasChangesMask hasChanges = (IHasChangesMask)value; - if (hasChanges != null) - hasChanges.GetUpdateMask().SetAll(); - } + MarkAllUpdateMaskFields(_values[i]); _values.Add(value); } @@ -217,9 +211,7 @@ namespace Game.Entities { MarkChanged(i); // also mark all fields of value as changed - IHasChangesMask hasChangesMask = (IHasChangesMask)_values[i]; - if (hasChangesMask != null) - hasChangesMask.GetUpdateMask().SetAll(); + MarkAllUpdateMaskFields(_values[i]); } } @@ -231,9 +223,7 @@ namespace Game.Entities { MarkChanged(i); // also mark all fields of value as changed - IHasChangesMask hasChanges = (IHasChangesMask)_values[i]; - if (hasChanges != null) - hasChanges.GetUpdateMask().SetAll(); + MarkAllUpdateMaskFields(_values[i]); } if ((_values.Count % 32) != 0) _updateMask[UpdateMask.GetBlockIndex(_values.Count)] &= (uint)~UpdateMask.GetBlockFlag(_values.Count); @@ -241,6 +231,12 @@ namespace Game.Entities _updateMask.RemoveAt(_updateMask.Count - 1); } + void MarkAllUpdateMaskFields(T value) + { + if (value is IHasChangesMask) + ((IHasChangesMask)value).GetUpdateMask().SetAll(); + } + public void Clear() { _values.Clear();