blockymodel-web 0.1.0
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/LICENSE +21 -0
- package/dist/blockymodel-web.js +2717 -0
- package/dist/blockymodel-web.js.map +1 -0
- package/dist/blockymodel-web.umd.cjs +122 -0
- package/dist/blockymodel-web.umd.cjs.map +1 -0
- package/dist/editor/Editor.d.ts +94 -0
- package/dist/editor/Editor.d.ts.map +1 -0
- package/dist/editor/History.d.ts +52 -0
- package/dist/editor/History.d.ts.map +1 -0
- package/dist/editor/SelectionManager.d.ts +57 -0
- package/dist/editor/SelectionManager.d.ts.map +1 -0
- package/dist/editor/Serializer.d.ts +44 -0
- package/dist/editor/Serializer.d.ts.map +1 -0
- package/dist/editor/TransformManager.d.ts +73 -0
- package/dist/editor/TransformManager.d.ts.map +1 -0
- package/dist/editor/commands/AddNodeCommand.d.ts +24 -0
- package/dist/editor/commands/AddNodeCommand.d.ts.map +1 -0
- package/dist/editor/commands/Command.d.ts +50 -0
- package/dist/editor/commands/Command.d.ts.map +1 -0
- package/dist/editor/commands/RemoveNodeCommand.d.ts +28 -0
- package/dist/editor/commands/RemoveNodeCommand.d.ts.map +1 -0
- package/dist/editor/commands/SetPositionCommand.d.ts +24 -0
- package/dist/editor/commands/SetPositionCommand.d.ts.map +1 -0
- package/dist/editor/commands/SetPropertyCommand.d.ts +41 -0
- package/dist/editor/commands/SetPropertyCommand.d.ts.map +1 -0
- package/dist/editor/commands/SetRotationCommand.d.ts +24 -0
- package/dist/editor/commands/SetRotationCommand.d.ts.map +1 -0
- package/dist/editor/commands/SetScaleCommand.d.ts +24 -0
- package/dist/editor/commands/SetScaleCommand.d.ts.map +1 -0
- package/dist/editor/index.d.ts +15 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/loaders/BlockyModelLoader.d.ts +48 -0
- package/dist/loaders/BlockyModelLoader.d.ts.map +1 -0
- package/dist/types/blockymodel.d.ts +72 -0
- package/dist/types/blockymodel.d.ts.map +1 -0
- package/dist/ui/HierarchyPanel.d.ts +73 -0
- package/dist/ui/HierarchyPanel.d.ts.map +1 -0
- package/dist/ui/PropertyPanel.d.ts +59 -0
- package/dist/ui/PropertyPanel.d.ts.map +1 -0
- package/dist/ui/UVEditor.d.ts +56 -0
- package/dist/ui/UVEditor.d.ts.map +1 -0
- package/dist/ui/index.d.ts +4 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/viewer/ViewerController.d.ts +71 -0
- package/dist/viewer/ViewerController.d.ts.map +1 -0
- package/package.json +63 -0
- package/src/editor/Editor.ts +196 -0
- package/src/editor/History.ts +123 -0
- package/src/editor/SelectionManager.ts +183 -0
- package/src/editor/Serializer.ts +212 -0
- package/src/editor/TransformManager.ts +270 -0
- package/src/editor/commands/AddNodeCommand.ts +53 -0
- package/src/editor/commands/Command.ts +63 -0
- package/src/editor/commands/RemoveNodeCommand.ts +59 -0
- package/src/editor/commands/SetPositionCommand.ts +51 -0
- package/src/editor/commands/SetPropertyCommand.ts +100 -0
- package/src/editor/commands/SetRotationCommand.ts +51 -0
- package/src/editor/commands/SetScaleCommand.ts +51 -0
- package/src/editor/index.ts +19 -0
- package/src/index.ts +49 -0
- package/src/loaders/BlockyModelLoader.ts +281 -0
- package/src/main.ts +290 -0
- package/src/styles.css +597 -0
- package/src/types/blockymodel.ts +82 -0
- package/src/ui/HierarchyPanel.ts +343 -0
- package/src/ui/PropertyPanel.ts +434 -0
- package/src/ui/UVEditor.ts +336 -0
- package/src/ui/index.ts +4 -0
- package/src/viewer/ViewerController.ts +295 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { SelectionManager } from "./SelectionManager";
|
|
3
|
+
import { TransformManager } from "./TransformManager";
|
|
4
|
+
import { History } from "./History";
|
|
5
|
+
import type { Command } from "./commands/Command";
|
|
6
|
+
import type { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
7
|
+
export type EditorEvent = "selectionChanged" | "objectChanged" | "historyChanged" | "modeChanged" | "modelLoaded";
|
|
8
|
+
export interface EditorOptions {
|
|
9
|
+
scene: THREE.Scene;
|
|
10
|
+
camera: THREE.Camera;
|
|
11
|
+
renderer: THREE.WebGLRenderer;
|
|
12
|
+
controls: OrbitControls;
|
|
13
|
+
domElement: HTMLElement;
|
|
14
|
+
}
|
|
15
|
+
type EventCallback = (...args: unknown[]) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Central editor state manager
|
|
18
|
+
* Coordinates selection, transforms, history, and emits events for UI updates
|
|
19
|
+
*/
|
|
20
|
+
export declare class Editor {
|
|
21
|
+
readonly scene: THREE.Scene;
|
|
22
|
+
readonly camera: THREE.Camera;
|
|
23
|
+
readonly renderer: THREE.WebGLRenderer;
|
|
24
|
+
readonly controls: OrbitControls;
|
|
25
|
+
readonly domElement: HTMLElement;
|
|
26
|
+
readonly selection: SelectionManager;
|
|
27
|
+
readonly transform: TransformManager;
|
|
28
|
+
readonly history: History;
|
|
29
|
+
private currentModel;
|
|
30
|
+
private eventListeners;
|
|
31
|
+
constructor(options: EditorOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Set the current model being edited
|
|
34
|
+
*/
|
|
35
|
+
setModel(model: THREE.Group | null): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current model
|
|
38
|
+
*/
|
|
39
|
+
getModel(): THREE.Group | null;
|
|
40
|
+
/**
|
|
41
|
+
* Get the currently selected object
|
|
42
|
+
*/
|
|
43
|
+
getSelected(): THREE.Object3D | null;
|
|
44
|
+
/**
|
|
45
|
+
* Select an object
|
|
46
|
+
*/
|
|
47
|
+
select(object: THREE.Object3D | null): void;
|
|
48
|
+
/**
|
|
49
|
+
* Execute a command (adds to history)
|
|
50
|
+
*/
|
|
51
|
+
execute(command: Command): void;
|
|
52
|
+
/**
|
|
53
|
+
* Undo the last command
|
|
54
|
+
*/
|
|
55
|
+
undo(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Redo the last undone command
|
|
58
|
+
*/
|
|
59
|
+
redo(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Check if undo is available
|
|
62
|
+
*/
|
|
63
|
+
canUndo(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Check if redo is available
|
|
66
|
+
*/
|
|
67
|
+
canRedo(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Set transform mode
|
|
70
|
+
*/
|
|
71
|
+
setTransformMode(mode: "translate" | "rotate" | "scale"): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get current transform mode
|
|
74
|
+
*/
|
|
75
|
+
getTransformMode(): "translate" | "rotate" | "scale";
|
|
76
|
+
/**
|
|
77
|
+
* Add event listener
|
|
78
|
+
*/
|
|
79
|
+
on(event: EditorEvent, callback: EventCallback): void;
|
|
80
|
+
/**
|
|
81
|
+
* Remove event listener
|
|
82
|
+
*/
|
|
83
|
+
off(event: EditorEvent, callback: EventCallback): void;
|
|
84
|
+
/**
|
|
85
|
+
* Emit an event
|
|
86
|
+
*/
|
|
87
|
+
emit(event: EditorEvent, ...args: unknown[]): void;
|
|
88
|
+
/**
|
|
89
|
+
* Clean up resources
|
|
90
|
+
*/
|
|
91
|
+
dispose(): void;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=Editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../src/editor/Editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAElF,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,aAAa,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;CACzB;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAElD;;;GAGG;AACH,qBAAa,MAAM;IACjB,SAAgB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnC,SAAgB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrC,SAAgB,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;IAC9C,SAAgB,QAAQ,EAAE,aAAa,CAAC;IACxC,SAAgB,UAAU,EAAE,WAAW,CAAC;IAExC,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAC5C,SAAgB,SAAS,EAAE,gBAAgB,CAAC;IAC5C,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAmD;gBAE7D,OAAO,EAAE,aAAa;IAsClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI;IAOzC;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI;IAI9B;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;IAI3C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK/B;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI;IAI9D;;OAEG;IACH,gBAAgB,IAAI,WAAW,GAAG,QAAQ,GAAG,OAAO;IAIpD;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAOrD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI;IAItD;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIlD;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Command } from "./commands/Command";
|
|
2
|
+
type HistoryCallback = () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Manages undo/redo history for editor commands
|
|
5
|
+
*/
|
|
6
|
+
export declare class History {
|
|
7
|
+
private undoStack;
|
|
8
|
+
private redoStack;
|
|
9
|
+
private eventListeners;
|
|
10
|
+
/**
|
|
11
|
+
* Execute a command and add it to history
|
|
12
|
+
*/
|
|
13
|
+
execute(command: Command): void;
|
|
14
|
+
/**
|
|
15
|
+
* Undo the last command
|
|
16
|
+
*/
|
|
17
|
+
undo(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Redo the last undone command
|
|
20
|
+
*/
|
|
21
|
+
redo(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Check if undo is available
|
|
24
|
+
*/
|
|
25
|
+
canUndo(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if redo is available
|
|
28
|
+
*/
|
|
29
|
+
canRedo(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Clear all history
|
|
32
|
+
*/
|
|
33
|
+
clear(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get the number of items in undo stack
|
|
36
|
+
*/
|
|
37
|
+
getUndoCount(): number;
|
|
38
|
+
/**
|
|
39
|
+
* Get the number of items in redo stack
|
|
40
|
+
*/
|
|
41
|
+
getRedoCount(): number;
|
|
42
|
+
/**
|
|
43
|
+
* Add event listener
|
|
44
|
+
*/
|
|
45
|
+
on(event: string, callback: HistoryCallback): void;
|
|
46
|
+
/**
|
|
47
|
+
* Emit event
|
|
48
|
+
*/
|
|
49
|
+
private emit;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=History.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"History.d.ts","sourceRoot":"","sources":["../../src/editor/History.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,KAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAIlC;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,cAAc,CAAgD;IAEtE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA4B/B;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAOlD;;OAEG;IACH,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { Editor } from "./Editor";
|
|
3
|
+
type SelectionCallback = (object: THREE.Object3D | null) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Manages object selection via raycasting
|
|
6
|
+
*/
|
|
7
|
+
export declare class SelectionManager {
|
|
8
|
+
private editor;
|
|
9
|
+
private raycaster;
|
|
10
|
+
private mouse;
|
|
11
|
+
private selected;
|
|
12
|
+
private highlightedMaterials;
|
|
13
|
+
private eventListeners;
|
|
14
|
+
constructor(editor: Editor);
|
|
15
|
+
/**
|
|
16
|
+
* Handle click events for selection
|
|
17
|
+
*/
|
|
18
|
+
private handleClick;
|
|
19
|
+
/**
|
|
20
|
+
* Check if object is part of TransformControls
|
|
21
|
+
*/
|
|
22
|
+
private isTransformControlPart;
|
|
23
|
+
/**
|
|
24
|
+
* Select an object
|
|
25
|
+
*/
|
|
26
|
+
select(object: THREE.Object3D | null): void;
|
|
27
|
+
/**
|
|
28
|
+
* Deselect current object
|
|
29
|
+
*/
|
|
30
|
+
deselect(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Get currently selected object
|
|
33
|
+
*/
|
|
34
|
+
getSelected(): THREE.Object3D | null;
|
|
35
|
+
/**
|
|
36
|
+
* Apply highlight effect to object
|
|
37
|
+
*/
|
|
38
|
+
private applyHighlight;
|
|
39
|
+
/**
|
|
40
|
+
* Remove highlight effect
|
|
41
|
+
*/
|
|
42
|
+
private removeHighlight;
|
|
43
|
+
/**
|
|
44
|
+
* Add event listener
|
|
45
|
+
*/
|
|
46
|
+
on(event: string, callback: SelectionCallback): void;
|
|
47
|
+
/**
|
|
48
|
+
* Emit event
|
|
49
|
+
*/
|
|
50
|
+
private emit;
|
|
51
|
+
/**
|
|
52
|
+
* Clean up
|
|
53
|
+
*/
|
|
54
|
+
dispose(): void;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=SelectionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectionManager.d.ts","sourceRoot":"","sources":["../../src/editor/SelectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,KAAK,iBAAiB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAKjE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,oBAAoB,CAAoF;IAChH,OAAO,CAAC,cAAc,CAAkD;gBAE5D,MAAM,EAAE,MAAM;IAU1B;;OAEG;IACH,OAAO,CAAC,WAAW;IA2CnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;IAgB3C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI;IAIpC;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAOpD;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import type { BlockyModel } from "../types/blockymodel";
|
|
3
|
+
/**
|
|
4
|
+
* Serializer for exporting Three.js scene to BlockyModel format
|
|
5
|
+
*/
|
|
6
|
+
export declare class Serializer {
|
|
7
|
+
/**
|
|
8
|
+
* Serialize a Three.js model group to BlockyModel JSON
|
|
9
|
+
*/
|
|
10
|
+
serialize(model: THREE.Group): BlockyModel;
|
|
11
|
+
/**
|
|
12
|
+
* Check if an object should be serialized
|
|
13
|
+
*/
|
|
14
|
+
private shouldSerialize;
|
|
15
|
+
/**
|
|
16
|
+
* Serialize a single node
|
|
17
|
+
*/
|
|
18
|
+
private serializeNode;
|
|
19
|
+
/**
|
|
20
|
+
* Serialize position
|
|
21
|
+
*/
|
|
22
|
+
private serializePosition;
|
|
23
|
+
/**
|
|
24
|
+
* Serialize quaternion
|
|
25
|
+
*/
|
|
26
|
+
private serializeQuaternion;
|
|
27
|
+
/**
|
|
28
|
+
* Serialize shape
|
|
29
|
+
*/
|
|
30
|
+
private serializeShape;
|
|
31
|
+
/**
|
|
32
|
+
* Get default texture layout
|
|
33
|
+
*/
|
|
34
|
+
private getDefaultTextureLayout;
|
|
35
|
+
/**
|
|
36
|
+
* Export model to JSON string
|
|
37
|
+
*/
|
|
38
|
+
toJSON(model: THREE.Group): string;
|
|
39
|
+
/**
|
|
40
|
+
* Download model as .blockymodel file
|
|
41
|
+
*/
|
|
42
|
+
download(model: THREE.Group, filename?: string): void;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=Serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../src/editor/Serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,WAAW,EAQZ,MAAM,sBAAsB,CAAC;AAS9B;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,WAAW;IAiB1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4DtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM;IAKlC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAE,MAA4B,GAAG,IAAI;CAY3E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { TransformControls } from "three/examples/jsm/controls/TransformControls.js";
|
|
3
|
+
import type { Editor } from "./Editor";
|
|
4
|
+
type TransformMode = "translate" | "rotate" | "scale";
|
|
5
|
+
type TransformCallback = (...args: unknown[]) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Manages transform controls for selected objects
|
|
8
|
+
*/
|
|
9
|
+
export declare class TransformManager {
|
|
10
|
+
private editor;
|
|
11
|
+
private controls;
|
|
12
|
+
private mode;
|
|
13
|
+
private eventListeners;
|
|
14
|
+
private transformStartPosition;
|
|
15
|
+
private transformStartRotation;
|
|
16
|
+
private transformStartScale;
|
|
17
|
+
private isTransforming;
|
|
18
|
+
constructor(editor: Editor);
|
|
19
|
+
/**
|
|
20
|
+
* Handle dragging state changes
|
|
21
|
+
*/
|
|
22
|
+
private handleDraggingChanged;
|
|
23
|
+
/**
|
|
24
|
+
* Capture the start state before transform
|
|
25
|
+
*/
|
|
26
|
+
private captureStartState;
|
|
27
|
+
/**
|
|
28
|
+
* Create a command after transform completes
|
|
29
|
+
*/
|
|
30
|
+
private createCommand;
|
|
31
|
+
/**
|
|
32
|
+
* Handle object change during transform (live updates)
|
|
33
|
+
*/
|
|
34
|
+
private handleObjectChange;
|
|
35
|
+
/**
|
|
36
|
+
* Handle keyboard shortcuts
|
|
37
|
+
*/
|
|
38
|
+
private handleKeyDown;
|
|
39
|
+
/**
|
|
40
|
+
* Cancel current transform and restore original state
|
|
41
|
+
*/
|
|
42
|
+
private cancelTransform;
|
|
43
|
+
/**
|
|
44
|
+
* Attach controls to an object
|
|
45
|
+
*/
|
|
46
|
+
attach(object: THREE.Object3D | null): void;
|
|
47
|
+
/**
|
|
48
|
+
* Set transform mode
|
|
49
|
+
*/
|
|
50
|
+
setMode(mode: TransformMode): void;
|
|
51
|
+
/**
|
|
52
|
+
* Get current transform mode
|
|
53
|
+
*/
|
|
54
|
+
getMode(): TransformMode;
|
|
55
|
+
/**
|
|
56
|
+
* Get TransformControls instance
|
|
57
|
+
*/
|
|
58
|
+
getControls(): TransformControls;
|
|
59
|
+
/**
|
|
60
|
+
* Add event listener
|
|
61
|
+
*/
|
|
62
|
+
on(event: string, callback: TransformCallback): void;
|
|
63
|
+
/**
|
|
64
|
+
* Emit event
|
|
65
|
+
*/
|
|
66
|
+
private emit;
|
|
67
|
+
/**
|
|
68
|
+
* Clean up
|
|
69
|
+
*/
|
|
70
|
+
dispose(): void;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=TransformManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformManager.d.ts","sourceRoot":"","sources":["../../src/editor/TransformManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,KAAK,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AACtD,KAAK,iBAAiB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEtD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,cAAc,CAAkD;IAGxE,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,cAAc,CAAkB;gBAE5B,MAAM,EAAE,MAAM;IAuB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsDrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI;IAW3C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAMlC;;OAEG;IACH,OAAO,IAAI,aAAa;IAIxB;;OAEG;IACH,WAAW,IAAI,iBAAiB;IAIhC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAOpD;;OAEG;IACH,OAAO,CAAC,IAAI;IAIZ;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to add a child node to a parent
|
|
5
|
+
*/
|
|
6
|
+
export declare class AddNodeCommand extends BaseCommand {
|
|
7
|
+
readonly type = "AddNode";
|
|
8
|
+
readonly updatable = false;
|
|
9
|
+
private parent;
|
|
10
|
+
private child;
|
|
11
|
+
private index;
|
|
12
|
+
constructor(parent: THREE.Object3D, child: THREE.Object3D, index?: number);
|
|
13
|
+
execute(): void;
|
|
14
|
+
undo(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the added child
|
|
17
|
+
*/
|
|
18
|
+
getChild(): THREE.Object3D;
|
|
19
|
+
/**
|
|
20
|
+
* Get the parent
|
|
21
|
+
*/
|
|
22
|
+
getParent(): THREE.Object3D;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=AddNodeCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddNodeCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/AddNodeCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,SAAS,SAAS;IAE3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAS;gBAGpB,MAAM,EAAE,KAAK,CAAC,QAAQ,EACtB,KAAK,EAAE,KAAK,CAAC,QAAQ,EACrB,KAAK,CAAC,EAAE,MAAM;IAQhB,OAAO,IAAI,IAAI;IAUf,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC,QAAQ;IAI1B;;OAEG;IACH,SAAS,IAAI,KAAK,CAAC,QAAQ;CAG5B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* Base interface for all editor commands
|
|
4
|
+
* Commands implement the command pattern for undo/redo support
|
|
5
|
+
*/
|
|
6
|
+
export interface Command {
|
|
7
|
+
/**
|
|
8
|
+
* Unique identifier for this command type
|
|
9
|
+
*/
|
|
10
|
+
readonly type: string;
|
|
11
|
+
/**
|
|
12
|
+
* The object this command operates on
|
|
13
|
+
*/
|
|
14
|
+
readonly object: THREE.Object3D;
|
|
15
|
+
/**
|
|
16
|
+
* Execute the command (apply the new state)
|
|
17
|
+
*/
|
|
18
|
+
execute(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Undo the command (restore the previous state)
|
|
21
|
+
*/
|
|
22
|
+
undo(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Whether this command can be merged with subsequent commands of the same type
|
|
25
|
+
* Used for rapid updates (e.g., continuous dragging)
|
|
26
|
+
*/
|
|
27
|
+
readonly updatable: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Update this command with a new end state
|
|
30
|
+
* Only called if updatable is true and commands are of same type on same object
|
|
31
|
+
*/
|
|
32
|
+
update?(command: Command): void;
|
|
33
|
+
/**
|
|
34
|
+
* Timestamp when this command was created
|
|
35
|
+
*/
|
|
36
|
+
readonly timestamp: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Base class providing common functionality for commands
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class BaseCommand implements Command {
|
|
42
|
+
abstract readonly type: string;
|
|
43
|
+
readonly object: THREE.Object3D;
|
|
44
|
+
readonly updatable: boolean;
|
|
45
|
+
readonly timestamp: number;
|
|
46
|
+
constructor(object: THREE.Object3D, updatable?: boolean);
|
|
47
|
+
abstract execute(): void;
|
|
48
|
+
abstract undo(): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=Command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Command.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/Command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IAEhC;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;IAEhB;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,8BAAsB,WAAY,YAAW,OAAO;IAClD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,GAAE,OAAe;IAM9D,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,QAAQ,CAAC,IAAI,IAAI,IAAI;CACtB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to remove a node from its parent
|
|
5
|
+
*/
|
|
6
|
+
export declare class RemoveNodeCommand extends BaseCommand {
|
|
7
|
+
readonly type = "RemoveNode";
|
|
8
|
+
readonly updatable = false;
|
|
9
|
+
private parent;
|
|
10
|
+
private child;
|
|
11
|
+
private index;
|
|
12
|
+
constructor(child: THREE.Object3D);
|
|
13
|
+
execute(): void;
|
|
14
|
+
undo(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the removed child
|
|
17
|
+
*/
|
|
18
|
+
getChild(): THREE.Object3D;
|
|
19
|
+
/**
|
|
20
|
+
* Get the parent
|
|
21
|
+
*/
|
|
22
|
+
getParent(): THREE.Object3D;
|
|
23
|
+
/**
|
|
24
|
+
* Get the original index
|
|
25
|
+
*/
|
|
26
|
+
getIndex(): number;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=RemoveNodeCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoveNodeCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/RemoveNodeCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,SAAS;IAE3B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,KAAK,CAAC,QAAQ;IAUjC,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC,QAAQ;IAI1B;;OAEG;IACH,SAAS,IAAI,KAAK,CAAC,QAAQ;IAI3B;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand, type Command } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to set an object's position
|
|
5
|
+
*/
|
|
6
|
+
export declare class SetPositionCommand extends BaseCommand {
|
|
7
|
+
readonly type = "SetPosition";
|
|
8
|
+
readonly updatable = true;
|
|
9
|
+
private newPosition;
|
|
10
|
+
private oldPosition;
|
|
11
|
+
constructor(object: THREE.Object3D, newPosition: THREE.Vector3, oldPosition: THREE.Vector3);
|
|
12
|
+
execute(): void;
|
|
13
|
+
undo(): void;
|
|
14
|
+
update(command: Command): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the new position
|
|
17
|
+
*/
|
|
18
|
+
getNewPosition(): THREE.Vector3;
|
|
19
|
+
/**
|
|
20
|
+
* Get the old position
|
|
21
|
+
*/
|
|
22
|
+
getOldPosition(): THREE.Vector3;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SetPositionCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetPositionCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/SetPositionCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,QAAQ;IAE1B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAgB;gBAGjC,MAAM,EAAE,KAAK,CAAC,QAAQ,EACtB,WAAW,EAAE,KAAK,CAAC,OAAO,EAC1B,WAAW,EAAE,KAAK,CAAC,OAAO;IAO5B,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAIZ,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM9B;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,OAAO;IAI/B;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,OAAO;CAGhC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand, type Command } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to set a property on an object
|
|
5
|
+
*/
|
|
6
|
+
export declare class SetPropertyCommand extends BaseCommand {
|
|
7
|
+
readonly type = "SetProperty";
|
|
8
|
+
readonly updatable = true;
|
|
9
|
+
private propertyPath;
|
|
10
|
+
private newValue;
|
|
11
|
+
private oldValue;
|
|
12
|
+
constructor(object: THREE.Object3D, propertyPath: string, newValue: unknown, oldValue: unknown);
|
|
13
|
+
/**
|
|
14
|
+
* Clone a value if it's an object/array
|
|
15
|
+
*/
|
|
16
|
+
private cloneValue;
|
|
17
|
+
/**
|
|
18
|
+
* Get a nested property by path (e.g., "userData.size.x")
|
|
19
|
+
*/
|
|
20
|
+
private getProperty;
|
|
21
|
+
/**
|
|
22
|
+
* Set a nested property by path
|
|
23
|
+
*/
|
|
24
|
+
private setProperty;
|
|
25
|
+
execute(): void;
|
|
26
|
+
undo(): void;
|
|
27
|
+
update(command: Command): void;
|
|
28
|
+
/**
|
|
29
|
+
* Get the property path
|
|
30
|
+
*/
|
|
31
|
+
getPropertyPath(): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get the new value
|
|
34
|
+
*/
|
|
35
|
+
getNewValue(): unknown;
|
|
36
|
+
/**
|
|
37
|
+
* Get the old value
|
|
38
|
+
*/
|
|
39
|
+
getOldValue(): unknown;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=SetPropertyCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetPropertyCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/SetPropertyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,QAAQ;IAE1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,QAAQ,CAAU;gBAGxB,MAAM,EAAE,KAAK,CAAC,QAAQ,EACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,OAAO;IAQnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAIZ,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,WAAW,IAAI,OAAO;CAGvB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand, type Command } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to set an object's rotation
|
|
5
|
+
*/
|
|
6
|
+
export declare class SetRotationCommand extends BaseCommand {
|
|
7
|
+
readonly type = "SetRotation";
|
|
8
|
+
readonly updatable = true;
|
|
9
|
+
private newRotation;
|
|
10
|
+
private oldRotation;
|
|
11
|
+
constructor(object: THREE.Object3D, newRotation: THREE.Euler, oldRotation: THREE.Euler);
|
|
12
|
+
execute(): void;
|
|
13
|
+
undo(): void;
|
|
14
|
+
update(command: Command): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the new rotation
|
|
17
|
+
*/
|
|
18
|
+
getNewRotation(): THREE.Euler;
|
|
19
|
+
/**
|
|
20
|
+
* Get the old rotation
|
|
21
|
+
*/
|
|
22
|
+
getOldRotation(): THREE.Euler;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SetRotationCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetRotationCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/SetRotationCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,SAAS,QAAQ;IAE1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;gBAG/B,MAAM,EAAE,KAAK,CAAC,QAAQ,EACtB,WAAW,EAAE,KAAK,CAAC,KAAK,EACxB,WAAW,EAAE,KAAK,CAAC,KAAK;IAO1B,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAIZ,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM9B;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,KAAK;IAI7B;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,KAAK;CAG9B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
import { BaseCommand, type Command } from "./Command";
|
|
3
|
+
/**
|
|
4
|
+
* Command to set an object's scale
|
|
5
|
+
*/
|
|
6
|
+
export declare class SetScaleCommand extends BaseCommand {
|
|
7
|
+
readonly type = "SetScale";
|
|
8
|
+
readonly updatable = true;
|
|
9
|
+
private newScale;
|
|
10
|
+
private oldScale;
|
|
11
|
+
constructor(object: THREE.Object3D, newScale: THREE.Vector3, oldScale: THREE.Vector3);
|
|
12
|
+
execute(): void;
|
|
13
|
+
undo(): void;
|
|
14
|
+
update(command: Command): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the new scale
|
|
17
|
+
*/
|
|
18
|
+
getNewScale(): THREE.Vector3;
|
|
19
|
+
/**
|
|
20
|
+
* Get the old scale
|
|
21
|
+
*/
|
|
22
|
+
getOldScale(): THREE.Vector3;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SetScaleCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetScaleCommand.d.ts","sourceRoot":"","sources":["../../../src/editor/commands/SetScaleCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,SAAS,QAAQ;IAE1B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAgB;gBAG9B,MAAM,EAAE,KAAK,CAAC,QAAQ,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EACvB,QAAQ,EAAE,KAAK,CAAC,OAAO;IAOzB,OAAO,IAAI,IAAI;IAIf,IAAI,IAAI,IAAI;IAIZ,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM9B;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC,OAAO;IAI5B;;OAEG;IACH,WAAW,IAAI,KAAK,CAAC,OAAO;CAG7B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { Editor } from "./Editor";
|
|
2
|
+
export type { EditorEvent, EditorOptions } from "./Editor";
|
|
3
|
+
export { SelectionManager } from "./SelectionManager";
|
|
4
|
+
export { TransformManager } from "./TransformManager";
|
|
5
|
+
export { History } from "./History";
|
|
6
|
+
export { Serializer } from "./Serializer";
|
|
7
|
+
export type { Command } from "./commands/Command";
|
|
8
|
+
export { BaseCommand } from "./commands/Command";
|
|
9
|
+
export { SetPositionCommand } from "./commands/SetPositionCommand";
|
|
10
|
+
export { SetRotationCommand } from "./commands/SetRotationCommand";
|
|
11
|
+
export { SetScaleCommand } from "./commands/SetScaleCommand";
|
|
12
|
+
export { SetPropertyCommand } from "./commands/SetPropertyCommand";
|
|
13
|
+
export { AddNodeCommand } from "./commands/AddNodeCommand";
|
|
14
|
+
export { RemoveNodeCommand } from "./commands/RemoveNodeCommand";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export { Editor } from "./editor/Editor";
|
|
2
|
+
export { History } from "./editor/History";
|
|
3
|
+
export { SelectionManager } from "./editor/SelectionManager";
|
|
4
|
+
export { TransformManager } from "./editor/TransformManager";
|
|
5
|
+
export { Serializer } from "./editor/Serializer";
|
|
6
|
+
export { BaseCommand } from "./editor/commands/Command";
|
|
7
|
+
export type { Command } from "./editor/commands/Command";
|
|
8
|
+
export { SetPositionCommand } from "./editor/commands/SetPositionCommand";
|
|
9
|
+
export { SetRotationCommand } from "./editor/commands/SetRotationCommand";
|
|
10
|
+
export { SetScaleCommand } from "./editor/commands/SetScaleCommand";
|
|
11
|
+
export { SetPropertyCommand } from "./editor/commands/SetPropertyCommand";
|
|
12
|
+
export { AddNodeCommand } from "./editor/commands/AddNodeCommand";
|
|
13
|
+
export { RemoveNodeCommand } from "./editor/commands/RemoveNodeCommand";
|
|
14
|
+
export { PropertyPanel } from "./ui/PropertyPanel";
|
|
15
|
+
export { HierarchyPanel } from "./ui/HierarchyPanel";
|
|
16
|
+
export { UVEditor } from "./ui/UVEditor";
|
|
17
|
+
export { BlockyModelLoader } from "./loaders/BlockyModelLoader";
|
|
18
|
+
export { ViewerController } from "./viewer/ViewerController";
|
|
19
|
+
export type { BlockyModel, BlockyNode, BlockyShape, ShapeSettings, TextureLayout, FaceUV, Vec3, Vec2, Quaternion, ShapeType, ShadingMode, NormalDirection, } from "./types/blockymodel";
|
|
20
|
+
export { DEFAULT_POSITION, DEFAULT_ORIENTATION, DEFAULT_STRETCH, } from "./types/blockymodel";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAC"}
|