Skip to content

Releases: friflo/Friflo.Engine.ECS

v3.4.2

21 May 08:31

Choose a tag to compare

v3.4.1

20 May 09:59

Choose a tag to compare

  • Added the same runtime as in 3.4.0 when deleting the source or target entity of an ILinkRelation with DeleteEntity().

v3.4.0

20 May 08:07

Choose a tag to compare

  • An InvalidOperationException is now thrown when accessing outdated Relations<>
    Relations<...> outdated. Added / Removed relations after calling GetRelations<...>().
    See: #70 (comment)

v3.3.0

29 Apr 13:46

Choose a tag to compare

The main focus of this release was to add support for EcGui - an In-Game GUI utilizing ImGui.NET.
The GUI is an optional extension and acts as an overlay over the Game screen.
It provides instant access to entities their components, tags and relations at runtime via Explorer and Inspector window.

Features

To enable sorting and filtering in EcGui the following features were added to the ECS.

  • Support sorting an EntityList with SortByComponentField<,>() and SortByEntityId().
  • Support to filter an EntityList using Filter(Func<Entity, bool> filter) with a predicate delegate.

Bugfix

EcGui

EcGui can be integrated in all environments that support ImGui. This means all desktop platforms: Windows, macOS & Linux.
It supports various graphics backends: Direct3D, Vulkan, Metal, OpenGL, ...

Features

  • Requires only a few method calls (3 at minimum) to connect ECS store, queries and systems to EcGui.
    // on startup
    EcGui.AddExplorerStore("Store", store);
    // in render loop
    EcGui.ExplorerWindow();
    EcGui.InspectorWindow();
  • Renders the Explorer & Inspector in ~0.1 - 0.5 ms per frame. Rendering is allocation free.
    The time for rendering is independent from entity count. E.g. 1, 10, ..., 1.000 or 1.000.000 entities.
  • Explore ECS queries added to the Explorer in real time.
  • Filter and sort entity components in the explorer table.
  • Edit, Cut, Copy or Paste entities and components in the Explorer table.
  • Export Explorer table as CSV or Markdown.
  • View and edit all entity components, tags and relations in the Inspector window.

Minimal Demos showing how to integrate EcGui in MonoGame, Godot, SDL3 & Silk.NET.
All demos see: EcGui Demo List

friflo-EcGui-MonoGame

friflo-EcGui-Godot

v3.2.1

20 Feb 08:20

Choose a tag to compare

Simplified API

  • Added Entity.CopyEntity(Entity target)
    Intended to backup the entities from one EntityStore to another.
    See: Docs - Clone / Copy entity
  • Added Entity.CloneEntity()

v3.2.0

20 Feb 08:20

Choose a tag to compare

  • New feature: added EntityStore.CopyEntity(Entity source, Entity target)

See v3.2.1 to use the simplified API Entity.CopyEntity(Entity target)

v3.1.0

13 Feb 17:27

Choose a tag to compare

  • Introduced StructuralChangeException which is thrown when executing structural changes within a Query<>() loop.
    Detailed information at Query - StructuralChangeException
  • Component type UniqueEntity now implements IIndexedComponent<string> to improve performance of EntityStore.GetUniqueEntity(string uid).

v3.0.4

13 Feb 17:38

Choose a tag to compare

RelationsEnumerator<>.Current returns entities now by ref. This enables to modify relations in a GetRelations<>() loop.
E.g.

  foreach (ref var relation in entity.GetRelations<MyRelation>()) {
      relation.Value += 1;
  }

v3.0.2

26 Jan 21:03

Choose a tag to compare

v3.0.1

11 Jan 09:39

Choose a tag to compare

  • Simplify - Made BaseSystem.OnAddStore() and BaseSystem.OnRemoveStore() noop methods.
    An override of these method are not required to call the base implementation anymore which happened accidentally.
  • Fixed AsSpan...<>() when used in multithreaded queries. See #47