bd-admin
Version:
一款能根据需求快速配置vue后台管理的脚手架
43 lines (41 loc) • 1.23 kB
text/typescript
import three from "./Three";
import ModelThree from "./ModelThree";
import SpriteThree from "./SpriteThree";
import { Params } from "./interface/index";
import * as THREE from "three";
import { openDB } from "./indexdb";
export default class SLThree {
public readonly Three: three;
public readonly ModelThree: ModelThree;
public readonly SpriteThree: SpriteThree;
constructor(params: Params) {
let db;
if (openDB) {
openDB("threeDB", "model", 2)!.then((v) => {
db = v;
});
}
this.Three = new three(params);
const scene = this.Three.scene;
const camera = this.Three.camera!;
const renderer = this.Three.renderer!;
this.ModelThree = new ModelThree(scene, camera, renderer, params, db);
this.SpriteThree = new SpriteThree(scene, camera, {
width: this.Three.width,
height: this.Three.height,
});
let fps = 0;
const clock = new THREE.Clock();
const render = () => {
const dt = clock.getDelta();
fps = Math.floor(1 / dt);
this.Three.render(dt);
this.ModelThree.render(dt);
requestAnimationFrame(render);
};
render();
window.addEventListener("resize", () => {
this.Three.resize();
});
}
}