Core/Objects: Fixup SMSG_UPDATE_OBJECT related refactors
Port From (https://github.com/TrinityCore/TrinityCore/commit/963eb6b80c1231ebaadd29806666c9ae5b79a985)
This commit is contained in:
@@ -801,7 +801,6 @@ namespace Game.Entities
|
||||
public virtual void BuildValuesUpdateWithFlag(WorldPacket data, UpdateFieldFlag flags, Player target)
|
||||
{
|
||||
data.WriteUInt32(0);
|
||||
data.WriteUInt32(0);
|
||||
}
|
||||
|
||||
public void AddToObjectUpdateIfNeeded()
|
||||
@@ -4201,4 +4200,40 @@ namespace Game.Entities
|
||||
public ObjectGuid? PrivateObjectOwnerGuid;
|
||||
public GameObjectTypes? GameObjectType;
|
||||
}
|
||||
|
||||
public class UpdateFieldHolder
|
||||
{
|
||||
UpdateMask _changesMask = new((int)TypeId.Max);
|
||||
|
||||
public HasChangesMask ModifyValue(HasChangesMask updateData)
|
||||
{
|
||||
_changesMask.Set(updateData.Bit);
|
||||
return updateData;
|
||||
}
|
||||
|
||||
public void ClearChangesMask(HasChangesMask updateData)
|
||||
{
|
||||
_changesMask.Reset(updateData.Bit);
|
||||
updateData.ClearChangesMask();
|
||||
}
|
||||
|
||||
public void ClearChangesMask<U>(HasChangesMask updateData, ref UpdateField<U> updateField) where U : new()
|
||||
{
|
||||
_changesMask.Reset(updateData.Bit);
|
||||
|
||||
IHasChangesMask hasChangesMask = (IHasChangesMask)updateField._value;
|
||||
if (hasChangesMask != null)
|
||||
hasChangesMask.ClearChangesMask();
|
||||
}
|
||||
|
||||
public uint GetChangedObjectTypeMask()
|
||||
{
|
||||
return _changesMask.GetBlock(0);
|
||||
}
|
||||
|
||||
public bool HasChanged(TypeId index)
|
||||
{
|
||||
return _changesMask[(int)index];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user