Skip to content

Instantly share code, notes, and snippets.

@irfanbaysal
Created December 14, 2023 11:05
Show Gist options
  • Save irfanbaysal/137701fc8e23bc8a3b214e35907136b5 to your computer and use it in GitHub Desktop.
Save irfanbaysal/137701fc8e23bc8a3b214e35907136b5 to your computer and use it in GitHub Desktop.
BitMask Tutorial Codeblock
using System;
//using Sirenix.OdinInspector;
using UnityEngine;
[Flags]
public enum SoldierType
{
None = 0,
Private = 1,
Corporal = 2,
Sergeant = 4,
Lieutenant = 8,
Major = 16,
General = 32,
All = Private | Corporal | Sergeant | Lieutenant | Major | General
}
public class BitMaskTutorial : MonoBehaviour
{
[SerializeField] private SoldierType soldierType;
//[Button]
public void PerformOrOperation()
{
soldierType = SoldierType.Major | SoldierType.General;
}
//[Button]
public void PerformAndOperation()
{
soldierType = SoldierType.Major | SoldierType.General;
bool hasAtLeastAGeneral = (soldierType & SoldierType.General) != 0;
Debug.Log(hasAtLeastAGeneral);
}
//[Button]
public void PerformXOROperation()
{
soldierType ^= SoldierType.Major;
}
//[Button]
public void PerformNotOperation()
{
GetDataFromRequestedSoldierType(SoldierType.None);
soldierType = ~ SoldierType.Major;
}
//[Button]
public void PerformRightShiftOperation()
{
soldierType = (SoldierType)(4 >> 1);
GetDataFromRequestedSoldierType(soldierType);
}
//[Button]
public void PerformLeftShiftOperation(int numberToShift)
{
soldierType = (SoldierType)(numberToShift << 1);
GetDataFromRequestedSoldierType(soldierType);
}
//[Button]
public void GetDataFromRequestedSoldierType(SoldierType requestedSoldierType)
{
var binaryString = Convert.ToString((int)requestedSoldierType, 2);
Debug.Log($" Name : {requestedSoldierType}, Number: {(int)requestedSoldierType}, Binary: {binaryString}");
}
//[Button]
public void SetTypeFromNumber(int number)
{
soldierType = (SoldierType)number;
GetDataFromRequestedSoldierType(soldierType);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment