Skip to content

Handle

Defined in: src/handle.ts:118

The base class that represents any kind of entity, may it be a simple entity, a component, or any other variation.

Although the type means Typescript doesn’t know the exact entity variation, it is known at runtime. Because of this, one that knows the exact variation can simply type cast it, like so:

const Person = component()
const bob = entity().set(Person)
query(Person).forEach((handle) => {
// We know for sure that we won't be giving the `Person` component to anything
// other than simple entities, so we can safely type cast it as one.
const entity = handle as EntityHandle
})

readonly id: RawId

Defined in: src/handle.ts:130

The numeric ID underlying this handle.

Meant to be used when one cannot use the higher-level abstractions provided by Toucan, such as storing an entity’s ID in an instance’s attribute, which cannot hold complex data structures.

In order to get back the high-level handle from an ID, use the resolveId function.

children(): Handle[]

Defined in: src/handle.ts:347

Gets all children (the sources of ChildOf relationships) for this entity.

Handle[]

const alice = entity()
const charlie = entity().set(pair(ChildOf, alice))
const bob = entity().set(pair(ChildOf, alice))
const children = alice.children() // [charlie, bob]

clear(): this

Defined in: src/handle.ts:262

Clears all components and relationship pairs from this entity, but does not despawn the entity.

this


components(): ComponentHandle<unknown>[]

Defined in: src/handle.ts:271

Returns all components associated with this entity.

ComponentHandle<unknown>[]


despawn(): void

Defined in: src/handle.ts:449

Completely deletes this entity from the world.

void


exists(): boolean

Defined in: src/handle.ts:358

Returns true if this entity exists.

boolean


get<Args>(…componentsOrPairs): Flatten<Nullable<InferValues<Args>>>

Defined in: src/handle.ts:216

Retrieves the values of up to 4 components or relationship pairs on this entity.

Missing components or pairs will return undefined.

Args extends OneUpToFour<Pair<unknown> | ComponentHandle<unknown>>

Args

Flatten<Nullable<InferValues<Args>>>

const name = myEntity.get(Name)
const [position, velocity] = myEntity.get(Position, Velocity)
const carCount = myEntity.get(pair(Owns, car))

has(…componentsOrPairs): boolean

Defined in: src/handle.ts:245

Returns true if this entity has all of the specified components or relationship pairs.

A maximum of 4 components or pairs can be checked at once.

OneUpToFour<Pair<unknown> | ComponentHandle<unknown>>

boolean

const IsDead = component()
const Owns = component()
const house = entity()
const bob = entity()
.set(IsDead)
.set(pair(Owns, house))
if (bob.has(IsDead, pair(Owns, house))) {
// Why don't we rob Bob's house?
}

parent(): Handle | undefined

Defined in: src/handle.ts:330

Gets the parent (the target of a ChildOf relationship) for this entity, if such a relationship exists.

Handle | undefined

const alice = entity()
const charlie = entity().set(pair(ChildOf, alice))
const parent = charlie.parent() // alice

relationships(): Pair<unknown>[]

Defined in: src/handle.ts:292

Returns all relationship pairs associated with this entity.

Pair<unknown>[]


remove(componentOrPair): this

Defined in: src/handle.ts:252

Removes a component or relationship pair from this entity.

Pair<unknown> | ComponentHandle<unknown>

this


set(tagComponent): this

Defined in: src/handle.ts:145

Assigns a tag component to this entity.

ComponentHandle<undefined>

this

const IsAlive = component()
myEntity.set(IsAlive)

set<V>(component, value): this

Defined in: src/handle.ts:159

Assigns a component and its value to this entity.

V

ComponentHandle<V>

NoInfer

this

const Health = component<number>()
const Stamina = component<number>()
entity()
.set(Health, 100)
.set(Stamina, 50)

set(tagPair): this

Defined in: src/handle.ts:172

Assigns a relationship pair to this entity.

Pair<undefined>

this

const Likes = component()
const bob = entity()
const alice = entity()
.set(pair(Likes, bob))

set<P>(pair, value): this

Defined in: src/handle.ts:188

Assigns a relationship pair and its value to this entity.

P extends Pair<unknown>

P

InferValue<P>

this

const Owns = component<number>()
const car = entity()
const perfume = entity()
const alice = entity()
.set(pair(Owns, car), 2)
.set(pair(Owns, perfume), 5)

targetOf(relation, nth?): Handle | undefined

Defined in: src/handle.ts:383

Returns the target entity of a relationship pair from this entity.

If there are multiple targets for the given relationship, the nth index can be specified (starting at 0).

ComponentHandle

number = 0

Handle | undefined

const Likes = component()
const bob = entity()
const charlie = entity()
const alice = entity()
.set(pair(Likes, bob))
.set(pair(Likes, charlie))
// The order of targets is not guaranteed.
const maybeBob = alice.targetOf(Likes, 0)
const maybeCharlie = alice.targetOf(Likes, 1)

targetsOf(relation): Handle[]

Defined in: src/handle.ts:404

Returns all target entities of a relationship pair from this entity.

ComponentHandle

Handle[]

const Likes = component()
const bob = entity()
const charlie = entity()
const alice = entity()
.set(pair(Likes, bob))
.set(pair(Likes, charlie))
const likedEntities = alice.targetsOf(Likes)

toString(): string

Defined in: src/handle.ts:315

Gets the label assigned to this entity.

string