Ir al contenido principal

Entidades

Introducción

Una entidad por sí misma no tiene comportamiento ni apariencia; simplemente actúa como un contenedor al que se pueden adjuntar componentes.

Creación de una entidad

El siguiente código muestra cómo crear una nueva entidad sin ningún componente

Ejemplo

import * as ecs from '@8thwall/ecs'

const eid = world.createEntity()

Borrar una entidad

El siguiente código muestra cómo eliminar una entidad existente dado su id:

Ejemplo

import * as ecs from '@8thwall/ecs'

world.deleteEntity(eid)

Añadir componentes a una entidad

El siguiente código muestra cómo añadir un componente incorporado a una entidad en tiempo de ejecución.

Ejemplo

const box = world.createEntity()

ecs.BoxGeometry.set(world, box, {
width: 1,
height: 1,
depth: 1,
})

ecs.Material.set(world, box, {
r: 255,
g: 255,
b: 255,
})

Crear y modificar relaciones

El siguiente código muestra cómo se pueden utilizar los métodos de ayuda incorporados para crear o modificar relaciones entre entidades.

Ejemplo

// Las entidades son automáticamente hijas de World.
const foo = world.createEntity()
const bar = world.createEntity()

// Establece foo como hijo de bar.
world.setParent(foo, bar)

// Obtiene el padre de bar. (devuelve un eid donde <= 0 es indefinido)
world.getParent(bar)

// Obtiene los hijos de foo. (devuelve un Generator)
world.getChildren(foo)

Funciones auxiliares

Existen varias funciones de ayuda para interactuar con la transformación de una entidad.

consejo

Las entidades se posicionan respecto a su padre. La función getWorldTransform() recupera la transformación del objeto en el espacio global, teniendo en cuenta todas las transformaciones de los padres.

world.setScale(eid, 1, 1, 1)
world.setPosition(eid, 1, 1, 1)
world.setQuaternion(eid, 0, 0, 0, 1)
world.normalizeQuaternion(eid)

const tempMatrix = ecs.math.mat4.i()
world.getWorldTransform(eid1, tempMatrix)

world.setTransform(eid2, tempMatrix)