45 lines
1.9 KiB
Markdown
Raw Normal View History

*| [JavaECS](../../README.md) | [docs](../overview.md) | [entity](./dir.md) | entity[]().md*
2021-06-03 13:25:17 +12:00
# Entity
2021-06-03 13:25:17 +12:00
### Contents
[About](#About)
[Usage](#Usage)
[Notes](#Notes)
## About
An 'entity' is a unique ID.
For most implementations, it makes sense to use a simple integer value - usually in a packed array (*reuses the most minimal value it can*)
E.g.: The ID 101 would be the next selected value for a new entity.
>100 | 101 | 102| 103| 104| ...|
>:----:|:-----:|:----:|:----:|:----:|:----|
2021-06-03 15:10:29 +12:00
><span style="color:gray">used|<span style="color:white">unused|<span style="color:gray">used|<span style="color:gray">used|<span style="color:white">unused| <span style="color:gray">....|
2021-06-03 15:09:31 +12:00
2021-06-03 13:25:17 +12:00
<br>
**This ID represents a specific instance of a game object**
e.g. character, vehicle, effect etc.
___An entity contains no further data.___
2021-06-03 13:30:17 +12:00
In order to be useful, its identifier must be registered to one or more [components](../component/component.md).
2021-06-03 13:25:17 +12:00
Entities are also initialised with a Java [BitSet](). Each bit represents the index of a component, to determine which component an entity is registered to
2021-06-03 13:25:17 +12:00
## Usage
*some specific usage info here*
``` java
void todo();
```
## Notes
2021-06-03 13:30:17 +12:00
* The only requirement for a Entity is that it has a unique ID. An [entity manager](../manager/entity_manager.md) could implement a more complex ID system such as using a packed array for only a small region of IDs, or using named IDs by use of a dictionary or ordered hash-map
2021-06-03 13:25:17 +12:00
* The maximum number of entities is limited by the size of the container used to store it. E.g., for a 32-bit unsigned integer, there are ~4.3 billion ID's available. But keep in mind that such a large amount of IDs will take significant time for each system to consider.
* LinkedList is used to initialise the arrays, as a linked list is not limited to a maximum size: (https://stackoverflow.com/questions/3767979/how-much-data-can-a-list-can-hold-at-the-maximum)