@nice2dev/ui-3d 1.0.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +115 -1
- package/dist/cjs/collaborative/collaborativeScene.js +210 -0
- package/dist/cjs/collaborative/collaborativeScene.js.map +1 -0
- package/dist/cjs/core/i18n.js +3 -3
- package/dist/cjs/core/i18n.js.map +1 -1
- package/dist/cjs/dance/DanceBridge.js +162 -0
- package/dist/cjs/dance/DanceBridge.js.map +1 -0
- package/dist/cjs/dance/DanceScoreEngine.js +210 -0
- package/dist/cjs/dance/DanceScoreEngine.js.map +1 -0
- package/dist/cjs/dance/PoseDetector.js +199 -0
- package/dist/cjs/dance/PoseDetector.js.map +1 -0
- package/dist/cjs/index.js +254 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/material/MaterialEditor.module.css.js +6 -0
- package/dist/cjs/material/MaterialEditor.module.css.js.map +1 -0
- package/dist/cjs/material/NiceMaterialEditor.js +737 -0
- package/dist/cjs/material/NiceMaterialEditor.js.map +1 -0
- package/dist/cjs/material/materialEditorTypes.js +73 -0
- package/dist/cjs/material/materialEditorTypes.js.map +1 -0
- package/dist/cjs/material/materialEditorUtils.js +841 -0
- package/dist/cjs/material/materialEditorUtils.js.map +1 -0
- package/dist/cjs/material/materialNodeDefinitions.js +1285 -0
- package/dist/cjs/material/materialNodeDefinitions.js.map +1 -0
- package/dist/cjs/model/ModelEditor.js +4 -1
- package/dist/cjs/model/ModelEditor.js.map +1 -1
- package/dist/cjs/model/ModelEditor.module.css.js +1 -1
- package/dist/cjs/model/ModelEditorLeftPanel.js +5 -4
- package/dist/cjs/model/ModelEditorLeftPanel.js.map +1 -1
- package/dist/cjs/model/ModelEditorMenuBar.js +8 -3
- package/dist/cjs/model/ModelEditorMenuBar.js.map +1 -1
- package/dist/cjs/model/ModelEditorRightPanel.js +27 -26
- package/dist/cjs/model/ModelEditorRightPanel.js.map +1 -1
- package/dist/cjs/model/ModelEditorSubComponents.js +20 -16
- package/dist/cjs/model/ModelEditorSubComponents.js.map +1 -1
- package/dist/cjs/model/ModelEditorTimeline.js +5 -4
- package/dist/cjs/model/ModelEditorTimeline.js.map +1 -1
- package/dist/cjs/model/ModelEditorToolbar.js +4 -3
- package/dist/cjs/model/ModelEditorToolbar.js.map +1 -1
- package/dist/cjs/model/ModelEditorViewport.js +2 -2
- package/dist/cjs/model/ModelEditorViewport.js.map +1 -1
- package/dist/cjs/model/ModelViewer.js +68 -0
- package/dist/cjs/model/ModelViewer.js.map +1 -0
- package/dist/cjs/model/ModelViewer.module.css.js +6 -0
- package/dist/cjs/model/ModelViewer.module.css.js.map +1 -0
- package/dist/cjs/model/NiceArmatureEditor.js +255 -0
- package/dist/cjs/model/NiceArmatureEditor.js.map +1 -0
- package/dist/cjs/model/NiceMorphTargetEditor.js +206 -0
- package/dist/cjs/model/NiceMorphTargetEditor.js.map +1 -0
- package/dist/cjs/model/NiceOctree.js +339 -0
- package/dist/cjs/model/NiceOctree.js.map +1 -0
- package/dist/cjs/model/NicePhysicsSimulation.js +283 -0
- package/dist/cjs/model/NicePhysicsSimulation.js.map +1 -0
- package/dist/cjs/model/NiceProceduralGeometry.js +269 -0
- package/dist/cjs/model/NiceProceduralGeometry.js.map +1 -0
- package/dist/cjs/model/NiceTerrainEditor.js +343 -0
- package/dist/cjs/model/NiceTerrainEditor.js.map +1 -0
- package/dist/cjs/model/NiceWeightPainter.js +258 -0
- package/dist/cjs/model/NiceWeightPainter.js.map +1 -0
- package/dist/cjs/model/NiceXRPreview.js +269 -0
- package/dist/cjs/model/NiceXRPreview.js.map +1 -0
- package/dist/cjs/model/cadModeUtils.js +130 -0
- package/dist/cjs/model/cadModeUtils.js.map +1 -0
- package/dist/cjs/model/editorShortcuts.js +187 -0
- package/dist/cjs/model/editorShortcuts.js.map +1 -0
- package/dist/cjs/model/modelEditorTypes.js +11 -0
- package/dist/cjs/model/modelEditorTypes.js.map +1 -1
- package/dist/cjs/model/modelEditorUtils.js +1049 -0
- package/dist/cjs/model/modelEditorUtils.js.map +1 -0
- package/dist/cjs/model/simsModeUtils.js +358 -0
- package/dist/cjs/model/simsModeUtils.js.map +1 -0
- package/dist/cjs/model/useModelEditor.js +319 -115
- package/dist/cjs/model/useModelEditor.js.map +1 -1
- package/dist/cjs/model/useModelViewer.js +634 -0
- package/dist/cjs/model/useModelViewer.js.map +1 -0
- package/dist/cjs/nice2dev-ui-3d.css +1 -1
- package/dist/cjs/particle/NiceParticleEditor.js +526 -0
- package/dist/cjs/particle/NiceParticleEditor.js.map +1 -0
- package/dist/cjs/particle/ParticleEditor.module.css.js +6 -0
- package/dist/cjs/particle/ParticleEditor.module.css.js.map +1 -0
- package/dist/cjs/particle/particleEditorTypes.js +92 -0
- package/dist/cjs/particle/particleEditorTypes.js.map +1 -0
- package/dist/cjs/particle/particleEditorUtils.js +1084 -0
- package/dist/cjs/particle/particleEditorUtils.js.map +1 -0
- package/dist/cjs/rendering/NiceCascadedShadows.js +266 -0
- package/dist/cjs/rendering/NiceCascadedShadows.js.map +1 -0
- package/dist/cjs/rendering/NiceRenderExport.js +341 -0
- package/dist/cjs/rendering/NiceRenderExport.js.map +1 -0
- package/dist/cjs/rendering/NiceSSAO.js +359 -0
- package/dist/cjs/rendering/NiceSSAO.js.map +1 -0
- package/dist/cjs/rendering/NiceSSR.js +277 -0
- package/dist/cjs/rendering/NiceSSR.js.map +1 -0
- package/dist/cjs/rendering/NiceWebGPURenderer.js +215 -0
- package/dist/cjs/rendering/NiceWebGPURenderer.js.map +1 -0
- package/dist/cjs/ui/dist/index.js +50089 -0
- package/dist/cjs/ui/dist/index.js.map +1 -0
- package/dist/cjs/uv/NiceUVEditor.js +520 -0
- package/dist/cjs/uv/NiceUVEditor.js.map +1 -0
- package/dist/cjs/uv/UVEditor.module.css.js +6 -0
- package/dist/cjs/uv/UVEditor.module.css.js.map +1 -0
- package/dist/cjs/uv/uvEditorTypes.js +98 -0
- package/dist/cjs/uv/uvEditorTypes.js.map +1 -0
- package/dist/cjs/uv/uvEditorUtils.js +670 -0
- package/dist/cjs/uv/uvEditorUtils.js.map +1 -0
- package/dist/esm/collaborative/collaborativeScene.js +206 -0
- package/dist/esm/collaborative/collaborativeScene.js.map +1 -0
- package/dist/esm/dance/DanceBridge.js +158 -0
- package/dist/esm/dance/DanceBridge.js.map +1 -0
- package/dist/esm/dance/DanceScoreEngine.js +207 -0
- package/dist/esm/dance/DanceScoreEngine.js.map +1 -0
- package/dist/esm/dance/PoseDetector.js +195 -0
- package/dist/esm/dance/PoseDetector.js.map +1 -0
- package/dist/esm/index.js +35 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/material/MaterialEditor.module.css.js +4 -0
- package/dist/esm/material/MaterialEditor.module.css.js.map +1 -0
- package/dist/esm/material/NiceMaterialEditor.js +734 -0
- package/dist/esm/material/NiceMaterialEditor.js.map +1 -0
- package/dist/esm/material/materialEditorTypes.js +62 -0
- package/dist/esm/material/materialEditorTypes.js.map +1 -0
- package/dist/esm/material/materialEditorUtils.js +811 -0
- package/dist/esm/material/materialEditorUtils.js.map +1 -0
- package/dist/esm/material/materialNodeDefinitions.js +1280 -0
- package/dist/esm/material/materialNodeDefinitions.js.map +1 -0
- package/dist/esm/model/ModelEditor.js +4 -2
- package/dist/esm/model/ModelEditor.js.map +1 -1
- package/dist/esm/model/ModelEditor.module.css.js +1 -1
- package/dist/esm/model/ModelEditorLeftPanel.js +5 -4
- package/dist/esm/model/ModelEditorLeftPanel.js.map +1 -1
- package/dist/esm/model/ModelEditorMenuBar.js +8 -3
- package/dist/esm/model/ModelEditorMenuBar.js.map +1 -1
- package/dist/esm/model/ModelEditorRightPanel.js +27 -26
- package/dist/esm/model/ModelEditorRightPanel.js.map +1 -1
- package/dist/esm/model/ModelEditorSubComponents.js +17 -13
- package/dist/esm/model/ModelEditorSubComponents.js.map +1 -1
- package/dist/esm/model/ModelEditorTimeline.js +5 -4
- package/dist/esm/model/ModelEditorTimeline.js.map +1 -1
- package/dist/esm/model/ModelEditorToolbar.js +4 -3
- package/dist/esm/model/ModelEditorToolbar.js.map +1 -1
- package/dist/esm/model/ModelEditorViewport.js +2 -2
- package/dist/esm/model/ModelEditorViewport.js.map +1 -1
- package/dist/esm/model/ModelViewer.js +65 -0
- package/dist/esm/model/ModelViewer.js.map +1 -0
- package/dist/esm/model/ModelViewer.module.css.js +4 -0
- package/dist/esm/model/ModelViewer.module.css.js.map +1 -0
- package/dist/esm/model/NiceArmatureEditor.js +233 -0
- package/dist/esm/model/NiceArmatureEditor.js.map +1 -0
- package/dist/esm/model/NiceMorphTargetEditor.js +184 -0
- package/dist/esm/model/NiceMorphTargetEditor.js.map +1 -0
- package/dist/esm/model/NiceOctree.js +317 -0
- package/dist/esm/model/NiceOctree.js.map +1 -0
- package/dist/esm/model/NicePhysicsSimulation.js +261 -0
- package/dist/esm/model/NicePhysicsSimulation.js.map +1 -0
- package/dist/esm/model/NiceProceduralGeometry.js +242 -0
- package/dist/esm/model/NiceProceduralGeometry.js.map +1 -0
- package/dist/esm/model/NiceTerrainEditor.js +321 -0
- package/dist/esm/model/NiceTerrainEditor.js.map +1 -0
- package/dist/esm/model/NiceWeightPainter.js +236 -0
- package/dist/esm/model/NiceWeightPainter.js.map +1 -0
- package/dist/esm/model/NiceXRPreview.js +247 -0
- package/dist/esm/model/NiceXRPreview.js.map +1 -0
- package/dist/esm/model/cadModeUtils.js +103 -0
- package/dist/esm/model/cadModeUtils.js.map +1 -0
- package/dist/esm/model/editorShortcuts.js +185 -0
- package/dist/esm/model/editorShortcuts.js.map +1 -0
- package/dist/esm/model/modelEditorTypes.js +11 -0
- package/dist/esm/model/modelEditorTypes.js.map +1 -1
- package/dist/esm/model/modelEditorUtils.js +997 -0
- package/dist/esm/model/modelEditorUtils.js.map +1 -0
- package/dist/esm/model/simsModeUtils.js +325 -0
- package/dist/esm/model/simsModeUtils.js.map +1 -0
- package/dist/esm/model/useModelEditor.js +204 -0
- package/dist/esm/model/useModelEditor.js.map +1 -1
- package/dist/esm/model/useModelViewer.js +613 -0
- package/dist/esm/model/useModelViewer.js.map +1 -0
- package/dist/esm/nice2dev-ui-3d.css +1 -1
- package/dist/esm/particle/NiceParticleEditor.js +523 -0
- package/dist/esm/particle/NiceParticleEditor.js.map +1 -0
- package/dist/esm/particle/ParticleEditor.module.css.js +4 -0
- package/dist/esm/particle/ParticleEditor.module.css.js.map +1 -0
- package/dist/esm/particle/particleEditorTypes.js +84 -0
- package/dist/esm/particle/particleEditorTypes.js.map +1 -0
- package/dist/esm/particle/particleEditorUtils.js +1054 -0
- package/dist/esm/particle/particleEditorUtils.js.map +1 -0
- package/dist/esm/rendering/NiceCascadedShadows.js +244 -0
- package/dist/esm/rendering/NiceCascadedShadows.js.map +1 -0
- package/dist/esm/rendering/NiceRenderExport.js +319 -0
- package/dist/esm/rendering/NiceRenderExport.js.map +1 -0
- package/dist/esm/rendering/NiceSSAO.js +337 -0
- package/dist/esm/rendering/NiceSSAO.js.map +1 -0
- package/dist/esm/rendering/NiceSSR.js +255 -0
- package/dist/esm/rendering/NiceSSR.js.map +1 -0
- package/dist/esm/rendering/NiceWebGPURenderer.js +193 -0
- package/dist/esm/rendering/NiceWebGPURenderer.js.map +1 -0
- package/dist/esm/ui/dist/index.js +49686 -0
- package/dist/esm/ui/dist/index.js.map +1 -0
- package/dist/esm/uv/NiceUVEditor.js +518 -0
- package/dist/esm/uv/NiceUVEditor.js.map +1 -0
- package/dist/esm/uv/UVEditor.module.css.js +4 -0
- package/dist/esm/uv/UVEditor.module.css.js.map +1 -0
- package/dist/esm/uv/uvEditorTypes.js +88 -0
- package/dist/esm/uv/uvEditorTypes.js.map +1 -0
- package/dist/esm/uv/uvEditorUtils.js +621 -0
- package/dist/esm/uv/uvEditorUtils.js.map +1 -0
- package/package.json +3 -4
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* cadModeUtils.ts — CAD-style design utilities for ModelEditor.
|
|
5
|
+
*
|
|
6
|
+
* Provides: wall/floor/room drawing, dimension annotations,
|
|
7
|
+
* snap-to-grid, measurement overlay, DXF import/export,
|
|
8
|
+
* floor plan tools — inspired by AutoCAD & ArchiCAD.
|
|
9
|
+
*/
|
|
10
|
+
/* ════════════════════════════════════════════════════════════════
|
|
11
|
+
CONSTANTS
|
|
12
|
+
════════════════════════════════════════════════════════════════ */
|
|
13
|
+
const DEFAULT_CAD_SETTINGS = {
|
|
14
|
+
grid: {
|
|
15
|
+
enabled: true,
|
|
16
|
+
spacing: 1,
|
|
17
|
+
subdivisions: 10,
|
|
18
|
+
unit: 'm',
|
|
19
|
+
showLabels: true,
|
|
20
|
+
color: '#444466',
|
|
21
|
+
subColor: '#333344',
|
|
22
|
+
},
|
|
23
|
+
snapModes: ['grid', 'endpoint', 'midpoint', 'intersection'],
|
|
24
|
+
snapRadius: 0.15,
|
|
25
|
+
defaultWallHeight: 2.8,
|
|
26
|
+
defaultWallThickness: 0.2,
|
|
27
|
+
defaultDoorWidth: 0.9,
|
|
28
|
+
defaultDoorHeight: 2.1,
|
|
29
|
+
defaultWindowWidth: 1.2,
|
|
30
|
+
defaultWindowHeight: 1.4,
|
|
31
|
+
defaultWindowSill: 0.9,
|
|
32
|
+
unit: 'm',
|
|
33
|
+
precision: 2,
|
|
34
|
+
orthogonalLock: false,
|
|
35
|
+
showDimensions: true,
|
|
36
|
+
currentFloor: 0,
|
|
37
|
+
};
|
|
38
|
+
const UNIT_SCALES = {
|
|
39
|
+
mm: 0.001,
|
|
40
|
+
cm: 0.01,
|
|
41
|
+
m: 1,
|
|
42
|
+
in: 0.0254,
|
|
43
|
+
ft: 0.3048,
|
|
44
|
+
};
|
|
45
|
+
const ROOM_COLORS = {
|
|
46
|
+
living: '#e8d5b0',
|
|
47
|
+
bedroom: '#c5d8e8',
|
|
48
|
+
bathroom: '#b0dde8',
|
|
49
|
+
kitchen: '#e8d0b5',
|
|
50
|
+
dining: '#d8c8a8',
|
|
51
|
+
office: '#c8d5c0',
|
|
52
|
+
garage: '#c0c0c0',
|
|
53
|
+
hallway: '#d5d0c8',
|
|
54
|
+
closet: '#d8cbe8',
|
|
55
|
+
laundry: '#b8d8d0',
|
|
56
|
+
balcony: '#c0e0c0',
|
|
57
|
+
stairwell: '#d0c8b8',
|
|
58
|
+
custom: '#d0d0d0',
|
|
59
|
+
};
|
|
60
|
+
const WALL_MATERIALS = [
|
|
61
|
+
{ id: 'concrete', name: 'Concrete', color: '#b8b8b8' },
|
|
62
|
+
{ id: 'brick', name: 'Brick', color: '#c07050' },
|
|
63
|
+
{ id: 'drywall', name: 'Drywall', color: '#f0e8d8' },
|
|
64
|
+
{ id: 'glass', name: 'Glass', color: '#c8e0f0' },
|
|
65
|
+
{ id: 'wood', name: 'Wood Panel', color: '#c8a060' },
|
|
66
|
+
{ id: 'stone', name: 'Stone', color: '#a0a098' },
|
|
67
|
+
{ id: 'metal', name: 'Metal Panel', color: '#b0b0b8' },
|
|
68
|
+
];
|
|
69
|
+
const FLOOR_MATERIALS = [
|
|
70
|
+
{ id: 'hardwood', name: 'Hardwood', color: '#c09050' },
|
|
71
|
+
{ id: 'tile-white', name: 'White Tile', color: '#f0f0f0' },
|
|
72
|
+
{ id: 'tile-grey', name: 'Grey Tile', color: '#b0b0b0' },
|
|
73
|
+
{ id: 'carpet', name: 'Carpet', color: '#908070' },
|
|
74
|
+
{ id: 'marble', name: 'Marble', color: '#e8e0d8' },
|
|
75
|
+
{ id: 'concrete', name: 'Polished Concrete', color: '#c0c0c0' },
|
|
76
|
+
{ id: 'laminate', name: 'Laminate', color: '#d0b080' },
|
|
77
|
+
{ id: 'vinyl', name: 'Vinyl', color: '#d0d0c8' },
|
|
78
|
+
];
|
|
79
|
+
/* ════════════════════════════════════════════════════════════════
|
|
80
|
+
GRID & SNAP
|
|
81
|
+
════════════════════════════════════════════════════════════════ */
|
|
82
|
+
function createCADGrid(settings) {
|
|
83
|
+
const group = new THREE.Group();
|
|
84
|
+
group.name = '__cadGrid';
|
|
85
|
+
const size = settings.spacing * 50;
|
|
86
|
+
const mainGrid = new THREE.GridHelper(size * 2, Math.floor(size * 2 / settings.spacing), settings.color, settings.subColor);
|
|
87
|
+
mainGrid.position.y = 0.001;
|
|
88
|
+
group.add(mainGrid);
|
|
89
|
+
if (settings.subdivisions > 1) {
|
|
90
|
+
const subSize = settings.spacing / settings.subdivisions;
|
|
91
|
+
const subGrid = new THREE.GridHelper(size * 2, Math.floor(size * 2 / subSize), settings.subColor, `${settings.subColor}44`);
|
|
92
|
+
subGrid.position.y = 0;
|
|
93
|
+
group.add(subGrid);
|
|
94
|
+
}
|
|
95
|
+
return group;
|
|
96
|
+
}
|
|
97
|
+
function snapToCADGrid(point, settings) {
|
|
98
|
+
const snap = settings.grid.spacing / settings.grid.subdivisions;
|
|
99
|
+
return new THREE.Vector3(Math.round(point.x / snap) * snap, Math.round(point.y / snap) * snap, Math.round(point.z / snap) * snap);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { DEFAULT_CAD_SETTINGS, FLOOR_MATERIALS, ROOM_COLORS, UNIT_SCALES, WALL_MATERIALS, createCADGrid, snapToCADGrid };
|
|
103
|
+
//# sourceMappingURL=cadModeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadModeUtils.js","sources":["../../../src/model/cadModeUtils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* editorShortcuts.ts — Customizable keyboard shortcuts for the 3D ModelEditor.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Pre-configured default shortcuts matching current ModelEditor
|
|
6
|
+
* - Rebindable keys with persistence support
|
|
7
|
+
* - Shortcut categories for organized display
|
|
8
|
+
* - Conflict detection
|
|
9
|
+
*/
|
|
10
|
+
/* ═══════════════════════════════════════════
|
|
11
|
+
Helpers
|
|
12
|
+
═══════════════════════════════════════════ */
|
|
13
|
+
function normalizeKey(key) {
|
|
14
|
+
return key.length === 1 ? key.toLowerCase() : key;
|
|
15
|
+
}
|
|
16
|
+
function bindingEquals(a, b) {
|
|
17
|
+
return (normalizeKey(a.key) === normalizeKey(b.key) &&
|
|
18
|
+
!!a.ctrl === !!b.ctrl &&
|
|
19
|
+
!!a.shift === !!b.shift &&
|
|
20
|
+
!!a.alt === !!b.alt &&
|
|
21
|
+
!!a.meta === !!b.meta);
|
|
22
|
+
}
|
|
23
|
+
function eventToBinding(e) {
|
|
24
|
+
return {
|
|
25
|
+
key: e.key,
|
|
26
|
+
ctrl: e.ctrlKey || e.metaKey,
|
|
27
|
+
shift: e.shiftKey,
|
|
28
|
+
alt: e.altKey,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/* ═══════════════════════════════════════════
|
|
32
|
+
Default Shortcuts
|
|
33
|
+
═══════════════════════════════════════════ */
|
|
34
|
+
const DEFAULT_SHORTCUTS = [
|
|
35
|
+
// Transform
|
|
36
|
+
{ id: "transform.translate", label: "Move (Translate)", category: "Transform", binding: { key: "g" } },
|
|
37
|
+
{ id: "transform.rotate", label: "Rotate", category: "Transform", binding: { key: "r" } },
|
|
38
|
+
{ id: "transform.scale", label: "Scale", category: "Transform", binding: { key: "s" } },
|
|
39
|
+
{ id: "transform.delete", label: "Delete Selected", category: "Transform", binding: { key: "Delete" } },
|
|
40
|
+
{ id: "transform.deleteAlt", label: "Delete (Ctrl+X)", category: "Transform", binding: { key: "x", ctrl: true } },
|
|
41
|
+
{ id: "transform.duplicate", label: "Duplicate", category: "Transform", binding: { key: "d", shift: true } },
|
|
42
|
+
// Camera
|
|
43
|
+
{ id: "camera.focus", label: "Focus on Object", category: "Camera", binding: { key: "f" } },
|
|
44
|
+
{ id: "camera.front", label: "Front View", category: "Camera", binding: { key: "1" } },
|
|
45
|
+
{ id: "camera.right", label: "Right View", category: "Camera", binding: { key: "3" } },
|
|
46
|
+
{ id: "camera.top", label: "Top View", category: "Camera", binding: { key: "7" } },
|
|
47
|
+
{ id: "camera.left", label: "Left View", category: "Camera", binding: { key: "4" } },
|
|
48
|
+
{ id: "camera.back", label: "Back View", category: "Camera", binding: { key: "9" } },
|
|
49
|
+
{ id: "camera.bottom", label: "Bottom View", category: "Camera", binding: { key: "2" } },
|
|
50
|
+
// Animation
|
|
51
|
+
{ id: "anim.playPause", label: "Play / Pause", category: "Animation", binding: { key: " " } },
|
|
52
|
+
// Edit
|
|
53
|
+
{ id: "edit.undo", label: "Undo", category: "Edit", binding: { key: "z", ctrl: true } },
|
|
54
|
+
{ id: "edit.redo", label: "Redo", category: "Edit", binding: { key: "y", ctrl: true } },
|
|
55
|
+
{ id: "edit.redoAlt", label: "Redo (Ctrl+Shift+Z)", category: "Edit", binding: { key: "z", ctrl: true, shift: true } },
|
|
56
|
+
// Mode
|
|
57
|
+
{ id: "mode.cycle", label: "Cycle Editor Mode", category: "Mode", binding: { key: "Tab" } },
|
|
58
|
+
{ id: "mode.escape", label: "Close/Cancel", category: "Mode", binding: { key: "Escape" } },
|
|
59
|
+
];
|
|
60
|
+
/* ═══════════════════════════════════════════
|
|
61
|
+
EditorShortcutManager
|
|
62
|
+
═══════════════════════════════════════════ */
|
|
63
|
+
class EditorShortcutManager {
|
|
64
|
+
constructor() {
|
|
65
|
+
this.shortcuts = new Map();
|
|
66
|
+
this.callbacks = new Map();
|
|
67
|
+
for (const def of DEFAULT_SHORTCUTS) {
|
|
68
|
+
this.shortcuts.set(def.id, { ...def, enabled: true });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Register a callback for a shortcut ID. */
|
|
72
|
+
on(id, callback) {
|
|
73
|
+
this.callbacks.set(id, callback);
|
|
74
|
+
}
|
|
75
|
+
/** Unregister a callback. */
|
|
76
|
+
off(id) {
|
|
77
|
+
this.callbacks.delete(id);
|
|
78
|
+
}
|
|
79
|
+
/** Rebind a shortcut to a new key combination. */
|
|
80
|
+
rebind(id, binding) {
|
|
81
|
+
const shortcut = this.shortcuts.get(id);
|
|
82
|
+
if (shortcut) {
|
|
83
|
+
shortcut.binding = binding;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** Enable/disable a shortcut. */
|
|
87
|
+
setEnabled(id, enabled) {
|
|
88
|
+
const shortcut = this.shortcuts.get(id);
|
|
89
|
+
if (shortcut)
|
|
90
|
+
shortcut.enabled = enabled;
|
|
91
|
+
}
|
|
92
|
+
/** Reset all bindings to defaults. */
|
|
93
|
+
resetAll() {
|
|
94
|
+
this.shortcuts.clear();
|
|
95
|
+
for (const def of DEFAULT_SHORTCUTS) {
|
|
96
|
+
this.shortcuts.set(def.id, { ...def, enabled: true });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Get all shortcuts grouped by category. */
|
|
100
|
+
getGrouped() {
|
|
101
|
+
const groups = {};
|
|
102
|
+
for (const s of this.shortcuts.values()) {
|
|
103
|
+
if (!groups[s.category])
|
|
104
|
+
groups[s.category] = [];
|
|
105
|
+
groups[s.category].push(s);
|
|
106
|
+
}
|
|
107
|
+
return groups;
|
|
108
|
+
}
|
|
109
|
+
/** Get all shortcuts as a flat array. */
|
|
110
|
+
getAll() {
|
|
111
|
+
return [...this.shortcuts.values()];
|
|
112
|
+
}
|
|
113
|
+
/** Find conflicts (two shortcuts with the same binding). */
|
|
114
|
+
findConflicts() {
|
|
115
|
+
const conflicts = [];
|
|
116
|
+
const entries = [...this.shortcuts.values()];
|
|
117
|
+
for (let i = 0; i < entries.length; i++) {
|
|
118
|
+
for (let j = i + 1; j < entries.length; j++) {
|
|
119
|
+
if (bindingEquals(entries[i].binding, entries[j].binding)) {
|
|
120
|
+
conflicts.push([entries[i], entries[j]]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return conflicts;
|
|
125
|
+
}
|
|
126
|
+
/** Export bindings for persistence. */
|
|
127
|
+
exportConfig() {
|
|
128
|
+
return [...this.shortcuts.values()].map((s) => ({
|
|
129
|
+
id: s.id,
|
|
130
|
+
binding: s.binding,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
/** Import bindings from saved config. */
|
|
134
|
+
importConfig(configs) {
|
|
135
|
+
for (const config of configs) {
|
|
136
|
+
this.rebind(config.id, config.binding);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** Match a keyboard event to a shortcut and return its ID (or null). */
|
|
140
|
+
match(e) {
|
|
141
|
+
const evtBinding = eventToBinding(e);
|
|
142
|
+
for (const [id, shortcut] of this.shortcuts) {
|
|
143
|
+
if (!shortcut.enabled)
|
|
144
|
+
continue;
|
|
145
|
+
if (bindingEquals(evtBinding, shortcut.binding)) {
|
|
146
|
+
return id;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
/** Handle a keyboard event — fires callback if matched. Returns true if handled. */
|
|
152
|
+
handleKeyDown(e) {
|
|
153
|
+
const id = this.match(e);
|
|
154
|
+
if (!id)
|
|
155
|
+
return false;
|
|
156
|
+
const cb = this.callbacks.get(id);
|
|
157
|
+
if (cb) {
|
|
158
|
+
e.preventDefault();
|
|
159
|
+
cb();
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
/** Format a binding for UI display. */
|
|
165
|
+
formatBinding(id) {
|
|
166
|
+
const shortcut = this.shortcuts.get(id);
|
|
167
|
+
if (!shortcut)
|
|
168
|
+
return "";
|
|
169
|
+
const b = shortcut.binding;
|
|
170
|
+
const parts = [];
|
|
171
|
+
if (b.ctrl)
|
|
172
|
+
parts.push("Ctrl");
|
|
173
|
+
if (b.shift)
|
|
174
|
+
parts.push("Shift");
|
|
175
|
+
if (b.alt)
|
|
176
|
+
parts.push("Alt");
|
|
177
|
+
if (b.meta)
|
|
178
|
+
parts.push("Meta");
|
|
179
|
+
parts.push(b.key === " " ? "Space" : b.key.length === 1 ? b.key.toUpperCase() : b.key);
|
|
180
|
+
return parts.join("+");
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export { EditorShortcutManager };
|
|
185
|
+
//# sourceMappingURL=editorShortcuts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editorShortcuts.js","sources":["../../../src/model/editorShortcuts.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,17 @@ const SUPPORTED_EXTENSIONS = [
|
|
|
32
32
|
".gcode",
|
|
33
33
|
".svg",
|
|
34
34
|
".usdz",
|
|
35
|
+
// CAD formats
|
|
36
|
+
".dxf",
|
|
37
|
+
".dwg",
|
|
38
|
+
".ifc",
|
|
39
|
+
".step",
|
|
40
|
+
".stp",
|
|
41
|
+
".iges",
|
|
42
|
+
".igs",
|
|
43
|
+
".sat",
|
|
44
|
+
".brep",
|
|
45
|
+
".3dm",
|
|
35
46
|
];
|
|
36
47
|
/* ═══════════════════════════════════════════
|
|
37
48
|
AI helpers — convert pose3D to AnimationClip
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelEditorTypes.js","sources":["../../../src/model/modelEditorTypes.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;AAEG;AA4DH;;AAEiD;MAEpC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AACvB,MAAM,OAAO,GAAG,CAAC,CAAS,KAAI;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5B,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/B,IAAA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;AACvC;AAEO,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;;
|
|
1
|
+
{"version":3,"file":"modelEditorTypes.js","sources":["../../../src/model/modelEditorTypes.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|