Fixes a crash trying to convert objectguid to ihaschangesmask, not all values are structs/classes.
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user