*| [JavaECS](../../README.md) | [docs](../overview.md) | [entity](./dir.md) | EntityManager[]().md* # Entity Manager | **In this Section** | |-| | [About](#about) | | [Implementation](#implementation) | | [Constructors](#constructors) | | [Methods](#methods) | | [Fields](#fields) | | [Examples](#examples)| | [Notes](#notes)| ## About Controls adding and removing entities, and registration and unregistration of components to specific entities. ## Implementation Before attempting to use a system, it must be registered. Registration requires a call to `registerSystem(String systemName, ECSSystem system)`, with params of the `String name` and a object reference of the [ECSSystem](./ECSSystem.md). Using the object reference, a system can be invoked at any time. See [EntityManager.java](/BrychanD/JaveECS/src/branch/master/javaecs/src/main/java/nz/ac/massey/javaecs/EntityManager.java) ## Constructors ``` java protected EntityManager(){} ``` The default constructor initialises [unusedEntities](#unusedentities) to a new queue containing [maxSize](#maxsize) (`1024`) unique integers.
``` java protected EntityManager(int maxEntities){} ``` Initialises [unusedEntities](#unusedEntities) to a new queue containing `maxEntities` unique integers.
## Methods ### addEntity ``` java protected Integer addEntity(); ``` Pops the next available entity index off the queue, and returns its value. Returns `-1` if there is no remaining unused entities.
### getMaxSize ``` java protected Integer getMaxSize(); ``` Gets the current maximum entity count.
### getRegistrations ``` java protected BitSet getRegistrations(int entity); ``` Returns the `BitSet` of registrations the `entity` has. If the call results in an `IndexOutOfBoundsError`, then returns a new BitSet();
### registerComponent ``` java protected void registerComponent(int component, int entity); ``` Sets the bit `component` in [entityRegistrations](#entityRegistrations) for `entity` to `true`.
### removeEntity ``` java protected void removeEntity(int entity); ``` Adds the entity's index back to the unused queue, and clears the assigned registration bits #### Note >This function should not be called directly. Doing so will leave component data in memory, and will cause desynchronisation of the system registrations.
### resize ``` java protected boolean resize(int newSize, SystemManager systemManager, ComponentManager componentManager); ``` Resizes the currentSize of the entity manager. Moves elements above `newSize` if space is available. If the current defined elements won't fit, the operation returns `false` and the previous state is maintained.
### setRegistrations ``` java protected void setRegistrations(int entity, BitSet registrations); ``` Sets the entity's registrations to the provided BitSet
### unregisterComponent ``` java protected void unregisterComponent(int component, int entity); ``` Sets the bit `component` in [entityRegistrations](#entityRegistrations) for `entity` to `false`. Returns `true` if successful.
## Fields ### entityRegistrations ``` java List entityRegistrations; ``` The BitSet of registrations for each entity
### maxSize ``` java private int maxSize = 1024; ``` The current maximum entity count. Default `1024` ### unusedEntities ``` java Queue unusedEntities; ``` The queue of unused entity values