This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
token-gated-economy/the-matrix/js/interaction.js

40 lines
1008 B
JavaScript

import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
let controls;
let _canvas;
const _noCtxMenu = e => e.preventDefault();
export function initInteraction(camera, renderer) {
controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.05;
controls.screenSpacePanning = false;
controls.minDistance = 5;
controls.maxDistance = 80;
controls.maxPolarAngle = Math.PI / 2.1;
controls.target.set(0, 0, 0);
controls.update();
_canvas = renderer.domElement;
_canvas.addEventListener('contextmenu', _noCtxMenu);
}
export function updateControls() {
if (controls) controls.update();
}
/**
* Dispose OrbitControls event listeners.
* Called before context-loss teardown.
*/
export function disposeInteraction() {
if (_canvas) {
_canvas.removeEventListener('contextmenu', _noCtxMenu);
_canvas = null;
}
if (controls) {
controls.dispose();
controls = null;
}
}