Mirror of Svelto.ECS because we're a fan of it
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CHANGELOG.md 10KB

1 year ago
1 year ago
2 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. # Svelto.ECS Changelog
  2. All notable changes to this project will be documented in this file. Changes are listed in random order of importance.
  3. ## [3.5.2] - 07-2024
  4. * Minor serialization code improvements
  5. * Remove legacy filters once for all
  6. * breaking change: GetOrCreate*Filter, Create*Filter, Get*Filter don't return by ref anymore to fix reported bug
  7. * references are now updated at the end of the submission frame so they are accessible inside callbacks
  8. ## [3.5.1] - 01-2024
  9. * Remove UnityEntitySubmissionScheduler, it was never needed, the user can use the standard EntitySubmissionScheduler and tick it manually
  10. * Dropped the idea to specialise EntitiesSubmissionScheduler. In hindsight it was never necessary.
  11. * Added better support for range exclusive groups, now they are correctly registered in the group hash map
  12. * Removed annoying Group compound/tag {type} is not sealed warning
  13. * Merged Cuyi's workaround to be able to query compound groups in abstract engine. Never had the time to implement a better solution
  14. * It is now possible again to add an entity multiple times inside a filter (it will be overriden)
  15. * Fixed issue https://github.com/sebas77/Svelto.ECS/issues/123
  16. * Fixed issue https://github.com/sebas77/Svelto.ECS/issues/122
  17. * Fixed issue https://github.com/sebas77/Svelto.ECS/issues/121
  18. * AddEngine now adds engines contained in a GroupEngine to the EnginesGroup optionally
  19. ## [3.5.0] - 09-2023
  20. * Introduced Serialization namespace for the serialization code
  21. * Unity: dropped 2020 support, minimum requirement is no 2021.3
  22. * Unity DOTS: added CreateDOTSToSveltoSyncEngine method in SveltoOnDOTSEnginesGroup
  23. * Refactor: split NB/MB struct from their internal logic that must be used only by the framework. Eventually NB and MB structs must be ref, as they are not supposed to be held (they may become invalid over the time). However due to the current DOTS patterns this is not possible. In future a sentinel pattern will allow to lease these buffers with the assumption that they can't be modified while held (and if a modification happens an exception will throw)
  24. * Improved managed EGIDMultiMapper. A MultiMapper can improve components fetching performance
  25. * Renamed IDisposableEngine interface to IDisposableEngine
  26. * added EntityReference Exists method to validate it against a given entity database
  27. * BUG FIXED: IReactOnDisposeEx callbacks were not correctly called
  28. * BUG FIXED: fixed serious bug that would pass wrong entities indices to the moveTO callback under specific conditions
  29. * Added Group Range functionality to GroupCompound
  30. * Added Offset to GroupCompound to know the index of a given group compared to the starting group ID of the compound range (check MiniExample 9, Groupsonly for example)
  31. * range and bitmask can be now set only in GroupTag and be inherited by GroupCompounds. GroupCompound bitmasks will be the OR of the group tags bitmasks, while the range will be the larger of the group tags ranges.
  32. * entity filters enumerator do not iterate anymore filters belonging to disabled groups
  33. * remove operations can now be executed in the same frame of a swap. a Remove will always supersed as Swap operation
  34. * engines added to a GreoupEngine are automatically added to the enginesgroup
  35. ## [3.4.6] - 05-2023
  36. * SveltoOnDOTS bug fixes/improvements
  37. * Comments and code cleanup
  38. ## [3.4.4] - 04-2023
  39. * refactored internal datastructures
  40. * added IReactOnDisposeEx interface
  41. * added code to warmup all the entity descriptors at startup to avoid first time allocations when an entitydescriptor is used for the very first time
  42. * added the option to iterate transient filters per component like it already happens with persistent filters. Transient filters are tracked optionally.
  43. * fixed huge bug in the filter enumerator, truly surprised this never showed up
  44. ## [3.4.2] - 03-2023
  45. * removed static caches used in performance critical paths as they were causing unexpected performance issues (the fetching of static data is slower than i imagined)
  46. * add Native prefix in front of the native memory utilities method names
  47. * largely improved the console logger system
  48. * minor improvements to the platform profiler structs
  49. * improvements to the ThreadSafeObjectPool class (some refactoring too)
  50. * added several datastructures previously belonging to Svelto.ECS
  51. * all the FastClear methods are gone. The standard clear method now is aware of the type used and will clear it in the fastest way possible
  52. * MemClear is added in case memory needs to be cleared explicitly
  53. * added new SveltoStream, Unmanaged and Managed stream classes, their use case will be documented one day
  54. * renamed the Svelto.Common.DataStructures namespace to Svelto.DataStructures
  55. * added FixedTypedArray* methods. Fixed size arrays embedded in structs are now possible
  56. * FasterList extension to convert to Span and ByteSpan
  57. * Fix reported bugs
  58. * Minor Svelto Dictionary improvements
  59. * Added ValueContainer, a simple int, Tvalue dictionary based on sparse set. It has very specific use cases at the moment. Mainly to be used for the new ECS OOP Abstraction resoruce manager
  60. * Added IReactOnSubmissionStarted interface
  61. ### SveltoOnDOTS changes
  62. * update to DOTS 1.0 (but still compatible with 0.51, although slower)
  63. * Deprecated the use of EntityCommandBuffer since was very slow
  64. * added faster batched DOTS operations, new DOTS creation patterns introduced (old one still compatible as long as EntityCommandBuffer was not used)
  65. * ISveltoOnDOTSSubmission interface exists only to allow the user to submit entities On DOTS explicitly, use this instead of
  66. * SveltoOnDOTSHandleCreationEngine is no more, you want to use ISveltoOnDOTSStructuralEngine and its DOTSOperations instead wherever EntityManager was used before
  67. * ISveltoOnDOTSStructuralEngine is no more, you want to use ISveltoOnDOTSStructuralEngine and its DOTSOperations instead
  68. * in all the case above, if you were relying on Update you probably want to use OnPostSubmission instead
  69. * DOTSOperations new AddJobToComplete method will allow to register jobs from inside ISveltoOnDOTSStructuralEngines that will be completed at the end of the submission
  70. ## [3.3.2] - 04-06-2022
  71. * Internal refactoring to support future features. Currently it may translate to a small performance boost
  72. * IEntityComponent and IEntityViewComponent now implements _IInternalEntityComponent. This shouldn't affect existing code
  73. * Improve thread-safety of entity building
  74. * Fixed serious bug that affected the integrity of the EntityIDs values during RemoveEX callbacks
  75. * The point above may result in a performance boost in the Filters updates during submission
  76. * Code is again 2019 compatible (this may have been broken for a while)
  77. * Fix a crash wit the EntityCollection deconstruction while trying to deconstruct an empty collection
  78. * Breaking: EntityFilterCollection GetGroupFilter will throw an exception if the filter doesn't exist. Use GetOrCreateGroupFilter in case.
  79. * Breaking: LocatorMap has been renamed to EntityReferenceMap
  80. * Breaking: GetEntityLocatorMap has been renamed to GetEntityReferenceMap
  81. ## [3.3.1] - 26-04-2022
  82. * Fixed serious bug that would affect the new IReactOnRemoveEx callbacks
  83. ## [3.3.0] - 11-04-2022
  84. * INeedEGID and INeedEntityReference interfaces are not deprecated, but still available for backwards compatibility through the define SLOW_SVELTO_SUBMISSION
  85. * There are some minor breaking changes, you may need to rename a bunch of methods calls
  86. * Drastically improved Submission phase performance
  87. * All the IReactOn interfaces are now replaced by much faster IReacOn\*Ex interfaces. Use those instead.
  88. * QueryEntities methods now optionally return also an array of Entity IDs that you can reference like a component (this supersedes INeedEGID)
  89. * Completely reworked and way more powerful filter API. The old one has been renamed to Legacy and left for backward compatibility
  90. * NativeEGIDMultiMapper doesn't need to be created every submission anymore. It can be created permanently and disposed when not used anymore (some caveats with it)
  91. * Improved Serialization system
  92. * Improved SveltoOnDots system
  93. * Tons of other improvements and bug fixes
  94. ## [3.2.5]
  95. * refactor and improved NativeBag and UnsafeBlob. This fix a previously known crash with Unity IL2CPP
  96. ## [3.2.0]
  97. * Improved checks on Svelto rules for the declaration of components and view components. This set of rules is not final yet (ideally one day they should be moved to static analyzers)
  98. * Introduce the concept of Entity Reference. It's a very light weight identifier to keep track of entities EGID that can change dynamically (EGIDs change when groups are swapped), Entity References never change. The underlying code will be optimised even further in future.
  99. * Introduced the concept of Disabled Group. Once a group is marked as disabled, queries will always ignore it.
  100. * Merged DispatchOnSet and DispatchOnChange and renamed to ReactiveValue. This class will be superseded by better patterns in future.
  101. * Added FindGroups with 4 components
  102. * Improved QueryGroups interface
  103. * Improved DynamicEntityDescriptor interface
  104. * Improved ExtendibleEntityDescriptor interface
  105. * Improved Native memory support
  106. * Improved Svelto and Unity DOTS integration
  107. * Improved and fixed Serialization code
  108. * Ensure that the creation of static groups is deterministic (GroupHashMap)
  109. ## [3.1.3]
  110. * bumped dependency of Svelto.Common due to an important fix there.
  111. ## [3.1.2]
  112. * improved async entity submission code (still experimental)
  113. * improved native entity operations debug info
  114. ## [3.1.1]
  115. * SubmissionEngine didn't need the EntityManager property, so it has been removed
  116. ## [3.1.0]
  117. * rearrange folders structures for clarity
  118. * added DoubleEntitiesEnumerator, as seen in MiniExample 4, to allow a double iteration of the same group skipping
  119. already checked tuples
  120. * reengineered the behaviour of WaitForSubmissionEnumerator
  121. * removed redudant SimpleEntitySubmissionSchedulerInterface interface
  122. * renamed BuildGroup in to ExclusiveBuildGroup
  123. * renamed EntityComponentInitializer to EntityInitializer
  124. * Entity Submission now can optionally be time sliced (based on number of entities to submit per slice)
  125. * working on the Unity extension Submission Engine, still WIP
  126. * added the possibility to hold a reference in a EntityViewComponent. This reference cannot be accesses as an object,
  127. but can be converted to the original object in OOP abstract layers
  128. * renamed NativeEntityComponentInitializer to NativeEntityInitializer