NonAllocFlagGenerator 1.3.1
See the version list below for details.
dotnet add package NonAllocFlagGenerator --version 1.3.1
NuGet\Install-Package NonAllocFlagGenerator -Version 1.3.1
<PackageReference Include="NonAllocFlagGenerator" Version="1.3.1"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="NonAllocFlagGenerator" Version="1.3.1" />
<PackageReference Include="NonAllocFlagGenerator"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add NonAllocFlagGenerator --version 1.3.1
#r "nuget: NonAllocFlagGenerator, 1.3.1"
#:package NonAllocFlagGenerator@1.3.1
#addin nuget:?package=NonAllocFlagGenerator&version=1.3.1
#tool nuget:?package=NonAllocFlagGenerator&version=1.3.1
NonAllocFlagGenerator
An efficient solution for flag checking in C# and Unity
Benefits of NonAllocFlagGenerator
- Solves the boxing issue of the default
HasFlagmethod - Improves performance by minimizing garbage generation
- Easy to use
Installation
- Open the Package Manager in Unity (Window > Package Manager)
- Add the NonAllocFlagGenerator package using the following Git URL:
https://github.com/KBluePurple/NonAllocFlagGenerator.git?path=/Plugins#master
How It Works
NonAllocFlagGenerator uses C# Source Generators to automatically generate efficient extension methods for enums marked with the [Flags] attribute. Here's a detailed breakdown of the process:
Source Generation: At compile time, the generator scans your codebase for any enum types decorated with the [Flags] attribute.
Extension Method Creation: For each flagged enum it finds, the generator automatically creates specialized extension methods that perform flag checking operations without allocating memory on the heap.
Compile-Time Processing: All the code generation happens during compilation, which means:
- There's no runtime overhead for generating the methods
- The generated code is type-safe and checked by the compiler
- You get IDE support like IntelliSense for the generated methods
Zero Allocation Design: The generated extension methods use bitwise operations instead of boxing/unboxing, ensuring that no garbage is generated during flag checks.
Usage Example
[Flags]
public enum PlayerState
{
None = 0,
Idle = 1 << 0,
Walking = 1 << 1,
Running = 1 << 2,
Jumping = 1 << 3,
All = ~0
}
var currentState = PlayerState.Idle | PlayerState.Walking;
// Efficient flag checking using NonAllocFlagGenerator
if (currentState.HasFlagNonAlloc(PlayerState.Idle))
{
// Handle Idle state
}
if (currentState.HasFlagNonAlloc(PlayerState.Walking))
{
// Handle Walking state
}
With NonAllocFlagGenerator, you can easily check flags while writing readable code without compromising performance. Apply NonAllocFlagGenerator to your project today and experience efficient flag checking!
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.