Entitas  0.34.0
Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity
RELEASE_NOTES.md
1 # 0.34.0
2 
3 See and discuss changes in [Milestone 0.34.0](https://github.com/sschmid/Entitas-CSharp/milestone/4)
4 
5 #### Breaking changes
6 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
7 
8 #### Entitas
9 - Added api to clone entities (#178 #182)
10  - `pool.CloneEntity(e);`
11  - `entity.CopyTo(target);`
12 
13 - Added EntityIndex constructor with EqualityComparer (#170 #186)
14 - Rename GroupObserver to EntityCollector (#168 #188)
15 - Added filter condition to matchers (#165 #189)
16  - `Matcher.Position.Where(e => e.position.x > 10);`
17 
18 #### Entitas.Serialization.Blueprints
19 - Added HideInBlueprintInspectorAttribute (#185)
20 
21 #### Other
22 - Improved snippets
23 - Added Visual Studio snippets (#172)
24 - Added TestRunner to support test debugging (#175 #176)
25 - Updated build scripts (#173 #177)
26 - Added tests for code formatting
27 
28 
29 # 0.33.0
30 
31 ##### Breaking changes
32 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
33 
34 ##### Entitas
35 - Added pools.CreateSystem()
36 - Added ObjectPool and ObjectCache and updated EntitasCache to use ObjectCache (#157)
37 - Added entityIndex.Activate() and removing entity indices from pool (#163)
38 - Renamed IDeinitializeSystem to ITearDownSystem (#164)
39 
40 ##### Entitas.CodeGenerator
41 - TypeReflectionProvider sorts pool names and ToUppercaseFirst() (#155)
42 - CodeGeneratorConfig doesn't add default pool anymore (#156)
43 
44 ##### Other
45 - Added repository icon
46 - Added snippets (see Snippets folder)
47 
48 
49 # 0.32.0
50 
51 Summer break is over! Entitas development is back on track!
52 Thanks all of you guys for using and contributing to Entitas.
53 This release is packed with improvements from all of you, thanks for that!
54 
55 ##### Breaking changes
56 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
57 
58 ##### General
59 - Lots of maintenance, refactoring, documentation and cleanup. Checked every class and every test ;)
60 - Removed unused usings (#134 @thematthopkins )
61 - Added script to generate docset and included it in build script (#141 @mstrchrstphr)
62 - Updated policy.mdpolicy to support latest Xamarin Studio
63 - Fixed inconsistent Line endings (#116 @ParagonFable)
64 
65 ##### Entitas
66 - Added new `Pools` class. There is no static Pools anymore but an instance.
67 - Added `ISetPools` to inject the shared pools instance
68 - Removed `pool.CreateSystem<T>()` and `pool.CreateSystem(Type type)` (Apply migration 0.32.0)
69 - Fixed `pool.CreateSystem()` not creating a ReactiveSystem for IGroupObserverSystem
70 - Added `EntityIndex` (#154)
71 - `pool.Reset()` removes all event handlers
72 - Fixed retain / release didn't update entity toString cache
73 - Added `EntitasCache` for object pooling of collections to reduce memory allocations
74 - Updated Entity, Matcher and Pool to use EntitasCache (less garbage :heart:)
75 - Added `ICleanupSystem`
76 - Added `IDeinitializeSystem`
77 - Pushing removed component to component pool after dispatching event
78 
79 ##### Entitas.CodeGenerator
80 - Fixed ComponentIndicesGenerator with multiple pools (#124)
81 - CodeGeneratorConfig will add default pool
82 - Fixed pools order if default pool exists
83 
84 ##### Entitas.Unity.CodeGenerator
85 - CodeGenerator Preferences is using MaskField instead of Toggles now
86 
87 ##### Entitas.Unity.VisualDebugging
88 - Less editor repaints for DebugSystemsInspector to improve performance
89 - Fixed system stats (Log stats) not ignoring Feature class
90 - Add ITypeDrawer for doubles (#132 @bddckr)
91 - Added support for enum masks (#132 @bddckr)
92 - Adjusted foldout spacing in custom inspector (#149 @ByteSheep)
93 
94 ##### Other
95 - Updated keys for Entitas.properties and moved files from Entitas.Unity to Entitas.Serialization.Configuration
96 - Moved Properties from Entitas.Unity to Entitas.Serialization
97 
98 
99 # 0.31.2
100 
101 ##### Entitas.CodeGenerator
102 - All attributes can now be used for classes, interfaces and structs
103 
104 
105 # 0.31.1
106 
107 ##### Entitas.CodeGenerator
108 - Improved component generation for classes and interfaces and added support for default pool [Pool]
109 - Added support to CustomComponentNameAttribute to generate multiple components with different names for one class or interface
110 
111 ```csharp
112 // This will automatically generate PositionComponent and VelocityComponent for you
113 [Pool, CustomComponentName("Position", "Velocity")]
114 public struct IntVector2 {
115  public int x;
116  public int y;
117 }
118 ```
119 
120 - Added support for generating components for structs
121 - Not generating obsolete pool attributes for generated classes
122 
123 
124 # 0.31.0
125 
126 ##### General
127 - Removed obsolete code
128 
129 ##### Entitas.CodeGenerator
130 - Generating components for attributed classes and interfaces
131 
132 ```csharp
133 // will automatically generate SomeClassComponent for you
134 [Core]
135 public class SomeClass {
136  public string name;
137 
138  public SomeClass(string name) {
139  this.name = name;
140  }
141 }
142 ```
143 
144 - Added support to add empty PoolAttribute to assign component to default pool
145 
146 ```csharp
147 // using [Pool] will also add this component to Pools.pool
148 [Core, Pool]
149 public class SomeComponent : IComponent {
150 }
151 ```
152 
153 ##### Entitas.Unity.VisualDebugging
154 - Added IComponentDrawer which can draw the whole component
155 - Added EntitasEntityErrorHierarchyIcon to indicate retained entities in the hierarchy
156 - Added CharTypeDrawer
157 - Fixed components not updating in the inspector (#107)
158 - Improved SystemsMonitor and added average line
159 
160 ![Entitas-SystemsMonitor](https://cloud.githubusercontent.com/assets/233700/15198441/a515d764-17d7-11e6-965c-83c027fa89f7.png)
161 
162 ##### Entitas.Unity.Serialization.Blueprints
163 - Fixed finding all BinaryBlueprints even when not loaded
164 - Correctly saving Blueprints when setting all BinaryBlueprints
165 - Added BlueprintsNotFoundException
166 - BinaryBlueprintInspector creates new pools instead of using one of Pools.allPools
167 - Fixed pool not shown when entering play-mode while a blueprint was selected in the project view
168 - Not caching blueprints when UNITY_EDITOR to enable live edit
169 
170 # 0.30.3
171 
172 ##### Entitas.CodeGenerator
173 - Added support for whitespace, '-' and braces in blueprint names
174 
175 ##### Entitas.Unity.Serialization.Blueprints
176 - Blueprints.FindAllBlueprints orders all blueprints by name
177 - Fixed pool not shown in hierarchy
178 
179 
180 # 0.30.2
181 
182 ##### Note
183 This release introduces Blueprints for Entitas (Beta). Update if you want to
184 use and play with Blueprints. [Read more...](https://github.com/sschmid/Entitas-CSharp/wiki/Blueprints-(Beta))
185 
186 ##### Entitas.CodeGenerator
187 - Only creating PoolObserver when Application.isPlaying
188 - Added BlueprintsGenerator
189 
190 ##### Entitas.Unity.VisualDebugging
191 - Added more options for sorting systems in the inspector
192 - Removing event handlers from pool observer when leaving play-mode
193 
194 ##### Entitas.Serialization.Blueprints
195 - Added Blueprints (and more)
196 
197 ##### Entitas.Unity.Serialization.Blueprints
198 - Added BlueprintInspector (and more)
199 
200 ##### Other
201 - Moved build scripts into a folder
202 
203 
204 # 0.30.1
205 
206 ##### Entitas.Unity.VisualDebugging
207 - Fixed GameObjectDestroyExtension.DestroyGameObject() compile time error (#91)
208 - Improved SystemsMonitor.Draw() to use correct available width even with scrollbars
209 - Tweaked drawing systems list
210 - Added EntitasPoolErrorHierarchyIcon to visualize when there are erros
211 
212 ##### Other
213 - Updated build_commands.sh to generate C# project from Unity
214 
215 
216 # 0.30.0
217 
218 ##### Breaking changes
219 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
220 
221 ##### Entitas
222 - Added IGroupObserverSystem which allows ReactiveSystems to observe multiple pools
223 - Added pools.CreateGroupObserver() to simplify creating a GroupObserver for multiple pools
224 
225 ##### Entitas.CodeGenerator
226 - TypeReflectionProvider ignores abstract IComponents (#88)
227 - Renamed ComponentsGenerator to ComponentExtensionsGenerator
228 - Renamed PoolAttributeGenerator to PoolAttributesGenerator
229 
230 ##### Entitas.Unity
231 - Moved Assets/Entitas.Unity to Assets/Entitas/Unity
232 - Simplified folder structure in Entitas-Unity.zip
233 
234 ##### Entitas.Unity.CodeGenerator
235 - Ignoring obsolete code generators
236 - Generate button changes size depending on generators list height
237 
238 ##### Entitas.Unity.VisualDebugging
239 - Added Feature class which inherits from Systems or DebugSystems for you, so you don't have to care anymore
240 - Fixed MissingReferenceException occurring occasionally when stopping game (#71)
241 - Added support for editing entities in EditorMode (non-playing mode)
242 - Fixed bug when components are added on entity creation (#87)
243 - Added clear buttons to search textfields
244 - Improved DateTimeTypeDrawer
245 - Added new hierarchy icons for pool and systems
246 
247 ##### Entitas.Migration
248 - Added M0300
249 - Moving Entitas.Migration into Entitas/Migration/Editor when creating Entitas-Unity.zip
250 
251 
252 # 0.29.1
253 
254 ##### Entitas.CodeGenerator
255 - Added missing support for components with properties
256 - Updated ComponentsGenerator to use entity.CreateComponent()
257 
258 ##### Entitas.Unity.CodeGenerator
259 - Added missing support for components with properties
260 
261 
262 # 0.29.0
263 
264 ##### Obsolete
265 Marked old PoolMetaData constructor obsolete. If you encounter compile errors please apply Migration 0.26.0, open C# project and generate again.
266 
267 ##### General
268 - Unified Entitas sub projects into a single project
269 - Unified all Unity projects into a single project
270 - Documentation maintenance
271 
272 ##### Entitas
273 - Removing all event handler for entity.OnEntityReleased after event got dispatched
274 - Printing entity in EntityIsNotDestroyedException
275 - Added TypeExtension.ImplementsInterface()
276 - Added component types to PoolMetaData
277 - Made all methods in Systems virtual
278 - Added auto generated header to generated files
279 
280 ```
281 //------------------------------------------------------------------------------
282 // <auto-generated>
283 // This code was generated by Entitas.CodeGenerator.ComponentsGenerator.
284 //
285 // Changes to this file may cause incorrect behavior and will be lost if
286 // the code is regenerated.
287 // </auto-generated>
288 //------------------------------------------------------------------------------
289 ```
290 
291 ##### Entitas.CodeGenerator
292 - Using pool specific componentIds lookup when generating matchers for components with multiple pools
293 - TypeReflectionProvider ignores interfaces
294 
295 ##### Entitas.Serialization
296 - Added Entitas.Serialization
297 - Added PublicMemberInfo
298 
299 ##### Entitas.Unity.CodeGenerator
300 - Compile errors won't block code generation anymore
301 - Printing total generated file count when generating
302 
303 ##### Entitas.Unity.VisualDebugging
304 - Destroying EntityBahviour when entity got released
305 - Using entity component pool and providing correct previous and new component
306 - Added unique color for each component in EntityInspector
307 - Added component search field in EntityInspector
308 
309 <img alt="Entitas-Component-Search" src="https://cloud.githubusercontent.com/assets/233700/13554841/98141fac-e3b2-11e5-81ef-4ef39cf2bb4c.gif" width="417" />
310 
311 - 'Destroy Entity' Buttons are now red
312 - Simplified EntityInspector and made methods static
313 - Unfolded components info is now shared between entities within same pool
314 - Added shortcuts to Entitas Preferences and Generate
315 - Improved TypeDrawers
316 - Stepper UI tweaks
317 
318 ![Entitas.Unity.VisualDebugging-Systems](https://cloud.githubusercontent.com/assets/233700/13554882/9c0bd7c0-e3b3-11e5-89ec-65fa888f0a48.png)
319 
320 - Renamed 'Script Call Optimization' to 'Optimizations'
321 - Added EntitasEditorLayout
322 
323 
324 # 0.28.2
325 
326 ##### Entitas
327 - Added ReactiveSystem destructor to prevent memory leaks
328 - Added GroupObserver destructor to prevent memory leaks
329 
330 ##### Entitas.Unity.VisualDebugging
331 - EntityInspector now supports dropping UnityEngine.Object into fields that are null
332 
333 ![Entitas.Unity.VisualDebugging-DefaultInstanceCreator](https://cloud.githubusercontent.com/assets/233700/12884636/ea8c468c-ce5f-11e5-91a9-0fdf83de7252.png)
334 
335 - UI tweaks
336 
337 
338 # 0.28.1
339 
340 ##### Entitas.Unity
341 - Added "Script Call Optimization" to Entitas Preferences Window
342 - Added priority to IEntitasPreferencesDrawer
343 - Tweaked UI
344 
345 ![Entitas.Unity-ScriptCallOptimization](https://cloud.githubusercontent.com/assets/233700/12832387/e893b3ec-cb99-11e5-8ccb-d3478ca0c6dc.png)
346 
347 ##### Entitas.Unity.VisualDebugging
348 - Added toggle to Entitas Preferences to enable or disable Visual Debugging
349 - Tweaked UI
350 
351 ![Entitas.Unity.VisualDebugging-Toggle](https://cloud.githubusercontent.com/assets/233700/12832391/ec74d2e8-cb99-11e5-87b3-f76e2e9ea58d.png)
352 
353 
354 # 0.28.0
355 
356 ##### Breaking changes
357 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
358 
359 ##### Entitas
360 - Added documentation (#55)
361 - Added an object pool for components (#58)
362 - Added pool.ClearComponentPool(index) and pool.ClearComponentPools()
363 - Added ENTITAS_FAST_AND_UNSAFE compiler flag. When set it will speed up e.Retain() and e.Release() (#59)
364 
365 ##### Entitas.CodeGenerator
366 - Generated component extensions are now reusing components using a component object pool when destroying entities (#58)
367 - Added tests for testing the logic of generated files
368 - Decoupling code generation logic by adding Code Generator Intermediate Format (#62)
369 - Added TypeReflectionProvider
370 - Supporting components with namespace
371 - Simplified linq expressions
372 - Removed generated systems
373 - The Code Generator is not depending on Entitas anymore
374 
375 ##### Entitas.CodeGenerator.TypeReflection
376 - Added Entitas.CodeGenerator.TypeReflection project
377 
378 ##### Entitas.Unity
379 - Added `keys` and `values` getter to Properties
380 
381 ##### Entitas.Unity.VisualDebugging
382 - Added system search field to DebugSystemsInspector
383 - UI tweaks and performance optimizations
384 - Fixed logging wrong system stats
385 - Added header image and current version label to Entitas Preferences Window
386 
387 ![Entitas.Unity.Visualdebugging-preferences](https://cloud.githubusercontent.com/assets/233700/12795069/a13e5b6e-cab8-11e5-937d-870790e2bfe1.png)
388 
389 ##### Entitas.Unity.Migration
390 - Added Entitas.Unity.Migration which provides an easy way to migrate source files
391 - Added header image and current version label to Entitas Migration Window
392 
393 ![Entitas.Unity.Migration](https://cloud.githubusercontent.com/assets/233700/12795026/6acf24b4-cab8-11e5-90e3-98a103676d50.png)
394 
395 ##### Other
396 - Removed redundant files and gitignored Entitas in all Unity projects (#63)
397 - Removed Unity projects from Entitas.sln
398 - Removed warnings
399 
400 
401 # 0.27.0
402 
403 ##### Note
404 If you're using Entitas with Unity, please open the Entitas preferences and make sure that all your desired code generators are activated. Due to some code generator renamings the ComponentLookupGenerator and the ComponentsGenerator are inactive. Activate them (if desired) and generate.
405 
406 ##### Entitas
407 - Added `pool.Reset()` which clears all groups, destroys all entities and resets creationIndex
408 
409 ##### Entitas.CodeGenerator
410 - Renamed some code generators
411 - Added `CustomPrefixAttribute` to support custom prefixes for flag components
412 ```
413 [CustomPrefix("flag")]
414 public class DestroyComponent : IComponent {
415 }
416 
417 // default
418 entity.isDestroy = true;
419 
420 // with CustomPrefixAttribute
421 entity.flagDestroy = true;
422 ```
423 
424 ##### Entitas.Unity
425 - Added "Feedback" menu item to report bugs, request features, join the chat, read the wiki and donate
426 
427 ##### Entitas.Unity.CodeGenerator
428 - Removing invalid code generator names from Entitas.properties
429 
430 ##### Entitas.Unity.VisualDebugging
431 - Lots of UI tweaks
432 - Added toggle to sort systems by execution duration
433 - Added toggle to hide empty systems
434 - ReactiveSystems are highlighted with a white font color
435 - Added Clear Groups Button
436 - Added Entity Release Button
437 - Splitted systems list into initialize and execute systems and visualizing them separately
438 - Improved stepper UI
439 
440 ##### Entitas.Migration
441 - All migrations now contain information about on which folder they should be applied
442 
443 ```
444 0.26.0
445  - Deactivates code to prevent compile erros
446  - Use on folder, where generated files are located
447 ```
448 
449 ##### Other
450 - Added Commands.GenerateProjectFiles and using it in build.sh
451 - Updated build.sh and build_commands.sh to include latest MigrationAssistant.exe
452 
453 
454 # 0.26.1
455 
456 ##### Breaking changes
457 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
458 
459 
460 # 0.26.0
461 
462 ##### General
463 - Updated projects to Unity 5.3
464 - Improved all error messages and added hints
465 - Changed and applied policy.mdpolicy to all sources
466 
467 ##### Entitas.Unity
468 - Moved Entitas Preferences to its own Editor Window
469 
470 ![Entitas.Unity - Entitas Preferences Window](https://cloud.githubusercontent.com/assets/233700/12222689/9492611a-b7c3-11e5-880d-c4cc83c9234e.png)
471 
472 ##### Other
473 - Added runTests.bat for running test on windows (#49)
474 - Updated license
475 
476 
477 # 0.25.0
478 
479 ##### Entitas
480 - Improved AERC performance
481 - Added group.RemoveAllEventHandlers()
482 - Added pool.ClearGroups() to remove all groups and remove all their event handlers
483 - Added pool.ResetCreationIndex()
484 - Throwing exception when there are retained entities and pool.DestroyAllEntities() is called
485 - Renamed entity.refCount to entity.retainCount
486 
487 ##### Entitas.Unity.VisualDebugging
488 - Fixed creating entities
489 - Showing warning when there are retained entities
490 
491 ##### Other
492 - Added UnityTests project with Unity Test Tools to fix a Unity specific HashSet bug
493 
494 
495 # 0.24.6
496 
497 ##### Entitas
498 - Changed entity.Retain() to accept an owner object
499 
500 ##### Entitas.Unity.VisualDebugging
501 - Added VisualDebugging support for displaying owners of entities
502 
503 ![Entitas.Unity.VisualDebugging-RefrenceCount](https://cloud.githubusercontent.com/assets/233700/11320810/0463033a-90a7-11e5-931b-5074b50d7e62.png)
504 
505 
506 # 0.24.5
507 
508 ##### Entitas
509 - Fixed dispatching group events after all groups are updated
510 
511 ##### Entitas.CodeGenerator
512 - Supporting ENTITAS_DISABLE_VISUAL_DEBUGGING compiler flag
513 
514 
515 # 0.24.4
516 
517 ##### Entitas
518 - Added entity.componentNames. This field is set by Entitas.Unity.VisualDebugging to provide better error messages
519 - Added matcher.componentNames. This field is set by Entitas.Unity.CodeGenerator to provide better error messages
520 - entity.ToString() now removes ComponentSuffix
521 - Fixed typo
522 
523 ##### Entitas.Unity.CodeGenerator
524 - ComponentExtensionsGenerator sets matcher.componentNames
525 - Removed generating unused using in ComponentExtensionsGenerator
526 
527 ##### Other
528 - Added update_project_dependencies.sh
529 - Refactored build commands into build_commands.sh
530 
531 
532 # 0.24.3
533 
534 ##### Entitas
535 - Added systems.ActivateReactiveSystems() and systems.DeactivateReactiveSystems which should be called when you don't use systems anymore
536 
537 ##### Other
538 - Merged shell scripts
539 
540 
541 # 0.24.2
542 
543 ##### General
544 - Renamed XyzEditor to XyzInspector
545 - Streamlined naming
546 
547 ##### Entitas.Unity.VisualDebugging
548 - Simplified adding a component at runtime
549 
550 ##### Other
551 - buildPackage.sh now creates Entitas-CSharp.zip and Entitas-Unity.zip
552 
553 
554 # 0.24.1
555 
556 ##### Entitas.Unity.VisualDebugging
557 - Added support for adding components to multiple entities at once at runtime
558 
559 ![Entitas.Unity.VisualDebugging-Entity](https://cloud.githubusercontent.com/assets/233700/10293066/d4668120-6bb2-11e5-895e-cfdd25cc2e74.png)
560 
561 
562 # 0.24.0
563 
564 ##### Breaking changes
565 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
566 
567 ##### Entitas.Unity.CodeGenerator
568 - Throwing exception when attempting to generate while Unity is still compiling or assembly won't compile
569 
570 ##### Entitas.Unity.VisualDebugging
571 - Added support for creating entities and adding components at runtime
572 
573 ![Entitas.Unity.VisualDebugging-PoolObserver](https://cloud.githubusercontent.com/assets/233700/10291395/d83c3ec4-6ba9-11e5-9c1d-3e18fe2c6370.png)
574 
575 ![Entitas.Unity.VisualDebugging-Entity](https://cloud.githubusercontent.com/assets/233700/10291401/e15d29be-6ba9-11e5-8fc1-87767430342c.png)
576 
577 
578 # 0.23.0
579 
580 ##### Breaking changes
581 Before updating, please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
582 
583 - Gerneral
584  - Updated and applied policy
585 
586 ##### Entitas
587 - Reimplemented new matcher AnyOf and NoneOf
588 
589 ```csharp
590 Matcher.AllOf(Matcher.A, Matcher.B)
591  .AnyOf(Matcher.C, Matcher.D)
592  .NoneOf(Matcher.E, Matcher.F);
593 
594 ```
595 
596 ##### Entitas.CodeGenerator
597 - Updated generators to work with new matchers
598 - PoolsGenerator generates Pools.allPools (#39)
599 - Code Generators convert local newline to unix newline
600 
601 ##### Entitas.Unity.CodeGenerator
602 - Changed CodeGeneratorConfig.disabledCodeGenerators to CodeGeneratorConfig.enabledCodeGenerators
603 
604 
605 # 0.22.3
606 
607 ##### Entitas
608 - Added reactiveSystem.Clear() and systems.ClearReactiveSystems()
609 - Added IClearReactiveSystem. When implemented, clears reactive system after execute finished
610 
611 
612 # 0.22.2
613 
614 ##### Fixes
615 - Entitas
616  - GroupObserver retains entities only once
617 
618 ##### Entitas.Unity.VisualDebugging
619 - PoolObserver now shows retained entities
620 - Destroying EntityBehaviour e.OnEntityReleased instead of e.OnComponentRemoved
621 
622 ##### Other
623 - New logo
624 
625 
626 # 0.22.1
627 
628 ##### Entitas
629 - Throwing an exception when releasing an entity that is not destroyed yet (#32)
630 
631 ##### Entitas.Unity.VisualDebugging
632 - Added hierarchy icon
633 - Renamed DebugSystems related classes
634 
635 ##### Other
636 - buildPackage.sh includes HierarchyIcon.png.meta
637 
638 
639 # 0.22.0
640 
641 ##### Breaking changes
642 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
643 
644 - Entitas
645  - Restored previous pool.DestroyEntity() behaviour
646  - IReactiveSystem and IMultiReactiveSystem changed and use `TriggerOnEvent`
647  - Use the command line tool `MigrationAssistant.exe` to automatically migrate IReactiveSystem
648  - Renamed IStartSystem.Start to IInitializeSystem.Initialize (#21)
649 
650 ##### Fixes
651 - Entitas
652  - e.RemoveAllComponents() updates toString cache, even if entity has no components
653 
654 ##### Entitas
655 - Added AERC (Automatic Entity Reference Counting) (#30, solves #25)
656 - Reduced gc allocations in e.RemoveAllComponents()
657 - Reduced gc allocations in pool.CreateEntity() and pool.DestroyEntity()
658 - pool.DestroyEntity() will clean suscribed event delegates of entities (#27)
659 - entity.ToString() will always use component type
660 - Streamlined and refactored tests and sources
661 
662 ##### Entitas.Unity.VisualDebugging
663 - Improved SystemMonitorEditor graph performance (#14)
664 
665 #### Entitas.Migration
666 - Added M0220 (Migrates IReactiveSystem to combine trigger and eventTypes to TriggerOnEvent)
667 - Updated migration descriptions
668 
669 ##### Other
670 - Removed project files
671 - Renamed updateDependencies.sh to updateProjects.sh
672 - buildPackage.sh includes EntitasUpgradeGuide.md in Entitas.zip
673 
674 
675 # 0.21.0
676 
677 ##### Fixes
678 - Entitas.Migration
679  - Changed target framework to .NET 3.5 to fix build errors in VisualStudio (#22)
680 
681 ##### Entitas
682 - Changed pool.DestroyEntity(entity) behaviour
683  - won't trigger group.OnEntityRemoved anymore
684  - triggers group.OnEntityWillBeDestroyed
685  - removes entity from all groupObserver.collectedEntities
686  - ReactiveSystem doesn't pass on destroyed entities anymore
687 - ReactiveSystem doesn't call Execute() when filtered entities.Count == 0
688 
689 ##### Other
690 - Added project files (#18)
691 
692 
693 # 0.20.0
694 
695 ##### Breaking changes
696 - Entitas
697  - Removed all matchers except AllOfMatcher
698 
699 ##### Entitas
700 - Added `IEnsureComponents` to optionally ensure entities passed in via ReactiveSystem have certain components
701 - Added `IExcludeComponents` to optionally exclude entities passed in via ReactiveSystem
702 - Added support for multiple PoolAttributes on components
703 
704 ```csharp
705 [PoolA, PoolB, PoolC]
706 public class SomeComponent : IComponent {}
707 ```
708 
709 ##### Entitas.Unity.CodeGenerator
710 - Added `disabledCodeGenerators` to CodeGeneratorConfig
711 - Added code generator toggles to CodeGeneratorPreferencesDrawer
712 
713 ![Entitas.Unity.Codegenerator.disabledcodegenerators](https://cloud.githubusercontent.com/assets/233700/9046406/b4c6b7c2-3a2a-11e5-8624-a8988f684579.png)
714 
715 ##### Entitas.Unity.VisualDebugging
716 - Nicer stats
717 
718 
719 # 0.19.1
720 
721 ##### Entitas
722 - GroupObserver supports observing multiple groups
723 - Added support for IMultiReactiveSystem
724 - Added internal entity._isEnabled to prevent modifying pooled entities
725 - Replaced internal object pool with Stack<Entity>
726 
727 ##### Entitas.CodeGenerator
728 - Fixed generated replace method, when replacing non existent component
729 
730 ##### Entitas.Unity.VisualDebugging
731 - Drastically improved performance and memory usage by caching ToString() and reducing setting gameObject.name
732 
733 
734 # 0.19.0
735 
736 ##### Breaking changes
737 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
738 
739 - Entitas
740  - Added new e.OnComponentReplaced and removed all *WillBeRemoved events
741  - Added component index and changed component to OnEntityAdded and OnEntityRemoved
742  - IReactiveSystem.Execute takes List<Entity> instead of Entity[]
743  - Entitas now runs without producing garbage!
744 
745 - Entitas.CodeGenerator
746  - Removed support for properties in components
747 
748 - Entitas.Unity.VisualDebugging
749  - Replaced DebugPool with a more flexible PoolObserver
750 
751 ##### Entitas
752 - Added group.OnEntityUpdated event with previous and new component
753 
754 ##### Entitas.CodeGenerator
755 - ComponentExtensionsGenerator generates component object pool
756 - Converting newlines in generated files to Environment.NewLine (Pull request #11, thanks @movrajr)
757 
758 ##### Other
759 - Added policy.mdpolicy
760 
761 
762 # 0.18.3
763 
764 ##### Entitas
765 - Added ReactiveSystem.Activate() and .Deactivate()
766 
767 ##### Entitas.Unity.VisualDebugging
768 - Displaying nested systems hierarchy for DebugSystems
769 
770 ![Entitas.Unity.VisualDebugging-DebugSystemsHierarchy](https://cloud.githubusercontent.com/assets/233700/8761742/6e26dd22-2d61-11e5-943b-94683b7b02ec.png)
771 ![Entitas.Unity.VisualDebugging-DebugSystemsHierarchyEditor](https://cloud.githubusercontent.com/assets/233700/8761746/9628dbfe-2d61-11e5-9b75-570e5c538c0d.png)
772 - Unchecking a ReacitveSystem in VisualDebugging deactivates it
773 
774 
775 # 0.18.2
776 
777 ##### Entitas.CodeGenerator
778 - Fixed #9
779 
780 
781 # 0.18.1
782 
783 ##### Entitas.CodeGenerator
784 - ComponentExtensionsGenerator now supports properties
785 
786 
787 # 0.18.0
788 
789 ##### Breaking changes
790 - Use the command line tool `MigrationAssistant.exe` to automatically migrate
791  - Changed IReactiveSystem.GetTriggeringMatcher to IReactiveSystem.trigger
792  - Changed IReactiveSystem.GetEventType to IReactiveSystem.eventType
793 
794 Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
795 
796 ##### Entitas.Unity
797 - Fixed code generation issues on Windows by converting and normalizing line endings
798 - Fixed EntitasCheckForUpdates.CheckForUpdates() by temporarily trusting all sources
799 
800 
801 # 0.17.0
802 
803 ##### Breaking changes
804 - Added `systemCodeGenerators` to CodeGenerator.Generate()
805 
806 ```csharp
807 CodeGenerator.Generate(Type[] types, string[] poolNames, string dir,
808  IComponentCodeGenerator[] componentCodeGenerators,
809  ISystemCodeGenerator[] systemCodeGenerators,
810  IPoolCodeGenerator[] poolCodeGenerators)
811 ```
812 
813 ##### Entitas.CodeGenerator
814 - Added PoolsGenerator which creates a getter for all pools
815 
816 ```csharp
817 var pool = Pools.pool;
818 var metaPool = Pools.meta;
819 ```
820 
821 - Added SystemExtensionsGenerator
822 
823 ```csharp
824 new Systems()
825  .Add(pool.CreateGameBoardSystem())
826  .Add(pool.CreateCreateGameBoardCacheSystem())
827  .Add(pool.CreateFallSystem())
828  .Add(pool.CreateFillSystem())
829 
830  .Add(pool.CreateProcessInputSystem())
831 
832  .Add(pool.CreateRemoveViewSystem())
833  .Add(pool.CreateAddViewSystem())
834  .Add(pool.CreateRenderPositionSystem())
835 
836  .Add(pool.CreateDestroySystem())
837  .Add(pool.CreateScoreSystem());
838 ```
839 - Added Components, Systems & Pools sub folders to generated folder
840 
841 ##### Entitas.Unity
842 - Properties split with Environment.NewLine instead of '\n'
843 
844 ##### Entitas.Unity.CodeGenerator
845 - Entitas preferences appends "/Generated/" to generated folder if necessary
846 
847 ##### Entitas.Unity.VisualDebugging
848 - Using Queue<float> for SystemsDebugEditor.systemMonitorData
849 
850 
851 # 0.16.0
852 
853 ##### Breaking changes
854 - Moved system getters from Systems to DebugSystems
855 
856 ##### Entitas.Unity.CodeGenerator
857 - Generated ComponentIds use array instead of dictionary for component name lookup
858 
859 ##### Entitas.Unity.VisualDebugging
860 - Added "Step manually" to DebugSystems
861 - Added activate / deactivate systems at runtime
862 - Displaying Systems.totalSystemsCount in SystemsDebugEditor
863 - Added SystemsMonitor visual graph
864 
865 ![Entitas.Unity.VisualDebugging-DebugSystems](https://cloud.githubusercontent.com/assets/233700/8241713/3bf5e3ce-160b-11e5-8876-497bb09c04b1.png)
866 - Removed override DebugSystems.DestroyAllEntities()
867 
868 
869 # 0.15.0
870 
871 ##### Entitas
872 - Added entitas_version file
873 - Added CreateSystem(ISystem) to PoolExtensions
874 - Fixed typo GroupObserver.ClearCollectedEntities()
875 
876 ##### Entitas.Unity
877 - Added "Check for updates..." menu item
878 
879 ##### Entitas.Unity.VisualDebugging
880 - Added Stats menu item to log current components, systems and pools
881 
882 
883 # 0.14.0
884 
885 ##### General
886 - Upgraded all Unity projects to Unity 5
887 
888 ##### Entitas
889 - Added Systems class
890 - Re-combined pool extensions for creating systems to pool.CreateSystem() and removed pool.CreateStartSystem() and pool.CreateExecuteSystem()
891 - Fixed: Pool won't destroy entities it doesn't contain
892 
893 ##### Entitas.Unity
894 - Properties now support multiline values and placeholder replacement with ${key}
895 
896 ##### Entitas.Unity.CodeGenerator
897 - Added fluent api to Entity
898 
899 ```csharp
900 pool.CreateEntity()
901  .IsGameBoardElement(true)
902  .IsMovable(true)
903  .AddPosition(x, y)
904  .AddResource(Res.Piece0)
905  .IsInteractive(true);
906 ```
907 - CodeGenerator takes arrays of IComponentCodeGenerator and IPoolCodeGenerator to generate files so you can easily provide your own custom code generators
908 - Added dialog for 'Migrate Matcher' menu item
909 
910 ##### Entitas.Unity.VisualDebugging
911 - Added DebugSystems
912 
913 ![Entitas.Unity.VisualDebugging-Systems](https://cloud.githubusercontent.com/assets/233700/7938066/ebe8b4b6-0943-11e5-9cec-ce694d624aca.png)
914 - Added HashSetTypeDrawer
915 
916 
917 # 0.13.0
918 
919 ##### Reminder
920 - Entitas 0.12.0 generates prefixed matchers based on the PoolAttribute and introduces some API changes. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
921 
922 ##### General
923 - Split into multiple modules and seperate projects. Entitas now consists of
924  - Entitas
925  - Entitas.CodeGenerator
926  - Entitas.Unity
927  - Entitas.Unity.CodeGenerator
928  - Entitas.Unity.VisualDebugging
929 
930 ##### Entitas.Unity
931 - Added IEntitasPreferencesDrawer to be able to extend the Entitas preferences panel
932 
933 ##### Entitas.Unity.CodeGenerator
934 - Entitas preferences internal keys changed. Please check your settings in projectRoot/Entitas.properties and update keys
935  - Entitas.CodeGenerator.GeneratedFolderPath -> Entitas.Unity.CodeGenerator.GeneratedFolderPath
936  - Entitas.CodeGenerator.Pools -> Entitas.Unity.CodeGenerator.Pools
937 
938 ##### Entitas.Unity.VisualDebugging
939 - Added support to set fields to null
940 - Added support to create a new instance if the value of a field is null
941 - Added IDefaultInstanceCreator to create default objects for unsupported types
942 - Added IDefaultInstanceCreator implementations for array, dictionary and string
943 - Added support to insert and remove elements from lists, arrays and dictionaries
944 
945 ![Entitas.Unity.VisualDebugging-ITypeDrawer](https://cloud.githubusercontent.com/assets/233700/7339538/226d8028-ec72-11e4-8971-53029fb20da8.png)
946 - Added name property to DebugPool
947 - Added VisualDebuggingConfig and VisualDebuggingPreferencesDrawer
948 
949 ![Entitas.Unity.VisualDebugging-Preferences](https://cloud.githubusercontent.com/assets/233700/7339599/ef454f34-ec74-11e4-9775-963f477bfb16.png)
950 - EntityDebugEditor can generate IDefaultInstanceCreator and ITypeDrawer implementations for unsupported types
951 - Fixed: handling null values
952 - Renamed ICustomTypeDrawer to ITypeDrawer
953 - Big refactoring to simplify drawing types
954 
955 ##### Other
956 - buildPackage.sh keeps uncompressed source files in bin folder
957 - Added updateDependencies.sh which updates all dependencies of Entitas.Unity.CodeGenerator, Entitas.Unity.VisualDebugging and tests
958 - Renamed and moved files and folders to be more consistent with the new project structure
959 
960 
961 # 0.12.0
962 
963 ##### Important
964 - Entitas 0.12.0 generates prefixed matchers based on the PoolAttribute and introduces some API changes. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
965 
966 ##### Entitas
967 - Added IStartSystem and pool.CreateStartSystem() extension
968 - Renamed pool.CreateSystem() to pool.CreateExecuteSystem()
969 - Added pool.CreateStartSystem()
970 - Added EntitasUpdater to automatically update the introduced matcher API changes
971 
972 ##### Visual Debugging
973 - Fixed null exceptions
974 - Added support for multi dimensional and jagged arrays
975 - Removed Debug.Log
976 
977 ##### Code Generator
978 - Added Code Generator PreferenceItem
979  - set generated folder path
980  - define multiple pools
981 
982 ![Entitas.Unity.CodeGenerator-Preferences](https://cloud.githubusercontent.com/assets/233700/7296726/8d74bb5a-e9c2-11e4-8324-10a0db7191ff.png)
983 - Added PoolAttributeGenerator
984 - Generated Matcher is now prefixed based on PoolAttribute (e.g. UIMatcher)
985 - Generating ToString() for matchers to print component name instead of index
986 - IndicesLookupGenerator generates indices ordered alphabetically
987 - Added TypeGenerator to streamline string generation from types
988 - Added support for nested classes
989 
990 ##### Other
991 - Added Properties and CodeGeneratorConfig to serialize Entitas preferences to file
992 - Removed warning in AbstractCompoundMatcher
993 - buildPackage.sh only builds when all tests are passing
994 - buildPackage.sh deletes meta files before creating zip archive
995 
996 
997 # 0.11.0
998 
999 ##### Reminder
1000 - Entitas 0.10.0 included lots of renaming. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md) if you are on < v0.10.0
1001 
1002 ##### Entitas
1003 - Added AllOfCompoundMatcher
1004 - Added AnyOfMatcher
1005 - Added AnyOfCompoundMatcher
1006 - Added NoneOfMatcher
1007 - Added NoneOfCompoundMatcher
1008 - Updated Entitas to handle any implementation of IMatcher
1009 - Fixed dispatching OnComponentAdded when replacing a non existing component with null
1010 - Optimizations
1011 
1012 ##### Visual Debugging
1013 - Added support for custom type drawers `ICustomTypeDrawer`
1014 - Added component folding and pooled entities count
1015 - Added groups to PoolDebugEditor
1016 
1017 ![Entitas.Unity.VisualDebugging-Groups](https://cloud.githubusercontent.com/assets/233700/6547980/e342b3fe-c5e9-11e4-8caa-77662a14679b.png)
1018 - Added support for IList
1019 
1020 ![Entitas.Unity.VisualDebugging-IList](https://cloud.githubusercontent.com/assets/233700/6547984/eecc3e3e-c5e9-11e4-98bb-700a84047abe.png)
1021 - UI improvements
1022 
1023 ##### Code Generator
1024 - Fixed typeShortcuts to use type.FullName to support UnityEngine.Object (conflicted with System.Object)
1025 - Added EntitasCodeGeneratorMenuItem
1026 
1027 ##### Other
1028 - Moved and renamed some folders
1029 - Added buildPackage.sh which creates a bin/Entitas.zip with all necessary source files
1030 
1031 
1032 # 0.10.0
1033 
1034 ##### Important
1035 - Entitas 0.10.0 includes lots of renaming. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md)
1036 
1037 ##### Entitas
1038 - Added empty ISystem and IExecuteSystem for more flexibility
1039 - Added public creationIndex to Entity
1040 - Observer is now on group not on pool
1041 - Removed WillBeRemovedSystem and observer
1042 - Added CreateSystem to PoolExtension
1043 - Added fast entities count call to Pool
1044 - Added creationIndex to entity.ToString()
1045 - pool.CreateEntity() and pool.DestroyEntity() are now virtual
1046 
1047 ##### Visual Debugging
1048 - Added VisualDebugging
1049 
1050 ##### Code Generator
1051 - Supports enums nested in components
1052 - Added option to [DontGenerate] to ignore generating index, too