49 lines
1.3 KiB
TypeScript
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();
|
|
})();
|