orion-ecs
v0.1.1
Published
A lightweight and flexible Entity Component System (ECS) framework for JavaScript
Downloads
11
Maintainers
Readme
Orion ECS
Orion ECS is a lightweight and flexible Entity Component System (ECS) framework written in JavaScript. It provides a solid foundation for building games and other applications that can benefit from a component-based architecture.
Features
- Simple and intuitive API
- Efficient entity and component management
- Flexible system creation and execution
- Easy to integrate with existing projects
Installation
You can install Orion ECS using npm:
npm install orion-ecs
Usage
Here's a basic example of how to use Orion ECS:
import { Engine } from 'orion-ecs';
// Create a new engine
const game = new Engine();
// Define components
class Position {
constructor(x = 0, y = 0) {
this.x = x;
this.y = y;
}
}
class Velocity {
constructor(x = 0, y = 0) {
this.x = x;
this.y = y;
}
}
// Create a system
game.createSystem([Position, Velocity], {
act: function(entity, [position, velocity]) {
position.x += velocity.x;
position.y += velocity.y;
}
});
// Create an entity and add components
const entity = game.createEntity();
entity.addComponent(new Position(0, 0));
entity.addComponent(new Velocity(1, 1));
// Run the engine
game.run(16, 0); // Run every 16ms, indefinitely
API Reference
Engine
createEntity()
: Creates and returns a new entitycreateSystem(components, options)
: Creates a new systemrun(interval, maxSteps)
: Runs the engineperform()
: Performs a single step of the engine
Entity
addComponent(component)
: Adds a component to the entityremoveComponent(componentName)
: Removes a component from the entityhasComponent(componentName)
: Checks if the entity has a specific component
System
Systems are created using the createSystem
method of the engine. The options
object can include:
before()
: Function called before processing entitiesact(entity, ...components)
: Function called for each matching entityafter()
: Function called after processing entities
Testing
To run the tests:
npm test
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.