Flecs.NET

2025-12-07 0 255

Flecs.NET

Docs · Examples · Discord

Flecs.NET is a highlevel wrapper for flecs. Low-level bindings to the C api are included and generated with Bindgen.NET. Native libraries are cross-compiled with Vezel-Dev\’s Zig Toolsets.

Show me the code!

// Copy, paste, and run in a .NET project!

using Flecs.NET.Core;

using World world = World.Create();

Entity entity = world.Entity()
    .Set(new Position(10, 20))
    .Set(new Velocity(1, 2));

world.Each(static (ref Position p, ref Velocity v) =>
{
    p.X += v.X;
    p.Y += v.Y;
});

public record struct Position(float X, float Y);
public record struct Velocity(float X, float Y);

Overview

Flecs.NET – High-level C# port of the C++ wrapper

  • Modern .NET 9
  • Near feature parity with the C++ API
  • Struct-based API with minimal GC interaction
  • Supports both unmanaged and managed types as components
  • Implicitly registers components on-the-fly

Flecs.NET.Bindings – Low-level bindings of the C API

  • Build your own wrapper to suite your personal needs
  • Auto-generated bindings for the entire flecs API
  • Fully blittable interface with no runtime marshalling

Flecs.NET.Native – Precompiled native libraries

  • Provides both shared and static libraries for Windows, MacOS, Linux, iOS, and WASM
  • Packaged with Zig for dependency free cross-compilation everywhere

NuGet

You can download the nuget package and use Flecs.NET right away!

Flecs.NET (Wrapper + Bindings + Native Libraries): Release | Debug

dotnet add PROJECT package Flecs.NET.Release --version *-*

Flecs.NET.Bindings (Bindings + Native Libraries): Release | Debug

dotnet add PROJECT package Flecs.NET.Bindings.Release --version *-*

Flecs.NET.Native (Native Libraries): Release | Debug

dotnet add PROJECT package Flecs.NET.Native.Release --version *-*

Flecs.NET provides both release and debug packages for nuget. It is recommended that the debug packages be used when developing as they include checks for incorrect usage of the API.
To include both of them in your project based on your build configuration, use the package references below. The latest stable or prerelease versions will be added to your project.

<Project Sdk=\"Microsoft.NET.Sdk\">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net9.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include=\"Flecs.NET.Debug\" Version=\"*-*\" Condition=\"\'$(Configuration)\' == \'Debug\'\" />
        <PackageReference Include=\"Flecs.NET.Release\" Version=\"*-*\" Condition=\"\'$(Configuration)\' == \'Release\'\" />
    </ItemGroup>
</Project>

Static Linking

Flecs.NET provides precompiled static libraries that can be used when PublishAOT is enabled. To enable static linking, add <FlecsStaticLink>true</FlecsStaticLink> to a property group. To prevent shared libraries from being copied to the output directory, add ExcludeAssets=\"native\" to your package reference.

<Project Sdk=\"Microsoft.NET.Sdk\">
    <PropertyGroup>
        <PublishAot>true</PublishAot>
        <FlecsStaticLink>true</FlecsStaticLink>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include=\"Flecs.NET.Debug\" Version=\"*-*\" ExcludeAssets=\"native\"/>
    </ItemGroup>
</Project>

GitHub Package Registry

For more up-to-date packages, development builds are available on the GitHub package registry. Packages are automatically uploaded on every commit to the main branch.

To access development builds from your project, you first need to create a GitHub personal access token with the read:packages permission. (See Creating a personal access token (classic))

Once you have created a personal access token, run the following command to add the GitHub feed as a new package source. Replace YOUR_GITHUB_USERNAME with your GitHub username and YOUR_GITHUB_TOKEN with your personal access token.

dotnet nuget add source --name \"flecs.net\" --username \"YOUR_GITHUB_USERNAME\" --password \"YOUR_GITHUB_TOKEN\" --store-password-in-clear-text \"https://nuget.p*k*g.g*ithub.com/BeanCheeseBurrito/index.json\"

You can now reference any package from the GitHub feed!

dotnet add PROJECT package Flecs.NET.Release --version *-build.*
<Project Sdk=\"Microsoft.NET.Sdk\">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net9.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include=\"Flecs.NET.Debug\" Version=\"*-build.*\"/>
    </ItemGroup>
</Project>

By default, the GitHub feed will be added to your global nuget.config file and can be referenced by any project on your machine. If wish to add the feed to a single project/solution, create a nuget.config file at the root of your project/solution directory and run the following command with the --configfile option.

dotnet nuget add source --configfile \"./nuget.config\" --name \"flecs.net\" --username \"YOUR_GITHUB_USERNAME\" --password \"YOUR_GITHUB_TOKEN\" --store-password-in-clear-text \"https://nuget.p*k*g.g*ithub.com/BeanCheeseBurrito/index.json\"

To remove the GitHub feed from your NuGet package sources, run the following command.

dotnet nuget remove source \"flecs.net\"

GitHub Actions workflows can be authenticated using the GITHUB_TOKEN secret.

- name: Add GitHub source
  run: dotnet nuget add source --name \"flecs.net\" --username \"USERNAME\" --password \"${{ secrets.GITHUB_TOKEN }}\" --store-password-in-clear-text \"https://nuget.p*k*g.g*ithub.com/BeanCheeseBurrito/index.json\"

Warning

Development feed packages may be deleted without warning to free up space.

Running examples

To run any of the example programs, use dotnet runand set the \”Example\” property to the example\’s path relative to the Flecs.NET.Examples project. Each level of the path must be separated by an underscore.

Example:

dotnet run --project src/Flecs.NET.Examples --property:Example=Entities_Basics

Building from source

Clone the repo

Clone the repo and it\’s submodules.

git clone --recursive https://githu*b.c*o*m/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NET

Restore dependencies

Run the following command on the solution to restore all project dependencies.

dotnet restore

Build Flecs.NET

Compile the wrapper and native libraries. The zig compiler will automatically be downloaded and cached in your local nuget package folder. Native libraries will be cross-compiled for linux, macos, and windows.

dotnet build

Reference the project

Reference the project and import the native libraries. You should now be able to use Flecs.NET from your project.

<Project Sdk=\"Microsoft.NET.Sdk\">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net9.0</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <ProjectReference Include=\"PATH/Flecs.NET/src/Flecs.NET/Flecs.NET.csproj\" />
    </ItemGroup>
</Project>

Running the bindings generator

Low-level bindings to the flecs C API are pre-generated and included in the Flecs.NET.Bindings project by default. If needed, you can run the following command to regenerate the bindings file.

dotnet run --project src/Flecs.NET.Bindgen

Running the code generator

Flecs.NET relies on code generation to avoid manual code duplication. If any changes are made to the Flecs.NET.Codegen project, you can run the following command to rerun the code generators. The generated files will be output to this folder.

dotnet run --project src/Flecs.NET.Codegen

Contributing

Feel free to open an issue or pull request. All contributions are welcome!

Ways to contribute:

  • Bug Fixes/Reports
  • Feature Requests
  • Documentation
  • Examples/Snippets
  • Demos
  • Typo Corrections

下载源码

通过命令行克隆项目:

git clone https://github.com/BeanCheeseBurrito/Flecs.NET.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 Flecs.NET https://www.zuozi.net/31390.html

EcommerceApp
下一篇: EcommerceApp
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务