@dcl/react-ecs
Version:
Decentraland ECS
26 lines (25 loc) • 745 B
JavaScript
import React from 'react';
import { createReconciler } from './reconciler';
/**
* @public
*/
export function createReactBasedUiSystem(engine, pointerSystem) {
const renderer = createReconciler(engine, pointerSystem);
let uiComponent = undefined;
function ReactBasedUiSystem() {
if (uiComponent)
renderer.update(React.createElement(uiComponent));
}
engine.addSystem(ReactBasedUiSystem, 100e3, '@dcl/react-ecs');
return {
destroy() {
engine.removeSystem(ReactBasedUiSystem);
for (const entity of renderer.getEntities()) {
engine.removeEntity(entity);
}
},
setUiRenderer(ui) {
uiComponent = ui;
}
};
}