1.1.10 • Published 12 months ago

@h4v0c/ecs v1.1.10

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

@h4v0c/ecs (WiP)

A simple Entity-Component system, meaning, it is NOT a 'Entities-Components-Systems' system, it is an 'Entity-Component' system. This means that Components are both the Data Container and the System (via: Component.update() method).

Usage:

import { ComponentUpdatePriority, CreateEntity, UpdateEntities } from '@h4v0c/ecs';

// Define components:
class MyComponent extends Component {
    constructor(count = 10) {
        super();
        this.count = count;
    }

    update(entity) {
        console.debug(`${entity.name}: MyComponent.count: ${this.count}`);
    }
}

class MyOtherComponent extends Component {
    constructor(value = 'some_value') {
        super();
        this.value = value;
    }

    update(entity, { time }) {
        console.debug(`${entity.name}: MyOtherComponent.value: ${this.value}:`, time);
    }
}

// Create an Entity:
const myEntity = CreateEntity();
myEntity.name = 'My_Entity';

// Add Component(s):

// syntax: addComponent(
//     class: (MyComponent),
//     priority: enum ComponentUpdatePriority { FIRST, LAST_FIRST, ANY, FIRST_LAST, LAST }
//     args?: any (in form: { argName: argValue, }, will set member 'argName' to value 'argValue')
// );

myEntity.addComponent(MyComponent);
myEntity.addComponent(MyOtherComponent, ComponentUpdatePriority.FIRST, { value: 'new_value' });

// In main loop:
let time = 5;

while (time--) {
    UpdateEntities({ time }); // time is passed to all Component.update methods
}

Output:

My_Entity: MyOtherComponent.value: new_value: 4
My_Entity: MyComponent.count: 10
My_Entity: MyOtherComponent.value: new_value: 3
My_Entity: MyComponent.count: 10
My_Entity: MyOtherComponent.value: new_value: 2
My_Entity: MyComponent.count: 10
My_Entity: MyOtherComponent.value: new_value: 1
My_Entity: MyComponent.count: 10
My_Entity: MyOtherComponent.value: new_value: 0
My_Entity: MyComponent.count: 10
1.1.10

12 months ago

1.1.9

12 months ago

1.1.8

12 months ago

1.1.7

12 months ago

1.1.6

12 months ago

1.1.5

12 months ago

1.1.4

12 months ago

1.1.3

12 months ago

1.1.2

12 months ago

1.1.1

12 months ago

1.1.0

12 months ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago