web-service/apps/render/src/renderer/index.ts

49 lines
1.3 KiB
TypeScript

import {
Engine,
EngineEvents,
EnvironmentComponent,
EventEmitter,
LevelComponent,
ViewportComponent,
WebGLRenderer,
instanceCharacterObject,
} from '@freeblox/engine';
import { Vector2, Vector3 } from 'three';
export class BarebonesRenderer extends Engine {
public events = new EventEmitter<EngineEvents>();
override mount(element: HTMLElement): void {
this.element = element;
this.render = new WebGLRenderer(element, new Vector2(800, 800), {
alpha: true,
});
this.render.renderer.autoClear = false;
this.use(ViewportComponent);
this.use(EnvironmentComponent);
this.use(LevelComponent);
this.getComponent(ViewportComponent).setSize(800, 800);
}
}
(async function () {
const engine = new BarebonesRenderer();
const div = document.createElement('div');
document.body.appendChild(div);
document.body.style.margin = '0';
document.body.style.padding = '0';
engine.mount(div);
const level = engine.getComponent(LevelComponent);
const viewport = engine.getComponent(ViewportComponent);
const char = await instanceCharacterObject('test');
level.world.add(char);
viewport.camera.position.set(2, 6, 5);
viewport.camera.lookAt(new Vector3(0, 3.5, 0));
engine.render.renderer.setClearColor(0x000000, 0);
engine.render.render();
engine.stop();
})();