Releases: friflo/Friflo.Json.Fliox
engine-v3.0.0-preview.4
- Added runtime assertions to ensure an entity tree (parent / child relations) never contains cycles. So the tree is always a DAG.
An operation e.g.AddChild()
which would create a cycle within a tree will throw an exception like:System.InvalidOperationException : operation would cause a cycle: 3 -> 2 -> 1 -> 3
- Improved performance of
Entity.AddChild()
,Entity.RemoveChild()
&Entity.InsertChild()
by 30%
engine-v3.0.0-preview.3
-
Reduced number of properties displayed for an Entity in the debugger.
Moved properties: Archetype, Parent & Scripts to Entity.Info -
Improved performance and memory allocations to build a scene tree.
Each parent in a tree has aTreeNode
component.
reducedsizeof(TreeNode)
component from 16 to 8 bytes.Before: Each
TreeNode
has an individual int[] array storing child ids.
Now: child ids are stored in a ~ dozen id pool array buffers. Independent from the number of parent or child entities.
If these array buffers grown large enough over time no heap allocations will happen if adding or removing child entities.
engine-v3.0.0-preview.2
First release with all features described in Wiki Page - Examples ~ Component-Types.
New features:
- Entity Relationships
- Relations
- Search
The API is regarding these new feature is likely to remain stable.
engine-v2.1.0
Added support for generic component and tags types.
See Issue #53. E.g.
public struct GenericComponent<T> : IComponent {
public T Value;
}
engine-v2.0.0
New Features
- Introduced Systems, System Groups with command buffers and performance monitoring.
Details at README - Systems - Added support for Native AOT.
Details at Wiki ⋅ General - Native AOT. - Enabled sharing a single QueryFilter instance by multiple queries.
Changing a query filter - e.g. adding more constrains - directly changes the result set of all queries using thequeryFilter
.var query = store.Query<....>(queryFilter);
- Added CommandBuffer.Synced intended to record entity changes in parallel query jobs.
Performance
- Improved bulk creation of entities by 3x - 4x with Archetype.CreateEntities(int count).
See performance comparison at ECS Benchamrks. - Reduced memory footprint of an entity from 48 bytes to 16 bytes.
See column Allocated in ECS Benchamrks. - Decreased initial component type registration from 80 ms to 23 ms (Mac Mini M2).
Note: Component type registration runs only once per process on the first ECS API call.
Fixes
- Fixed issue related to JSON serialization. See #45
Before: Component types with unsupported field types caused an exception.
Fix: These unsupported field types are now ignored by JSON serializer. - Parallel queries: fixed entities - of type
ChunkEntities
- used as last parameter in aArchetypeQuery.ForEach()
. See #50Before:query.ForEach((..., entities) => { ... });
entities
returned always the same set of entities.
Fix:entities
now returns the entities assigned to a thread. - Adding a Signal handler to an entity already having a Signal handler replaced the existing one. See #46
Project
- Simplify project structure for Friflo.Engine.ECS.
Reduced number of files / folders in Engine folder from 21 to 7. - Moved documentation and examples from
README.md
to GitHub ⋅ Wiki pages.
engine-v2.0.0-preview.9
Add support for Native AOT.
See Wiki · Examples ~ General
engine-v2.0.0-preview.4
Fixed - adding multiple signal handlers to an entity.
See: #46
v1.0.2
Fix/Changed behavior:
Unsupported fields/properties in custom classes, structs and interfaces are now ignored by mapper/serialization.
Issue: Generic structs in components is not supported
Before an exception was thrown:
System.InvalidOperationException : invalid standard type. was: Tests.ECS.GenericStruct`1[System.Int32]
E.g.
class MyClass {
public GenericStruct<int> genericStruct;
}
struct GenericStruct<T> { public T value; }
Commit: Mapper - Ignore unsupported fields/properties in custom classes, structs and interfaces.
v1.0.1
Added traget framework net8.0 to all projects
Each nuget package now contains an additional folder lib/net8.0
containing a dll for this framework
Update dependencies
-
WebRTC
- SIPSorcery 6.2.4
-
Database providers
- Microsoft.Azure.Cosmos 3.39.1
- MySqlConnector 2.3.7
- Npgsql 8.0.3 - fixes vulnerability: GHSA-x9vc-6hfv-hg8c
- SQLitePCLRaw.core 2.1.8
tested all providers with Json.Tests/test-all-async.bat & Json.Tests/test-all-sync.bat
-
Tests:
- Bogus 35.5.1
- FluentAssertions 6.12.0
- Microsoft.NET.Test.Sdk 17.9.0
v1.0.0
- Hub: Support setting FlioxClient EntitySet<,> fields in Unity IL2CPP
commit: Mapper - Support CreateFieldSetterIL() for Unity IL2CPP - Support JSON serilization of classes extending generic types.
commit: Fliox - Mapper: add ClassMapper support for classes extending generic types
Example class
class MyClass : GenericBase<int> {
public string: value;
}