Skip to content

createSystem() ​

创建一个 Engine-global System Definition。

签名 ​

ts
function createSystem<T>(
  name: string,
  setup: (context: SystemContext) => T,
  options?: {
    enabled?: boolean;
    order?: number;
  },
): SystemDefinition<T>;

setup 严格同步执行一次,返回的业务 identity 由 engine.addSystem 原样返回。

ts
const MotionSystem = createSystem('motion', ({
  engine,
  onDestroy,
  onUpdate,
}) => {
  const query = engine.world.createQuery(Velocity);
  onUpdate(({ delta, views }) => {
    query.forEach(entity => update(entity, delta));
  });
  onDestroy(() => console.log('removed'));
  return { query };
}, { enabled: true, order: 0 });

const motion = engine.addSystem(MotionSystem);
engine.setSystemEnabled(MotionSystem, false);
engine.removeSystem(MotionSystem);

SystemContext 还提供 onLateUpdate/onResize/onEnable/onDisable 和 typed onEvent/onceEvent/emitEvent。Definition order 同时决定 update 和 late-update 顺序。

相关 ​

基于 MIT 协议发布(内部使用)