Add world or scene as a root ECS object
Given that pex-renderer is no longer Renderer but generic ECS machine should the main object be called World or Scene?
import createWorld from "../index.js";
const world = createWorld() //OK
world.addSystem(renderer.geometrySystem()); //OK
world.addSystem(renderer.transformSystem()); //OK
world.addSystem(renderer.renderSystem()); //OK
const lineBuilder = world.entity({ //OK
transform: world.transform(), //Ugh
geometry: world.geometry({ ... }), //Ugh
material: world.material({ ... }), //Ugh
});
world.add(lineBuilder) //OK
If we would get rid of component constructors and allow
const lineBuilder = world.entity({ //OK
transform: { positions: [0, 0, 0] }
geometry: createCube(),
material: { baseColor: [1, 0, 0, 1] }
});
how does one discovers possible components and their values?
Given that pex-renderer is no longer Renderer but generic ECS machine should the main object be called World or Scene?
Do we need a separate pex-ecs for world/entity adding?
import createContext from "pex-context";
import createWorld from "pex-ecs"; // or if too many packages, import { createWorld } from "pex-renderer"
import { systems as rendererSystems } from "pex-renderer";
const ctx = createContext()
const world = createWorld({ ctx }) // world properties
world.addSystem(rendererSystems.geometry());
world.addSystem(rendererSystems.transform());
world.addSystem(rendererSystems.render());
If we would get rid of component constructors and allow
const lineBuilder = world.entity({ //OK transform: { positions: [0, 0, 0] } geometry: createCube(), material: { baseColor: [1, 0, 0, 1] } });how does one discovers possible components and their values?
I am all in favour of using plain object and removing renderer.material() calls that are a bit heavy to parse.
i don't see value in completely separate pex-ecs (I can see use cases like html canvas projects) but i would just use pex-renderer createWorld with 100% custom systems first as a test case. systems namespace is fine although i prefer flat apis. Any particular reasons for world.geometrySystem() -> rendererSystem.geometry() ?