Loading...
Loading...
Compare original and translation side by side
import { TouchBuildController } from './scripts/touch-build-controller.js';
import { VRBuildingAdapter } from './scripts/vr-building-adapter.js';
import { AccessibilityConfig } from './scripts/accessibility-config.js';
// Mobile touch building
const touch = new TouchBuildController(canvas, {
doubleTapToPlace: true,
pinchToRotate: true,
swipeToChangePiece: true
});
touch.onPlace = (position, rotation) => buildingSystem.place(position, rotation);
touch.onRotate = (angle) => ghost.rotate(angle);
// VR building with hand tracking
const vr = new VRBuildingAdapter(xrSession, {
dominantHand: 'right',
snapToGrid: true,
comfortMode: true // Reduces motion sickness
});
vr.onGrab = (piece) => selection.select(piece);
vr.onRelease = (position) => buildingSystem.place(position);
// Accessibility configuration
const a11y = new AccessibilityConfig({
colorblindMode: 'deuteranopia', // red-green
highContrast: true,
screenReaderHints: true
});
// Apply to ghost preview
ghost.setColors(a11y.getValidityColors());import { TouchBuildController } from './scripts/touch-build-controller.js';
import { VRBuildingAdapter } from './scripts/vr-building-adapter.js';
import { AccessibilityConfig } from './scripts/accessibility-config.js';
// 移动端触摸构建
const touch = new TouchBuildController(canvas, {
doubleTapToPlace: true,
pinchToRotate: true,
swipeToChangePiece: true
});
touch.onPlace = (position, rotation) => buildingSystem.place(position, rotation);
touch.onRotate = (angle) => ghost.rotate(angle);
// 带手部追踪的VR构建
const vr = new VRBuildingAdapter(xrSession, {
dominantHand: 'right',
snapToGrid: true,
comfortMode: true // 减少晕动症
});
vr.onGrab = (piece) => selection.select(piece);
vr.onRelease = (position) => buildingSystem.place(position);
// 无障碍配置
const a11y = new AccessibilityConfig({
colorblindMode: 'deuteranopia', // 红绿色盲
highContrast: true,
screenReaderHints: true
});
// 应用到预览虚影
ghost.setColors(a11y.getValidityColors());references/platform-considerations.mdreferences/platform-considerations.md| File | Lines | Purpose |
|---|---|---|
| ~450 | Mobile gestures: tap, drag, pinch, swipe |
| ~400 | VR hand/controller input, comfort settings |
| ~350 | Colorblind modes, contrast, screen reader |
| 文件 | 代码行数 | 用途 |
|---|---|---|
| ~450 | 移动端手势:点击、拖拽、捏合、滑动 |
| ~400 | VR手部/控制器输入、舒适度设置 |
| ~350 | 色盲模式、对比度、屏幕阅读器支持 |
// Detect platform capabilities
const platform = {
isMobile: /Android|iPhone|iPad|iPod/i.test(navigator.userAgent),
isTouch: 'ontouchstart' in window,
isVR: navigator.xr !== undefined,
prefersReducedMotion: window.matchMedia('(prefers-reduced-motion: reduce)').matches,
prefersHighContrast: window.matchMedia('(prefers-contrast: more)').matches
};
// Initialize appropriate controllers
if (platform.isVR && xrSession) {
setupVRControls();
} else if (platform.isTouch) {
setupTouchControls();
} else {
setupMouseKeyboard();
}// 检测平台能力
const platform = {
isMobile: /Android|iPhone|iPad|iPod/i.test(navigator.userAgent),
isTouch: 'ontouchstart' in window,
isVR: navigator.xr !== undefined,
prefersReducedMotion: window.matchMedia('(prefers-reduced-motion: reduce)').matches,
prefersHighContrast: window.matchMedia('(prefers-contrast: more)').matches
};
// 初始化对应控制器
if (platform.isVR && xrSession) {
setupVRControls();
} else if (platform.isTouch) {
setupTouchControls();
} else {
setupMouseKeyboard();
}