1.6 KiB

| JavaECS | docs | system | system.md

System

In this section

About

Implementation

Examples

Notes

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