Bind events on enter

This commit is contained in:
adam-urbanczyk
2021-06-26 18:39:31 +02:00
committed by Marcus Boyd
parent 4c5816dd70
commit 267d22593f

View File

@ -77,7 +77,6 @@ interactor.setInteractorStyle(interact_style);
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
document.body.appendChild(rootContainer); document.body.appendChild(rootContainer);
interactor.bindEvents(document.body);
}); });
function updateViewPort(element, renderer) { function updateViewPort(element, renderer) {
@ -114,6 +113,7 @@ document.addEventListener('scroll', recomputeViewports);
function enterCurrentRenderer(e) { function enterCurrentRenderer(e) {
interactor.bindEvents(document.body);
interact_style.setEnabled(true); interact_style.setEnabled(true);
interactor.setCurrentRenderer(RENDERERS[e.target.id]); interactor.setCurrentRenderer(RENDERERS[e.target.id]);
} }
@ -121,6 +121,7 @@ function enterCurrentRenderer(e) {
function exitCurrentRenderer(e) { function exitCurrentRenderer(e) {
interactor.setCurrentRenderer(null); interactor.setCurrentRenderer(null);
interact_style.setEnabled(false); interact_style.setEnabled(false);
interactor.unbindEvents();
} }
@ -136,17 +137,17 @@ function applyStyle(element) {
window.addEventListener('load', resize); window.addEventListener('load', resize);
function render(data, parent_element, ratio){ function render(data, parent_element, ratio){
// Initial setup // Initial setup
const renderer = vtk.Rendering.Core.vtkRenderer.newInstance({ background: [1, 1, 1 ] }); const renderer = vtk.Rendering.Core.vtkRenderer.newInstance({ background: [1, 1, 1 ] });
// iterate over all children children // iterate over all children children
for (var el of data){ for (var el of data){
var trans = el.position; var trans = el.position;
var rot = el.orientation; var rot = el.orientation;
var rgba = el.color; var rgba = el.color;
var shape = el.shape; var shape = el.shape;
// load the inline data // load the inline data
var reader = vtk.IO.XML.vtkXMLPolyDataReader.newInstance(); var reader = vtk.IO.XML.vtkXMLPolyDataReader.newInstance();
const textEncoder = new TextEncoder(); const textEncoder = new TextEncoder();
@ -162,30 +163,30 @@ function render(data, parent_element, ratio){
// set color and position // set color and position
actor.getProperty().setColor(rgba.slice(0,3)); actor.getProperty().setColor(rgba.slice(0,3));
actor.getProperty().setOpacity(rgba[3]); actor.getProperty().setOpacity(rgba[3]);
actor.rotateZ(rot[2]*180/Math.PI); actor.rotateZ(rot[2]*180/Math.PI);
actor.rotateY(rot[1]*180/Math.PI); actor.rotateY(rot[1]*180/Math.PI);
actor.rotateX(rot[0]*180/Math.PI); actor.rotateX(rot[0]*180/Math.PI);
actor.setPosition(trans); actor.setPosition(trans);
renderer.addActor(actor); renderer.addActor(actor);
}; };
//add the container //add the container
const container = applyStyle(document.createElement("div")); const container = applyStyle(document.createElement("div"));
parent_element.appendChild(container); parent_element.appendChild(container);
container.addEventListener('mouseenter', enterCurrentRenderer); container.addEventListener('mouseenter', enterCurrentRenderer);
container.addEventListener('mouseleave', exitCurrentRenderer); container.addEventListener('mouseleave', exitCurrentRenderer);
container.id = ID; container.id = ID;
renderWindow.addRenderer(renderer); renderWindow.addRenderer(renderer);
updateViewPort(container, renderer); updateViewPort(container, renderer);
renderer.resetCamera(); renderer.resetCamera();
RENDERERS[ID] = renderer; RENDERERS[ID] = renderer;
ID++; ID++;
}; };
""" """