u
This commit is contained in:
83
src/index.js
83
src/index.js
@@ -137,6 +137,9 @@ async function init() {
|
||||
// Setup manual print button
|
||||
setupPrintButton();
|
||||
|
||||
// Setup FPV button
|
||||
setupFPVButton();
|
||||
|
||||
// Setup FPV controls
|
||||
setupFPVControls();
|
||||
|
||||
@@ -396,6 +399,24 @@ function setupPrintButton() {
|
||||
console.log('🖨️ Manual print button set up');
|
||||
}
|
||||
|
||||
function setupFPVButton() {
|
||||
const fpvBtn = document.getElementById('fpv-btn');
|
||||
if (!fpvBtn) {
|
||||
console.warn('FPV button not found');
|
||||
return;
|
||||
}
|
||||
|
||||
fpvBtn.addEventListener('click', () => {
|
||||
if (!fpvMode) {
|
||||
enterFPVMode();
|
||||
} else {
|
||||
exitFPVMode();
|
||||
}
|
||||
});
|
||||
|
||||
console.log('🚶 FPV button set up');
|
||||
}
|
||||
|
||||
function setupLighting() {
|
||||
// Ambient light for overall illumination - increased intensity
|
||||
const ambientLight = new THREE.AmbientLight(0x404040, 1.2);
|
||||
@@ -822,10 +843,14 @@ function setupFPVControls() {
|
||||
function onKeyDown(event) {
|
||||
switch (event.code) {
|
||||
case 'KeyF':
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
if (!fpvMode) {
|
||||
enterFPVMode();
|
||||
} else {
|
||||
exitFPVMode();
|
||||
}
|
||||
break;
|
||||
return false;
|
||||
case 'Escape':
|
||||
if (fpvMode) {
|
||||
event.preventDefault();
|
||||
@@ -835,16 +860,16 @@ function onKeyDown(event) {
|
||||
}
|
||||
break;
|
||||
case 'KeyW':
|
||||
fpvControls.moveForward = true;
|
||||
if (fpvMode) fpvControls.moveForward = true;
|
||||
break;
|
||||
case 'KeyA':
|
||||
fpvControls.moveLeft = true;
|
||||
if (fpvMode) fpvControls.moveLeft = true;
|
||||
break;
|
||||
case 'KeyS':
|
||||
fpvControls.moveBackward = true;
|
||||
if (fpvMode) fpvControls.moveBackward = true;
|
||||
break;
|
||||
case 'KeyD':
|
||||
fpvControls.moveRight = true;
|
||||
if (fpvMode) fpvControls.moveRight = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -852,16 +877,16 @@ function onKeyDown(event) {
|
||||
function onKeyUp(event) {
|
||||
switch (event.code) {
|
||||
case 'KeyW':
|
||||
fpvControls.moveForward = false;
|
||||
if (fpvMode) fpvControls.moveForward = false;
|
||||
break;
|
||||
case 'KeyA':
|
||||
fpvControls.moveLeft = false;
|
||||
if (fpvMode) fpvControls.moveLeft = false;
|
||||
break;
|
||||
case 'KeyS':
|
||||
fpvControls.moveBackward = false;
|
||||
if (fpvMode) fpvControls.moveBackward = false;
|
||||
break;
|
||||
case 'KeyD':
|
||||
fpvControls.moveRight = false;
|
||||
if (fpvMode) fpvControls.moveRight = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -908,6 +933,13 @@ function enterFPVMode() {
|
||||
fpvControls.rotation.y = 0;
|
||||
fpvControls.velocity.set(0, 0, 0);
|
||||
|
||||
// Update button text
|
||||
const fpvBtn = document.getElementById('fpv-btn');
|
||||
if (fpvBtn) {
|
||||
fpvBtn.textContent = 'Exit FPV Mode';
|
||||
fpvBtn.style.background = '#FF5722';
|
||||
}
|
||||
|
||||
// Request pointer lock
|
||||
renderer.domElement.requestPointerLock();
|
||||
|
||||
@@ -916,15 +948,34 @@ function enterFPVMode() {
|
||||
|
||||
function exitFPVMode() {
|
||||
console.log('🔄 Exiting FPV mode');
|
||||
fpvMode = false;
|
||||
|
||||
// Re-enable orbit controls
|
||||
controls.enabled = true;
|
||||
// Exit pointer lock first, before changing fpvMode
|
||||
if (document.pointerLockElement) {
|
||||
document.exitPointerLock();
|
||||
}
|
||||
|
||||
// Exit pointer lock
|
||||
document.exitPointerLock();
|
||||
|
||||
console.log('Orbit controls restored');
|
||||
// Small delay to ensure pointer lock has been released
|
||||
setTimeout(() => {
|
||||
fpvMode = false;
|
||||
|
||||
// Re-enable orbit controls
|
||||
controls.enabled = true;
|
||||
|
||||
// Update button text
|
||||
const fpvBtn = document.getElementById('fpv-btn');
|
||||
if (fpvBtn) {
|
||||
fpvBtn.textContent = 'Enter FPV Mode';
|
||||
fpvBtn.style.background = '#2196F3';
|
||||
}
|
||||
|
||||
// Reset movement controls
|
||||
fpvControls.moveForward = false;
|
||||
fpvControls.moveBackward = false;
|
||||
fpvControls.moveLeft = false;
|
||||
fpvControls.moveRight = false;
|
||||
|
||||
console.log('Orbit controls restored');
|
||||
}, 50);
|
||||
}
|
||||
|
||||
function updateFPVMovement() {
|
||||
|
||||
Reference in New Issue
Block a user