Documentos · Ejemplos · Discordia
Flecs.net es un envoltorio de alto nivel para Flecs. Los enlaces de bajo nivel a la API C se incluyen y se generan con BindGen.net. Las bibliotecas nativas se compilan con los conjuntos de herramientas en zig de Vezel-Dev.
// Copy, paste, and run in a .NET project!
using Flecs . NET . Core ;
using World ecs = World . Create ( ) ;
Entity entity = ecs . Entity ( )
. Set ( new Position ( 10 , 20 ) )
. Set ( new Velocity ( 1 , 2 ) ) ;
ecs . Each ( ( 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 ) ; Flecs.net - puerto C# de alto nivel del envoltorio C ++
Flecs.net.nebindings - enlaces de bajo nivel de la API C
Flecs.net.native - bibliotecas nativas precompiladas
¡Puede descargar el paquete Nuget y usar flecs.net de inmediato!
Flecs.net (envoltura + enlaces + bibliotecas nativas): versión | Depurar
dotnet add PROJECT package Flecs.NET.Release --version *-*Flecs.net.bindings (enlaces + bibliotecas nativas): versión | Depurar
dotnet add PROJECT package Flecs.NET.Bindings.Release --version *-*Flecs.net.native (bibliotecas nativas): versión | Depurar
dotnet add PROJECT package Flecs.NET.Native.Release --version *-*Flecs.net proporciona paquetes de lanzamiento y depuración para NUGET. Se recomienda que los paquetes de depuración se usen cuando se desarrollen, ya que incluyen cheques para un uso incorrecto de la API. Para incluirlos en su proyecto en función de su configuración de compilación, use las referencias del paquete a continuación. Las últimas versiones estables o previas al prevenimiento se agregarán a su proyecto.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-* " Condition = " '$(Configuration)' == 'Debug' " />
< PackageReference Include = " Flecs.NET.Release " Version = " *-* " Condition = " '$(Configuration)' == 'Release' " />
</ ItemGroup >
</ Project > Flecs.net proporciona bibliotecas estáticas precompiladas que se pueden usar cuando PublishAOT está habilitado. Para habilitar la vinculación estática, agregue <FlecsStaticLink>true</FlecsStaticLink> a un grupo de propiedades. Para evitar que las bibliotecas compartidas se copien al directorio de salida, agregue ExcludeAssets="native" a la referencia de su paquete.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< PublishAot >true</ PublishAot >
< FlecsStaticLink >true</ FlecsStaticLink >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-* " ExcludeAssets = " native " />
</ ItemGroup >
</ Project >Para paquetes más actualizados, las compilaciones de desarrollo están disponibles en el registro de paquetes GitHub. Los paquetes se cargan automáticamente en cada compromiso con la rama principal.
Para acceder a las compilaciones de desarrollo de su proyecto, primero debe crear un token de acceso personal GitHub con el permiso read:packages . (Ver creación de un token de acceso personal (clásico))
Una vez que haya creado un token de acceso personal, ejecute el siguiente comando para agregar la alimentación de GitHub como una nueva fuente de paquete. Reemplace YOUR_GITHUB_USERNAME con su nombre de usuario GitHub y YOUR_GITHUB_TOKEN con su token de acceso personal.
dotnet nuget add source --name " flecs.net " --username " YOUR_GITHUB_USERNAME " --password " YOUR_GITHUB_TOKEN " --store-password-in-clear-text " https://nuget.pkg.github.com/BeanCheeseBurrito/index.json "¡Ahora puede hacer referencia a cualquier paquete de GitHub Feed!
dotnet add PROJECT package Flecs.NET.Release --version *-build.* < Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< PackageReference Include = " Flecs.NET.Debug " Version = " *-build.* " />
</ ItemGroup >
</ Project > De manera predeterminada, la alimentación de GitHub se agregará a su archivo global nuget.config y puede ser referenciado por cualquier proyecto en su máquina. Si desea agregar el feed a un solo proyecto/solución, cree un archivo nuget.config en la raíz de su directorio de proyecto/solución y ejecute el siguiente comando con la opción --configfile .
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.pkg.github.com/BeanCheeseBurrito/index.json "Para eliminar la alimentación de GitHub de sus fuentes de paquete Nuget, ejecute el siguiente comando.
dotnet nuget remove source " flecs.net " GitHub Acciones Los flujos de trabajo se pueden autenticar utilizando el secreto GITHUB_TOKEN .
- 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.pkg.github.com/BeanCheeseBurrito/index.json" Advertencia
Los paquetes de alimentación de desarrollo se pueden eliminar sin previo aviso para liberar espacio.
Para ejecutar cualquiera de los programas de ejemplo, use dotnet run y establezca la propiedad "Ejemplo" en la ruta del ejemplo en relación con el proyecto Flecs.NET.Examples . Cada nivel de la ruta debe estar separado por un bajo.
Ejemplo :
dotnet run --project src/Flecs.NET.Examples --property:Example=Entities_Basics Clonar el repositorio y sus submódulos.
git clone --recursive https://github.com/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NETEjecute el siguiente comando en la solución para restaurar todas las dependencias del proyecto.
dotnet restoreCompile el envoltorio y las bibliotecas nativas. El compilador ZIG se descargará y almacenará automáticamente en su carpeta local de paquete Nuget. Las bibliotecas nativas serán compiladas para Linux, MacOS y Windows.
dotnet buildReferencia al proyecto e importe las bibliotecas nativas. Ahora debería poder usar flecs.net desde su proyecto.
< Project Sdk = " Microsoft.NET.Sdk " >
< PropertyGroup >
< OutputType >Exe</ OutputType >
< TargetFramework >net8.0</ TargetFramework >
</ PropertyGroup >
< ItemGroup >
< ProjectReference Include = " PATH/Flecs.NET/src/Flecs.NET/Flecs.NET.csproj " />
</ ItemGroup >
</ Project >Los enlaces de bajo nivel a la API FLECS C se generan pregenerados e incluidos en el proyecto Flecs.net.Bindings de forma predeterminada. Si es necesario, puede ejecutar el siguiente comando para regenerar el archivo de enlace.
dotnet run --project src/Flecs.NET.BindgenFlecs.net se basa en la generación de código para evitar la duplicación de código manual. Si se realizan cambios en el proyecto flecs.net.codengen, puede ejecutar el siguiente comando para volver a ejecutar los generadores de código. Los archivos generados se emitirán a esta carpeta.
dotnet run --project src/Flecs.NET.Codegen Siéntase libre de abrir un problema o hacer una solicitud. ¡Todas las contribuciones son bienvenidas!
Formas de contribuir: