jecs/docs/api/world.md
Marcus 49305f73dd
Add archetypes method (#89)
* Add method

* Remove unnecessary shadowed variable
2024-07-28 02:39:19 +02:00

2.4 KiB

Query

A World contains entities which have components. The World is queryable and can be used to get entities with a specific set of components.

Functions

new()

function World.new(): World

Creates a new world.

Example: ::: code-group

local world = jecs.World.new()
import { World } from "@rbxts/jecs";

const world = new World();

:::

entity()

function World:entity(): Entity -- The new entit.

Creates a new entity.

Example: ::: code-group

local entity = world:entity()
const entity = world.entity();

:: :

component()

function World:component<T>(): Entity<T> -- The new componen.

Creates a new component.

Example: ::: code-group

local Health = world:component() :: jecs.Entity<number>
const Health = world.component<number>();

:::

::: info You should use this when creating components.

For example, a Health type should be created using this. :::

get()

function World:get(
    entity: Entity, -- The entity
    ...: Entity<T> -- The types to fetch
): ... -- Returns the component data in the same order they were passed in

Returns the data for each provided type for the corresponding entity.

:::

add()

function World:add(
    entity: Entity, -- The entity
    id: Entity<T> -- The component ID to add
): ()

Adds a component ID to the entity.

This operation adds a single (component) id to an entity.

::: info This function is idempotent, meaning if the entity already has the id, this operation will have no side effects. :::

set()

function World:set(
    entity: Entity, -- The entity
    id: Entity<T>, -- The component ID to set
    data: T -- The data of the component's type
): ()

Adds or changes the entity's component.

query()

function World:query(
    ...: Entity<T> -- The component IDs to query with. Entities that satifies the conditions will be returned
): Query<...Entity<T>> -- Returns the Query which gets the entity and their corresponding data when iterated

Creates a query with the given component IDs.

Example: ::: code-group

for id, position, velocity in world:query(Position, Velocity) do
	-- Do something
end
for (const [id, position, velocity] of world.query(Position, Velocity) {
    // Do something
}

:::