feat(engine-manager): 暴露漫游功能方法

This commit is contained in:
yuding
2026-01-28 11:24:32 +08:00
parent 0e38f58052
commit dc63f94e44

View File

@@ -8,6 +8,7 @@ import { RightKeyManager } from './right-key-manager';
import { infoMenuButton } from '../components/menu/buttons/info'; import { infoMenuButton } from '../components/menu/buttons/info';
import { homeMenuButton } from '../components/menu/buttons/home'; import { homeMenuButton } from '../components/menu/buttons/home';
import type { MeasureMode } from '../types/measure'; import type { MeasureMode } from '../types/measure';
import type { SectionBoxRange } from '../components/section-box-panel/types';
/** /**
* 3D 引擎管理器 * 3D 引擎管理器
@@ -195,6 +196,49 @@ export class EngineManager extends BaseManager {
return this.engineInstance.getCurrentSectionAxis(); return this.engineInstance.getCurrentSectionAxis();
} }
/** 激活剖切盒 */
public activateSectionBox(): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.activateSectionBox();
}
/** 停用剖切盒 */
public deactivateSectionBox(): void {
if (!this.engineInstance) {
return;
}
this.engineInstance.deactivateSectionBox();
}
/** 设置剖切盒范围(百分比 0-100 */
public setSectionBoxRange(range: SectionBoxRange): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.setSectionBoxRange(range);
}
/** 适应剖切盒到模型 */
public fitSectionBoxToModel(): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.fitSectionBoxToModel();
}
/** 重置剖切盒 */
public resetSectionBox(): void {
if (!this.engineInstance) {
return;
}
this.engineInstance.resetSectionBox();
}
/** 激活框选放大功能 */ /** 激活框选放大功能 */
public activateZoomBox(): void { public activateZoomBox(): void {
if (!this.engineInstance) { if (!this.engineInstance) {
@@ -204,6 +248,74 @@ export class EngineManager extends BaseManager {
this.engineInstance.activateZoomBox(); this.engineInstance.activateZoomBox();
} }
// ==================== 漫游功能 ====================
/** 激活第一人称漫游模式 */
public activateFirstPersonMode(): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.activateFirstPersonMode();
}
/** 停用第一人称漫游模式 */
public deactivateFirstPersonMode(): void {
if (!this.engineInstance) {
return;
}
this.engineInstance.deactivateFirstPersonMode();
}
/**
* 设置漫游移动速度
* @param speed 移动速度
*/
public setWalkSpeed(speed: number): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.setWalkSpeed(speed);
}
/**
* 设置漫游重力开关
* @param enabled 是否启用重力
*/
public setWalkGravity(enabled: boolean): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.setWalkGravity(enabled);
}
/**
* 设置漫游碰撞检测开关
* @param enabled 是否启用碰撞检测
*/
public setWalkCollision(enabled: boolean): void {
if (!this.engineInstance) {
console.warn('[EngineManager] 3D Engine not initialized.');
return;
}
this.engineInstance.setWalkCollision(enabled);
}
/**
* 获取漫游模式是否激活
* @returns 是否处于漫游模式
*/
public isFirstPersonModeActive(): boolean {
if (!this.engineInstance) {
return false;
}
return this.engineInstance.isFirstPersonModeActive();
}
// ==================== 结束:漫游功能 ====================
/** 销毁引擎管理器 */ /** 销毁引擎管理器 */
public destroy(): void { public destroy(): void {
if (this.engineInstance) { if (this.engineInstance) {