Published
Edited
Sep 4, 2021
Insert cell
Insert cell
Insert cell
## Code
---
Insert cell
bitECS = import('https://unpkg.com/bitecs@0.3.19-1/dist/index.mjs?module')
Insert cell
{
const Vector3 = { x: bitECS.Types.f32, y: bitECS.Types.f32, z: bitECS.Types.f32 }
const Position = bitECS.defineComponent(Vector3)
const Velocity = bitECS.defineComponent(Vector3)

const movementQuery = bitECS.defineQuery([Position, Velocity])

const movementSystem = bitECS.defineSystem((world) => {
const ents = movementQuery(world)
for (let i = 0; i < ents.length; i++) {
const eid = ents[i]
Position.x[eid] += Velocity.x[eid]
Position.y[eid] += Velocity.y[eid]
Position.z[eid] += Velocity.z[eid]
}
})

const timeSystem = bitECS.defineSystem(world => {
const { time } = world
const now = performance.now()
const delta = now - time.then
time.delta = delta
time.elapsed += delta
time.then = now
})

const pipeline = bitECS.pipe(movementSystem, timeSystem)

const world = bitECS.createWorld()
world.time = { delta: 0, elapsed: 0, then: performance.now() }
const eid = bitECS.addEntity(world);
bitECS.addComponent(world, Position, eid);
bitECS.addComponent(world, Velocity, eid);

setInterval(() => {
pipeline(world)
//console.log(movementQuery(world))
}, 16)
setInterval(()=> {
console.log("movementQuery", movementQuery(world))
},1000)
}
Insert cell
/**{
const world = bitecs.createWorld()
world.name = "MyWorld"

const eid = bitecs.addEntity(world);
const eid2 = bitecs.addEntity(world);
bitecs.removeEntity(world, eid2)

const Vector3 = { x: bitecs.Types.f32, y: bitecs.Types.f32, z: bitecs.Types.f32 }
const Position = bitecs.defineComponent(Vector3)
const Velocity = bitecs.defineComponent(Vector3)
const List = bitecs.defineComponent({ values: [bitecs.Types.f32, 3] }) // [type, length]
const Tag = bitecs.defineComponent()

bitecs.addComponent(world, Position, eid)
bitecs.addComponent(world, Velocity, eid)
bitecs.addComponent(world, List, eid)
bitecs.addComponent(world, Tag, eid)

Velocity.x[eid] = 1
Velocity.y[eid] = 1

List.values[eid].set([1,2,3])
const movementQuery = bitecs.defineQuery([Position, Velocity])
const ents = movementQuery(world)
const positionWithoutVelocityQuery = bitecs.defineQuery([ Position, bitecs.Not(Velocity) ])
const changedPositionQuery = bitecs.defineQuery([ bitecs.Changed(Position) ])

let entspos1 = changedPositionQuery(world)
console.log(entspos1) // => []

Position.x[eid]++

let entspos2 = changedPositionQuery(world)
console.log(entspos2) // => [0]
}**/
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more