yug-entity-component-system

Entity Component System


License
ISC
Install
npm install yug-entity-component-system@1.0.1

Documentation

yug-entity-component-system

Hello! I'm Roman, a JavaScript developer, and yug-entity-component-system is an efficient library based on the Entity Component System (ECS) pattern for handling data.

Features

  • Flexible architecture for managing entities, components, and systems.
  • Optimized algorithms for improved performance.
  • Easy integration into your JavaScript projects.

Installation

You can install yug-entity-component-system via npm:

npm install yug-entity-component-system

## Usage

To use yug-entity-component-system in your project, follow these steps:

Import the necessary classes from yug-entity-component-system:

import { Entity, Component, IteratingSystem, Family, Engine } from 'yug-entity-component-system';

Define your custom context:


// Define your custom context
interface Context {}


// Define the default context value
const defaultContext: Context = {};

Create entities and components:


// Extend the Entity class if needed
class MyEntity extends Entity {}


// Create a component with no logic
class MyComponent extends Component {
  x: number = 0;
  y: number = 0;

  constructor() {
    super(MyComponent);
  }
}

Implement systems to process components:

// Create a complex system
class MySystem extends IteratingSystem {
  constructor() {
    // Require entities with MyComponent
    super(MySystem, Family.all(MyComponent).get());
  }

  // Process the component
  protected async processEntity(entity: Entity, deltaTime: number) {
    const cmp = entity.getComponent<MyComponent>(MyComponent)!;
    cmp.x = 2;
    cmp.y = 2 * 2;
  }
}

Set up and run the engine:

// Create the engine
const engine = new Engine<MyEntity, Context>(defaultContext);

// Add a number of entities
for (let i = 0; i < 10; i++) {
  const entity = new MyEntity();
  entity.add(new MyComponent());
  engine.addEntity(entity);
}

// Add the system
engine.addSystem(new MySystem());

// Start the update
engine.update(0);