0.1.1 • Published 1 year ago
orion-ecs v0.1.1
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-ecsUsage
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, indefinitelyAPI 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 testContributing
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.