Godot proof of concept test project with external C# plugins created mainly for Unity:
- Download
Entitas.zip
andJenny.zip
. - Create new folder
Entitas
inside your Godot project and extractEntitas.zip
inside it. - Extract
Jenny.zip
directly to to the root of your project. - Make sure to create C# project and solution of your project. You can do it by creating a C# script inside Godot.
- In your
.csproj
add references to the following.dll
files:Entitas\DesperateDevs\DesperateDevs.Caching.dll
Entitas\DesperateDevs\DesperateDevs.Extensions.dll
Entitas\DesperateDevs\DesperateDevs.Reflection.dll
Entitas\DesperateDevs\DesperateDevs.Serialization.dll
Entitas\DesperateDevs\DesperateDevs.Threading.dll
Entitas\Entitas\Entitas.dll
Entitas\Entitas\Entitas.CodeGeneration.Attributes.dll
- In Rider you can do it by right clicking on your project >
Add
>Add reference...
.
- Run console command
dotnet Jenny\Jenny.Generator.Cli.dll
in the root folder to generateJenny.properties
. - Edit
Jenny.properties
:- Add
Jenny
andEntitas\Entitas
paths to theJenny.SearchPaths
. - Set
Jenny.Plugins.ProjectPath
with your.csproj
file. - Set
Jenny.Plugins.TargetDirectory
toGenerated
or any other folder where you want your generated files to be placed. - Set
Entitas.CodeGeneration.Plugins.Contexts
to your needs.
- Add
- To generate code use command
dotnet Jenny\Jenny.Generator.Cli.dll gen
.- If you run into some generation errors try removing
Generated
folder first. - Use shell script
_JennyGenerateScript.sh
to do it automatically.
- If you run into some generation errors try removing
- If you run in some other issues, check out godot-entitas-template repo by Guendeli.
- Download
[email protected]
. - Create folder
Zenject
and extract.dll
files there. - Add references to all the Zenject
.dll
files in yourcsproj
.
Check out Game/MainScene.tscn
and Game/Sources
folder for the example setup. In Game/Sources/Core
you can find ports of the Unity Zenject scripts and an Entitas controller.
This setup worked on Windows and I haven't tried building the project yet.