1.1.13 • Published 11 months ago

yug-entity-component-system v1.1.13

Weekly downloads
-
License
ISC
Repository
github
Last release
11 months ago

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);
1.1.9

11 months ago

1.1.8

11 months ago

1.1.12

11 months ago

1.1.11

11 months ago

1.1.10

11 months ago

1.1.13

11 months ago

1.1.1

1 year ago

1.0.9

1 year ago

1.1.7

1 year ago

1.0.8

2 years ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.0.10

1 year ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago