1.6 KiB
1.6 KiB
| JavaECS | docs | system | system.md
System
In this section
About
The system runs operations that must be performed on its assoiciated components.
Typically, this is expected to be run every frame, though this is not a strict requirement.
A system must implement the Runnable interface (this is a limited case of inheritence in this library)
This allows a simpler implementation of any system, and also allows concurrency to be implemented with relative ease.
Examples of the system
include the health_system
; which reads the value of the entitie's health
component and ensures h > 0.
void health_system(){
for (i = 0; i < registeredComponents.size(); i++){
if (registeredComponents[i].health <= 0){
registeredComponents[i].dead = true;
if (registeredComponents[i].isPlayer){
GameOver();
}
}
}
}
Implementation
The systems are managed by the following code:
class SystemManager{
ECS baseECS;
int systemIndex;
public SystemManager(ECS baseECS){
this.baseECS = baseECS;
systemIndex = 0;
}
}
Examples
Notes
- Each system is represented by a name-index pair, and the action that gets executed every time the system is performed.
- This is implicitly sequential, but a custom system that performs concurrent actions can be implemented.
- Care must be taken to ensure all threads are synchronised before the concurrent system finishes its execution