54 lines
1.2 KiB
C#
54 lines
1.2 KiB
C#
![]() |
/******************************************************************************/
|
|||
|
/*
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|