137 lines
3.3 KiB
Markdown
137 lines
3.3 KiB
Markdown
*| [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.
|
|
|
|
<br>
|
|
|
|
``` java
|
|
protected EntityManager(int maxEntities){}
|
|
```
|
|
Initialises [unusedEntities](#unusedEntities) to a new queue containing `maxEntities` unique integers.
|
|
|
|
<br>
|
|
|
|
## 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.
|
|
|
|
<br>
|
|
|
|
### getMaxSize
|
|
``` java
|
|
protected Integer getMaxSize();
|
|
```
|
|
Gets the current maximum entity count.
|
|
|
|
<br>
|
|
|
|
### 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();
|
|
|
|
<br>
|
|
|
|
### registerComponent
|
|
``` java
|
|
protected void registerComponent(int component, int entity);
|
|
```
|
|
Sets the bit `component` in [entityRegistrations](#entityRegistrations) for `entity` to `true`.
|
|
|
|
<br>
|
|
|
|
### 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.
|
|
|
|
<br>
|
|
|
|
### 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.
|
|
|
|
<br>
|
|
|
|
### setRegistrations
|
|
``` java
|
|
protected void setRegistrations(int entity, BitSet registrations);
|
|
```
|
|
Sets the entity's registrations to the provided BitSet
|
|
|
|
<br>
|
|
|
|
### unregisterComponent
|
|
``` java
|
|
protected void unregisterComponent(int component, int entity);
|
|
```
|
|
Sets the bit `component` in [entityRegistrations](#entityRegistrations) for `entity` to `false`.
|
|
|
|
Returns `true` if successful.
|
|
|
|
<br>
|
|
|
|
## Fields
|
|
### entityRegistrations
|
|
``` java
|
|
List<BitSet> entityRegistrations;
|
|
```
|
|
The BitSet of registrations for each entity
|
|
|
|
<br>
|
|
|
|
### maxSize
|
|
``` java
|
|
private int maxSize = 1024;
|
|
```
|
|
The current maximum entity count.
|
|
|
|
Default `1024`
|
|
|
|
|
|
### unusedEntities
|
|
``` java
|
|
Queue<Integer> unusedEntities;
|
|
```
|
|
The queue of unused entity values
|
|
|