private unsafe bool CompareData(CharacterEquipment rhs) { var structSizeEights = (2 + EquipmentSlots * sizeof(CharacterArmor) + WeaponSlots * sizeof(CharacterWeapon)) / 8; fixed(CharacterWeapon *data1 = &MainHand, data2 = &rhs.MainHand) { var ptr1 = ( ulong * )data1; var ptr2 = ( ulong * )data2; for (var end = ptr1 + structSizeEights; ptr1 != end; ++ptr1, ++ptr2) { if (*ptr1 != *ptr2) { return(false); } } } return(true); }
public bool CompareAndUpdate(CharacterEquipment rhs) => CompareAndOverwrite(rhs);
public bool Equal(CharacterEquipment rhs) => CompareData(rhs);