Документы · Примеры · Разображение
FLECS.NET -это обертка на высоком уровне для FLEC. Низкоуровневые привязки с C API включены и генерируются с помощью bindgen.net. Нативные библиотеки перекрестно скомпилированы с помощью Zig Toolsets 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 - порт C# на высоком уровне обертки C ++
Flecs.net.bindings - Низкоуровневые привязки C API
Flecs.net.native - предварительно скомпилированные нативные библиотеки
Вы можете скачать пакет Nuget и сразу же использовать flecs.net !
Flecs.net (warpper + привязки + нативные библиотеки): выпуск | Отлаживать
dotnet add PROJECT package Flecs.NET.Release --version *-*Flecs.net.bindings (привязки + нативные библиотеки): релиз | Отлаживать
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 доступны сборки разработки. Пакеты автоматически загружаются на каждом коммите в основной ветвь.
Чтобы получить доступ к сборке разработки из вашего проекта, вам сначала необходимо создать токен личного доступа GitHub с разрешением read:packages . (См. Создание токена личного доступа (классика))
После того, как вы создали личный токен доступа, запустите следующую команду, чтобы добавить канал GitHub в качестве нового источника пакета. Замените YOUR_GITHUB_USERNAME на свое имя пользователя GitHub и 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 "Чтобы удалить подачу GitHub из источников пакета Nuget, запустите следующую команду.
dotnet nuget remove source " flecs.net " Действия Github могут быть аутентифицированы с использованием секрета 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" Предупреждение
Пакеты кормов для разработки могут быть удалены без предупреждения, чтобы освободить место.
Чтобы запустить любую из примеров программ, используйте 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 Package. Нативные библиотеки будут перекрестными для 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 >Низкоуровневые привязки с API FLECS предварительно сгенерированы и включены в проект FLECS.Net.Bindings по умолчанию. При необходимости вы можете запустить следующую команду для восстановления файла привязки.
dotnet run --project src/Flecs.NET.BindgenFLECS.NET полагается на генерацию кода, чтобы избежать дублирования ручного кода. Если какие -либо изменения внесены в проект flecs.net.codegen, вы можете запустить следующую команду, чтобы повторно затронуть генераторы кодов. Сгенерированные файлы будут выводиться в эту папку.
dotnet run --project src/Flecs.NET.Codegen Не стесняйтесь открывать проблему или привлечь запрос. Все взносы приветствуются!
Способы внесения вклад: