docs・例・scord
FLECS.NETは、FLECSの高レベルのラッパーです。 C APIへの低レベルのバインディングが含まれ、bindgen.netで生成されます。ネイティブライブラリには、Vezel-DevのZigツールセットがクロスコンパイルされています。
// 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- C ++ラッパーの高レベルC#ポート
FLECS.NET.BINDINGS- C APIの低レベルのバインディング
flecs.net.native-事前コンパイルされたネイティブライブラリ
Nugetパッケージをダウンロードして、すぐにFLECS.NETを使用できます!
flecs.net(ラッパー +バインディング +ネイティブライブラリ):リリース|デバッグ
dotnet add PROJECT package Flecs.NET.Release --version *-*flecs.net.bindings(bindings + nativeライブラリ):リリース|デバッグ
dotnet add PROJECT package Flecs.NET.Bindings.Release --version *-*flecs.net.native(ネイティブライブラリ):リリース|デバッグ
dotnet add PROJECT package Flecs.NET.Native.Release --version *-*FLECS.NETは、NUGET用のリリースパッケージとデバッグパッケージの両方を提供します。 APIの誤った使用のためのチェックを含めるため、開発時にデバッグパッケージを使用することをお勧めします。ビルド構成に基づいてプロジェクトに両方を含めるには、以下のパッケージ参照を使用してください。プロジェクトに最新の安定したバージョンまたはプレレリースバージョンが追加されます。
< 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は、 PublishAOTが有効になっているときに使用できる事前コンパイルされた静的ライブラリを提供します。静的リンクを有効にするには、 <FlecsStaticLink>true</FlecsStaticLink>プロパティグループに追加します。共有ライブラリが出力ディレクトリにコピーされないようにするには、パッケージリファレンスにExcludeAssets="native"を追加します。
< 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パッケージレジストリで開発ビルドを利用できます。パッケージは、メインブランチへのすべてのコミットで自動的にアップロードされます。
プロジェクトから開発のビルドにアクセスするには、最初にread:packages許可を使用してGitHubの個人アクセストークンを作成する必要があります。 (個人的なアクセストークンの作成(クラシック)を参照)
個人的なアクセストークンを作成したら、次のコマンドを実行して、GitHubフィードを新しいパッケージソースとして追加します。 GitHubユーザー名にYOUR_GITHUB_USERNAMEを、個人的なアクセストークンでYOUR_GITHUB_TOKENに置き換えます。
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 "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 >デフォルトでは、GitHubフィードはグローバルnuget.configファイルに追加され、マシン上の任意のプロジェクトで参照できます。フィードを単一のプロジェクト/ソリューションに追加する場合は、プロジェクト/ソリューションディレクトリのルートにnuget.configファイルを作成し、 --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 "nugetパッケージソースからgithubフィードを削除するには、次のコマンドを実行します。
dotnet nuget remove source " flecs.net " githubアクションワークフローは、 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.pkg.github.com/BeanCheeseBurrito/index.json" 警告
開発フィードパッケージは、空間を解放するよう警告せずに削除される場合があります。
プログラムのサンプルを実行するには、 dotnet runを使用して、 Flecs.NET.Examplesプロジェクトに比べて「例」プロパティを例のパスに設定します。パスの各レベルは、アンダースコアによって分離する必要があります。
例:
dotnet run --project src/Flecs.NET.Examples --property:Example=Entities_Basics リポジトリのクローンとそれはサブモジュールです。
git clone --recursive https://github.com/BeanCheeseBurrito/Flecs.NET.git
cd Flecs.NETソリューションで次のコマンドを実行して、すべてのプロジェクト依存関係を復元します。
dotnet restoreラッパーとネイティブライブラリをコンパイルします。 Zigコンパイラは、地元のNugetパッケージフォルダーに自動的にダウンロードされ、キャッシュされます。ネイティブライブラリは、Linux、MacOS、およびWindows用にクロスコンパイルされます。
dotnet buildプロジェクトを参照し、ネイティブライブラリをインポートします。これで、プロジェクトからFLECS.NETを使用できるようになりました。
< 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 >FLECS C APIへの低レベルのバインディングは事前に生成され、flecs.net.bindingsプロジェクトにデフォルトで含まれています。必要に応じて、次のコマンドを実行してBindingsファイルを再生できます。
dotnet run --project src/Flecs.NET.BindgenFLECS.NETは、手動コードの複製を避けるためにコード生成に依存しています。 FLECS.NET.CODEGENプロジェクトに変更が加えられている場合は、次のコマンドを実行してコードジェネレーターを再実行できます。生成されたファイルは、このフォルダーに出力されます。
dotnet run --project src/Flecs.NET.Codegen お気軽に問題を開くか、リクエストをプルしてください。すべての貢献は大歓迎です!
貢献する方法: