Docos · Exemplos · Discord
FleCs.net é um invólucro de alto nível para FleCs. As ligações de baixo nível à API C são incluídas e geradas com bindgen.net. As bibliotecas nativas são compiladas cruzadas com os conjuntos de ferramentas ZIG da 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 - Porta C# de alto nível do invólucro C ++
FLECS.NET.Bindings - ligações de baixo nível da API C
FLECS.NET.native - Bibliotecas nativas pré -compiladas
Você pode baixar o pacote Nuget e usar o FLECS.NET imediatamente!
FLECS.NET (Wrapper + Bindings + Bibliotecas Nativas): Release | Depurar
dotnet add PROJECT package Flecs.NET.Release --version *-*FLECS.NET.Bindings (Bindings + Bibliotecas Nativas): Release | Depurar
dotnet add PROJECT package Flecs.NET.Bindings.Release --version *-*FLECS.NET.native (Bibliotecas Nativas): Release | Depurar
dotnet add PROJECT package Flecs.NET.Native.Release --version *-*O FLECS.NET fornece pacotes de liberação e depuração para o NUGET. Recomenda -se que os pacotes de depuração sejam usados ao desenvolver, pois incluem cheques para uso incorreto da API. Para incluir os dois em seu projeto com base na sua configuração de compilação, use as referências do pacote abaixo. As mais recentes versões estáveis ou de pré -lançamento serão adicionadas ao seu projeto.
< 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 > O FLECS.NET fornece bibliotecas estáticas pré -compiladas que podem ser usadas quando PublishAOT estiver ativado. Para ativar a ligação estática, adicione <FlecsStaticLink>true</FlecsStaticLink> a um grupo de propriedades. Para impedir que as bibliotecas compartilhadas sejam copiadas para o diretório de saída, adicione ExcludeAssets="native" à referência do seu pacote.
< 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 pacotes mais atualizados, as compilações de desenvolvimento estão disponíveis no registro de pacotes do GitHub. Os pacotes são carregados automaticamente em todos os compromissos com a filial principal.
Para acessar o desenvolvimento construídos em seu projeto, você primeiro precisa criar um token de acesso pessoal do Github com a permissão read:packages . (Consulte Criando um token de acesso pessoal (clássico))
Depois de criar um token de acesso pessoal, execute o seguinte comando para adicionar o feed do GitHub como uma nova fonte de embalagem. Substitua seu YOUR_GITHUB_USERNAME de usuário do Github e YOUR_GITHUB_TOKEN com seu token de acesso pessoal.
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 "Agora você pode fazer referência a qualquer pacote do feed do GitHub!
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 > Por padrão, o feed do Github será adicionado ao seu arquivo global nuget.config e pode ser referenciado por qualquer projeto da sua máquina. Se desejar adicionar o feed a um único projeto/solução, crie um arquivo nuget.config na raiz do seu diretório de projeto/solução e execute o seguinte comando com a opção --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 remover o feed do GitHub das fontes do pacote NUGET, execute o seguinte comando.
dotnet nuget remove source " flecs.net " Os fluxos de trabalho das ações do GitHub podem ser autenticados usando o segredo 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" Aviso
Pacotes de alimentação de desenvolvimento podem ser excluídos sem aviso para liberar espaço.
Para executar qualquer um dos programas de exemplo, use dotnet run e defina a propriedade "Exemplo" para o caminho do exemplo em relação ao projeto Flecs.NET.Examples . Cada nível do caminho deve ser separado por um sublinhado.
Exemplo :
dotnet run --project src/Flecs.NET.Examples --property:Example=Entities_Basics Clone o repo e seus submódulos.
git clone --recursive https://github.com/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NETExecute o seguinte comando na solução para restaurar todas as dependências do projeto.
dotnet restoreCompile o invólucro e as bibliotecas nativas. O compilador ZIG será baixado automaticamente e armazenado em cache na pasta local do Nuget Package. As bibliotecas nativas serão compiladas cruzadas para Linux, MacOS e Windows.
dotnet buildReferencie o projeto e importe as bibliotecas nativas. Agora você deve poder usar o FLECS.NET do seu projeto.
< 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 >As ligações de baixo nível à API do FLECS C são pré-geradas e incluídas no projeto FLECS.NET.Bindings por padrão. Se necessário, você pode executar o seguinte comando para regenerar o arquivo de ligação.
dotnet run --project src/Flecs.NET.BindgenO FLECS.NET conta com a geração de código para evitar a duplicação de código manual. Se alguma alteração for feita no projeto FLECS.NET.CodeGen, você poderá executar o seguinte comando para executar novamente os geradores de código. Os arquivos gerados serão emitidos para esta pasta.
dotnet run --project src/Flecs.NET.Codegen Sinta -se à vontade para abrir um problema ou solicitar. Todas as contribuições são bem -vindas!
Maneiras de contribuir: