From e2211da3786ef35abed0542ece681c696089e73b Mon Sep 17 00:00:00 2001 From: hondacrx Date: Thu, 24 Jun 2021 00:17:43 -0400 Subject: [PATCH] Fixes a crash trying to convert objectguid to ihaschangesmask, not all values are structs/classes. --- .../Entities/Object/Update/UpdateField.cs | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) 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();