vertecs
Version:
A typescript entity-component-system framework
48 lines (41 loc) • 1.36 kB
text/typescript
import { PerspectiveCamera } from "three";
import { initializeBoilerplate, spawnCube, spawnSphere } from "./Boilerplate";
import { ThreeCamera, Transform } from "../../src";
const ecsManager = await initializeBoilerplate();
const camera = ecsManager.createEntity({ name: "camera" });
camera.addComponent(new Transform([90, 20, 0]));
const threeCameraComponent = new ThreeCamera(
new PerspectiveCamera(90, window.innerWidth / window.innerHeight, 1, 200),
ecsManager.createEntity(),
undefined,
undefined,
true
);
camera.addComponent(threeCameraComponent);
for (let i = 0; i < 200; i++) {
const scale = [
Math.random() + 0.4 * 2,
Math.random() + 0.4 * 2,
Math.random() + 0.4 * 2,
] as [number, number, number];
const position = [
Math.random() * 10 - 5,
Math.random() * 8 + 2 + i * (Math.random() * 3.6 + 0.4),
Math.random() * 10 - 5,
] as [number, number, number];
const rotation = [
Math.random() * 360,
Math.random() * 360,
Math.random() * 360,
] as [number, number, number];
switch (Math.floor(Math.random() * 2)) {
case 0:
spawnCube(position, scale, rotation);
break;
case 1:
spawnSphere(position, Math.random() + 0.3);
break;
default:
break;
}
}