/******************************************************************************/ /* Project - MudBun Publisher - Long Bunny Labs http://LongBunnyLabs.com Author - Ming-Lun "Allen" Chou http://AllenChou.net */ /******************************************************************************/ using System; using System.Runtime.InteropServices; using UnityEngine; namespace MudBun { [StructLayout(LayoutKind.Sequential, Pack = 0)] [Serializable] public struct Bits32 { [SerializeField] private uint m_bits; public uint RawValue { get => m_bits; set => m_bits = value; } public Bits32(uint bits = 0) { m_bits = bits; } public void SetAllBits() { m_bits = ~0u; } public void ClearAllBits() { m_bits = 0; } public void AssignBit(int index, bool value) { if (value) m_bits |= (1u << index); else m_bits &= ~(1u << index); } public void SetBit(int index) { AssignBit(index, true); } public void ClearBit(int index) { AssignBit(index, false); } public bool IsBitSet(int index) { return (m_bits & (1u << index)) != 0u; } } }