jsketcher/web/app/cad/scene/scenePlugin.ts
Val Erastov (xibyte) c5d21eb483 three js update
2020-07-13 17:03:10 -07:00

47 lines
1.1 KiB
TypeScript

import Viewer from './viewer';
import CadScene from './cadScene';
import {externalState, stream} from 'lstream';
import {AppTabsService} from "../dom/appTabsPlugin";
export function defineStreams({streams, services}) {
streams.cadScene = {
sceneRendered: stream(),
cameraMode: externalState(() => services.viewer.getCameraMode(), mode => services.viewer.setCameraMode(mode))
};
}
export function activate({streams, services}) {
let {dom} = services;
const onRendered = () => streams.cadScene.sceneRendered.next();
let viewer = new Viewer(dom.viewerContainer, onRendered);
services.viewer = viewer;
services.cadScene = new CadScene(viewer.sceneSetup.rootGroup);
// let sketcher3D = new Sketcher3D(dom.viewerContainer);
// services.viewer.setCameraMode(CAMERA_MODE.ORTHOGRAPHIC);
document.addEventListener('contextmenu', e => {
// @ts-ignore
if (e.target.closest('#viewer-container')) {
e.preventDefault();
}
});
}
export function dispose(ctx) {
ctx.services.viewer.dispose();
}
declare module 'context' {
interface ApplicationContext {
cadScene: CadScene;
viewer: Viewer;
}
}