Fixes a crash trying to convert objectguid to ihaschangesmask, not all values are structs/classes.

This commit is contained in:
hondacrx
2021-06-24 00:17:43 -04:00
parent 9d1ef84690
commit e2211da378
@@ -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();