local jecs = require("@jecs") local world = jecs.World.new() local Position = world:component() local Walking = world:component() local Name = world:component() -- Create an entity with name Bob local bob = world:entity() -- The set operation finds or creates a component, and sets it. world:set(bob, Position, Vector3.new(10, 20, 30)) -- Name the entity Bob world:set(bob, Name, "Bob") -- The add operation adds a component without setting a value. This is -- useful for tags, or when adding a component with its default value. world:add(bob, Walking) -- Get the value for the Position component local pos = world:get(bob, Position) print(`\{{pos.X}, {pos.Y}, {pos.Z}\}`) -- Overwrite the value of the Position component world:set(bob, Position, Vector3.new(40, 50, 60)) local alice = world:entity() -- Create another named entity world:set(alice, Name, "Alice") world:set(alice, Position, Vector3.new(10, 20, 30)) world:add(alice, Walking) -- Remove tag world:remove(alice, Walking) -- Iterate all entities with Position for entity, p in world:query(Position) do print(`{entity}: \{{p.X}, {p.Y}, {p.Z}\}`) end -- Output: -- {10, 20, 30} -- Alice: {10, 20, 30} -- Bob: {40, 50, 60}