diff --git a/Entitas upgrade guide.txt b/EntitasUpgradeGuide.md similarity index 54% rename from Entitas upgrade guide.txt rename to EntitasUpgradeGuide.md index b37206fb8..68ae0171e 100644 --- a/Entitas upgrade guide.txt +++ b/EntitasUpgradeGuide.md @@ -5,6 +5,60 @@ https://bugzilla.xamarin.com/show_bug.cgi?id=25360 Please be aware of that issue and use any other text editor for that task. +# Entitas 0.12.0 upgrade guide + +Entitas 0.12.0 generates prefixed matchers based on the PoolAttribute and introduces some +API changes. In your existing project with a Entitas version < 0.12.0 manually rename the +following classes and methods. + +## Before installing Entitas 0.12.0 + +#### Rename + + pool.CreateSystem() -> pool.CreateExecuteSystem() + +Now that you're prepared for integrating the latest version, delete your existing version +of Entitas, EntitasCodeGenerator and EntitasUnity. + +#### Delete + + Entitas + EntitasCodeGenerator + EntitasUnity + +## Install Entitas 0.12.0 + +#### Setup Entitas Preferences + + Open the Unity preference panel and select Entitas. Check and update the path to the folder where + the code generator will save all generated files. If you are using the `PoolAttribue` in your components, + add all custom pool names used in your application. Make sure that all existing custom PoolAttribues call + the base constructor with the same name as the class (without 'Attribute'). + If you are not using the `PoolAttribue` in your components, you can skip this process. + +```cs +using Entitas.CodeGenerator; + +public class CoreGameAttribute : PoolAttribute { + public CoreGameAttribute() : base("CoreGame") { + } +} +``` + +#### Code Generator + + Use the code generator and generate + +#### Update API + + Click the MenuItem "Entias/Update API". All occurrences of the old `Matcher` will be updated + to the new version, which is prefixed based on the `PoolAttribute`. + +#### Delete + + Delete all custom PoolAttributes + + # Entitas 0.10.0 upgrade guide Beside features, Entitas 0.10.0 includes lots of renaming. If your current Entitas @@ -13,8 +67,9 @@ to speed up the integration of the latest version of Entitas. In your existing project with a Entitas version < 0.10.0 manually rename the following classes and methods. +## Before installing Entitas 0.10.0 -# RENAME +#### Rename EntityRepository -> Pool EntityRepository.GetCollection() -> Pool.GetGroup() @@ -32,34 +87,30 @@ classes and methods. IReactiveSubEntitySystem -> IReactiveSystem ReactiveEntitySystem -> ReactiveSystem - -# DELETE +#### Delete EntityWillBeRemovedEntityRepositoryObserver -> DELETE IReactiveSubEntityWillBeRemovedSystem -> DELETE ReactiveEntityWillBeRemovedSystem -> DELETE - Now that you're prepared for integrating the latest version, delete your existing version of Entitas, EntitasCodeGenerator and ToolKit. -# DELETE +#### Delete Entitas EntitasCodeGenerator ToolKit (unless you use classes from ToolKit. The new version of Entitas doesn't depend on ToolKit anymore) -Now add Entitas 0.10.0 and EntitasCodeGenerator. - +## Install Entitas 0.10.0 -# FIX REMAINING ISSUES +#### Fix remaining issues IReactiveSubEntityWillBeRemovedSystem - Consider implementing ISystem & ISetPool and use group.OnEntityWillBeRemoved += foobar; +#### Code Generator -# CODE GENERATOR - - Use the code generator again + Use the code generator and generate diff --git a/README.md b/README.md index 2b74a10ed..0dcabc005 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ After you've read the readme, take a look at the [example project](https://githu ### Entity You can imagine an entity as a container holding data to represent certain objects in your application. You can add, replace or remove data from entities in form of `IComponent`. Entities have corresponding events to let you know if components were added, replaced or removed. -Here's how you can interact with an entity. To enjoy a more natural and more readable API, simply use the code generator that comes with Entitas (see [Code Generator](#Code-Generator)). In this example you can see some generated methods for `PositionComponent`, `HealthComponent`, `MovableComponent`. +Here's how you can interact with an entity. To enjoy a more natural and more readable API, simply use the code generator that comes with Entitas (see [Code Generator](#code-generator)). In this example you can see some generated methods for `PositionComponent`, `HealthComponent`, `MovableComponent`. ```cs entity.AddPosition(0, 0, 0); entity.AddHealth(100); @@ -58,7 +58,7 @@ foreach (var e in entities) { ``` ### Group -Groups enables super quick filtering on all the entities in the pool. They are continuously updated when entities change and can return groups of entities instantly. You have thousands of entities and want only those who have a `PositionComponent`? Just ask the pool for this group, it already has the result waiting for you in no time. +Groups enable super quick filtering on all the entities in the pool. They are continuously updated when entities change and can return groups of entities instantly. You have thousands of entities and want only those who have a `PositionComponent`? Just ask the pool for this group, it already has the result waiting for you in no time. ```cs pool.GetGroup(Matcher.Position).GetEntities(); ``` diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index bc7842149..1c7ee73b9 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,7 +1,43 @@ +# 0.12.0 + +##### Important +- 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) + +##### General +- Added IStartSystem and pool.CreateStartSystem() extension +- Renamed pool.CreateSystem() to pool.CreateExecuteSystem() +- Added pool.CreateStartSystem() +- Added EntitasUpdater to automatically update the introduced matcher API changes + +##### Visual Debugging +- Fixed null exceptions +- Added support for multi dimensional and jagged arrays +- Removed Debug.Log + +##### Code Generator +- Added Code Generator PreferenceItem + - set generated folder path + - define multiple pools + +![entitas-preferences](https://cloud.githubusercontent.com/assets/233700/7296726/8d74bb5a-e9c2-11e4-8324-10a0db7191ff.png) +- Added PoolAttributeGenerator +- Generated Matcher is now prefixed based on PoolAttribute (e.g. UIMatcher) +- Generating ToString() for matchers to print component name instead of index +- IndicesLookupGenerator generates indices ordered alphabetically +- Added TypeGenerator to streamline string generation from types +- Added support for nested classes + +##### Other +- Added Properties and CodeGeneratorConfig to serialize Entitas preferences to file +- Removed warning in AbstractCompoundMatcher +- buildPackage.sh only builds when all tests are passing +- buildPackage.sh deletes meta files before creating zip archive + + # 0.11.0 ##### Reminder -- Entitas 0.10.0 included lots of renaming. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/Entitas%20upgrade%20guide.txt) if you are on < v0.10.0 +- 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 ##### General - Added AllOfCompoundMatcher @@ -32,10 +68,11 @@ - Moved and renamed some folders - Added buildPackage.sh which creates a bin/Entitas.zip with all necessary source files + # 0.10.0 ##### Important -- Entitas 0.10.0 includes lots of renaming. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/Entitas%20upgrade%20guide.txt) +- Entitas 0.10.0 includes lots of renaming. Please follow the [Entitas upgrade guide](https://github.com/sschmid/Entitas-CSharp/blob/master/EntitasUpgradeGuide.md) ##### General - Added empty ISystem and IExecuteSystem for more flexibility diff --git a/bin/Entitas.zip b/bin/Entitas.zip index 610e8b4b1..33ea46262 100644 Binary files a/bin/Entitas.zip and b/bin/Entitas.zip differ