![]() |
VOOZH | about |
dotnet add package Arch.Relationships --version 1.0.1
NuGet\Install-Package Arch.Relationships -Version 1.0.1
<PackageReference Include="Arch.Relationships" Version="1.0.1" />
<PackageVersion Include="Arch.Relationships" Version="1.0.1" />Directory.Packages.props
<PackageReference Include="Arch.Relationships" />Project file
paket add Arch.Relationships --version 1.0.1
#r "nuget: Arch.Relationships, 1.0.1"
#:package Arch.Relationships@1.0.1
#addin nuget:?package=Arch.Relationships&version=1.0.1Install as a Cake Addin
#tool nuget:?package=Arch.Relationships&version=1.0.1Install as a Cake Tool
👁 Maintenance
👁 Nuget
👁 License
👁 C#
Extensions for Arch with some useful features like Systems, Source Generator and Utils.
Download the packages and get started today!
dotnet add package Arch.System --version 1.0.2
dotnet add package Arch.System.SourceGenerator --version 1.1.0
dotnet add package Arch.EventBus --version 1.0.2
dotnet add package Arch.LowLevel --version 1.0.3
dotnet add package Arch.Relationships --version 1.0.0
dotnet add package Arch.Persistence --version 1.0.0
Check the links and the Wiki!
With this package you are able to write and group queries and systems for Arch automatically. And all this with the best possible performance.
The tools can be used independently of each other.
// Components ( ignore the formatting, this saves space )
public struct Position{ float X, Y };
public struct Velocity{ float Dx, Dy };
// BaseSystem provides several usefull methods for interacting and structuring systems
public class MovementSystem : BaseSystem<World, float>
{
public MovementSystem(World world) : base(world) {}
// Generates a query and calls that one automatically on BaseSystem.Update
[Query]
public void Move([Data] in float time, ref Position pos, ref Velocity vel)
{
pos.X += time * vel.X;
pos.Y += time * vel.Y;
}
// Generates and filters a query and calls that one automatically on BaseSystem.Update in order
[Query]
[All<Player, Mob>, Any<Idle, Moving>, None<Alive>] // Attributes also accept non generics :)
public void ResetVelocity(ref Velocity vel)
{
vel = new Velocity{ X = 0, Y = 0 };
}
}
public class Game
{
public static void Main(string[] args)
{
var deltaTime = 0.05f; // This is mostly given by engines, frameworks
// Create a world and a group of systems which will be controlled
var world = World.Create();
var _systems = new Group<float>(
new MovementSystem(world), // Run in order
new MyOtherSystem(...),
...
);
_systems.Initialize(); // Inits all registered systems
_systems.BeforeUpdate(in deltaTime); // Calls .BeforeUpdate on all systems ( can be overriden )
_systems.Update(in deltaTime); // Calls .Update on all systems ( can be overriden )
_systems.AfterUpdate(in deltaTime); // Calls .AfterUpdate on all System ( can be overriden )
_systems.Dispose(); // Calls .Dispose on all systems ( can be overriden )
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 netstandard2.1 is compatible. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
Relationships now use less memory and are serializable.