@galacean/effects-plugin-editor-gizmo 2.10.4 → 2.11.0-alpha.1

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.
Files changed (125) hide show
  1. package/README.md +37 -5
  2. package/dist/2d/configs/builtin-configs.d.ts +14 -0
  3. package/dist/2d/configs/config-definition.d.ts +40 -0
  4. package/dist/2d/configs/config-manager.d.ts +52 -0
  5. package/dist/2d/configs/index.d.ts +6 -0
  6. package/dist/2d/configs/loading-config.d.ts +3 -0
  7. package/dist/2d/configs/types.d.ts +321 -0
  8. package/dist/2d/cursor-icons.d.ts +8 -0
  9. package/dist/2d/cursor.d.ts +36 -0
  10. package/dist/2d/drag-threshold.d.ts +13 -0
  11. package/dist/2d/drawing.d.ts +148 -0
  12. package/dist/2d/frame/frame-assisted-layout.d.ts +115 -0
  13. package/dist/2d/frame/frame-auto-layout.d.ts +47 -0
  14. package/dist/2d/frame/frame-manager.d.ts +169 -0
  15. package/dist/2d/frame/frame-resize.d.ts +13 -0
  16. package/dist/2d/frame/index.d.ts +5 -0
  17. package/dist/2d/frame/layout-calculations.d.ts +109 -0
  18. package/dist/2d/frame/types.d.ts +41 -0
  19. package/dist/2d/gesture-handler.d.ts +253 -0
  20. package/dist/2d/gizmo-action.d.ts +159 -0
  21. package/dist/2d/gizmo-manager.d.ts +105 -0
  22. package/dist/2d/gizmo-owner.d.ts +65 -0
  23. package/dist/2d/gizmo-tool.d.ts +15 -0
  24. package/dist/2d/gizmo-tools/hand-gizmo-tool.d.ts +4 -0
  25. package/dist/2d/gizmo-tools/image-cut-gizmo-tool.d.ts +7 -0
  26. package/dist/2d/gizmo-tools/image-expand-gizmo-tool.d.ts +7 -0
  27. package/dist/2d/gizmo-tools/index.d.ts +7 -0
  28. package/dist/2d/gizmo-tools/item-create-gizmo-tool.d.ts +10 -0
  29. package/dist/2d/gizmo-tools/mask-gizmo-tool.d.ts +7 -0
  30. package/dist/2d/gizmo-tools/move-gizmo-tool.d.ts +6 -0
  31. package/dist/2d/gizmo-tools/sprite-text-edit-gizmo-tool.d.ts +7 -0
  32. package/dist/2d/gizmo-type.d.ts +37 -0
  33. package/dist/2d/gizmo.d.ts +60 -0
  34. package/dist/2d/gizmos/box-selection-gizmo.d.ts +67 -0
  35. package/dist/2d/gizmos/change-selection-gizmo.d.ts +45 -0
  36. package/dist/2d/gizmos/click-drag-multiplex-gizmo.d.ts +95 -0
  37. package/dist/2d/gizmos/corner-rotation-gizmo.d.ts +101 -0
  38. package/dist/2d/gizmos/enter-edit-mode-gizmo.d.ts +11 -0
  39. package/dist/2d/gizmos/hand-gizmo.d.ts +67 -0
  40. package/dist/2d/gizmos/icon-gizmo.d.ts +107 -0
  41. package/dist/2d/gizmos/image-cut-gizmo.d.ts +140 -0
  42. package/dist/2d/gizmos/image-expand-gizmo.d.ts +135 -0
  43. package/dist/2d/gizmos/image-interaction.d.ts +40 -0
  44. package/dist/2d/gizmos/item-create-gizmo.d.ts +146 -0
  45. package/dist/2d/gizmos/leave-effects-edit-gizmo.d.ts +11 -0
  46. package/dist/2d/gizmos/leave-text-edit-gizmo.d.ts +11 -0
  47. package/dist/2d/gizmos/loading-gizmo.d.ts +110 -0
  48. package/dist/2d/gizmos/loading-manager.d.ts +74 -0
  49. package/dist/2d/gizmos/mask-gizmo.d.ts +153 -0
  50. package/dist/2d/gizmos/move-selection-gizmo.d.ts +64 -0
  51. package/dist/2d/gizmos/resize-selection-gizmo/anchored-resize.d.ts +40 -0
  52. package/dist/2d/gizmos/resize-selection-gizmo/index.d.ts +2 -0
  53. package/dist/2d/gizmos/resize-selection-gizmo/resize-selection-gizmo.d.ts +364 -0
  54. package/dist/2d/gizmos/resize-selection-gizmo/transform-types.d.ts +27 -0
  55. package/dist/2d/gizmos/select-text-gizmo.d.ts +77 -0
  56. package/dist/2d/gizmos/sprite-text-edit-gizmo.d.ts +149 -0
  57. package/dist/2d/gizmos/text-gizmo.d.ts +65 -0
  58. package/dist/2d/gizmos/viewport-overlay-gizmo.d.ts +66 -0
  59. package/dist/2d/index.d.ts +44 -0
  60. package/dist/2d/items/default-vfx-items.d.ts +45 -0
  61. package/dist/2d/items/index.d.ts +6 -0
  62. package/dist/2d/items/item-geometry.d.ts +69 -0
  63. package/dist/2d/items/item-hierarchy.d.ts +39 -0
  64. package/dist/2d/items/item-predicates.d.ts +31 -0
  65. package/dist/2d/items/media-controls.d.ts +39 -0
  66. package/dist/2d/items/vfx-item-factory.d.ts +13 -0
  67. package/dist/2d/math/core.d.ts +26 -0
  68. package/dist/2d/math/geometry.d.ts +83 -0
  69. package/dist/2d/math/index.d.ts +4 -0
  70. package/dist/2d/math/ray-caster.d.ts +56 -0
  71. package/dist/2d/math/utils.d.ts +6 -0
  72. package/dist/2d/modes/default-selection-mode.d.ts +19 -0
  73. package/dist/2d/modes/edit-mode.d.ts +18 -0
  74. package/dist/2d/modes/effects-edit-mode.d.ts +34 -0
  75. package/dist/2d/modes/index.d.ts +4 -0
  76. package/dist/2d/modes/text-edit-mode.d.ts +34 -0
  77. package/dist/2d/selection/create-selection-interaction-gizmo.d.ts +14 -0
  78. package/dist/2d/selection/index.d.ts +3 -0
  79. package/dist/2d/selection/selection.d.ts +338 -0
  80. package/dist/2d/selection/snap-manager.d.ts +130 -0
  81. package/dist/2d/text/index.d.ts +2 -0
  82. package/dist/2d/text/text-caret-mapper.d.ts +61 -0
  83. package/dist/2d/text/text-edit-session.d.ts +169 -0
  84. package/dist/2d/viewport/coordinates.d.ts +89 -0
  85. package/dist/2d/viewport/gizmo-viewport.d.ts +108 -0
  86. package/dist/2d/viewport/index.d.ts +6 -0
  87. package/dist/2d/viewport/types.d.ts +11 -0
  88. package/dist/2d/viewport/viewport-navigation-controller.d.ts +110 -0
  89. package/dist/2d/viewport/viewport-operations.d.ts +15 -0
  90. package/dist/2d/viewport/viewport-range.d.ts +9 -0
  91. package/dist/2d/viewport/viewport-utils.d.ts +32 -0
  92. package/dist/{gizmo-component.d.ts → 3d/gizmo-component.d.ts} +3 -5
  93. package/dist/3d/index.d.ts +4 -0
  94. package/dist/index.d.ts +2 -5
  95. package/dist/index.js +15030 -171
  96. package/dist/index.js.map +1 -1
  97. package/dist/index.min.js +2 -2
  98. package/dist/index.min.js.map +1 -1
  99. package/dist/index.mjs +14871 -173
  100. package/dist/index.mjs.map +1 -1
  101. package/package.json +9 -3
  102. /package/dist/{constants.d.ts → 3d/constants.d.ts} +0 -0
  103. /package/dist/{define.d.ts → 3d/define.d.ts} +0 -0
  104. /package/dist/{geometry → 3d/geometry}/box.d.ts +0 -0
  105. /package/dist/{geometry → 3d/geometry}/cone.d.ts +0 -0
  106. /package/dist/{geometry → 3d/geometry}/cylinder.d.ts +0 -0
  107. /package/dist/{geometry → 3d/geometry}/direction-light.d.ts +0 -0
  108. /package/dist/{geometry → 3d/geometry}/floor-line-edge.d.ts +0 -0
  109. /package/dist/{geometry → 3d/geometry}/floor-line.d.ts +0 -0
  110. /package/dist/{geometry → 3d/geometry}/frustum.d.ts +0 -0
  111. /package/dist/{geometry → 3d/geometry}/geometry.d.ts +0 -0
  112. /package/dist/{geometry → 3d/geometry}/index.d.ts +0 -0
  113. /package/dist/{geometry → 3d/geometry}/plane.d.ts +0 -0
  114. /package/dist/{geometry → 3d/geometry}/point-light.d.ts +0 -0
  115. /package/dist/{geometry → 3d/geometry}/sphere.d.ts +0 -0
  116. /package/dist/{geometry → 3d/geometry}/spot-light.d.ts +0 -0
  117. /package/dist/{geometry → 3d/geometry}/torus.d.ts +0 -0
  118. /package/dist/{gizmo-loader.d.ts → 3d/gizmo-loader.d.ts} +0 -0
  119. /package/dist/{gizmo-vfx-item.d.ts → 3d/gizmo-vfx-item.d.ts} +0 -0
  120. /package/dist/{math-utils.d.ts → 3d/math-utils.d.ts} +0 -0
  121. /package/dist/{mesh.d.ts → 3d/mesh.d.ts} +0 -0
  122. /package/dist/{raycast.d.ts → 3d/raycast.d.ts} +0 -0
  123. /package/dist/{shape.d.ts → 3d/shape.d.ts} +0 -0
  124. /package/dist/{util.d.ts → 3d/util.d.ts} +0 -0
  125. /package/dist/{wireframe.d.ts → 3d/wireframe.d.ts} +0 -0
@@ -0,0 +1,37 @@
1
+ /** 内置 Gizmo 的稳定类型标识。 */
2
+ export declare enum GizmoType {
3
+ /** 空类型。 */
4
+ NULL = "null",
5
+ /** 视口平移工具。 */
6
+ HAND = "hand",
7
+ /** 选区切换工具。 */
8
+ CHANGE_SELECTION = "change-selection",
9
+ /** 选区移动工具。 */
10
+ MOVE_SELECTION = "move-selection",
11
+ /** 框选工具。 */
12
+ BOX_SELECTION = "box-selection",
13
+ /** 点击与拖拽仲裁工具。 */
14
+ CLICK_DRAG_MULTIPLEX = "click-drag-multiplex",
15
+ /** 角点旋转工具。 */
16
+ CORNER_ROTATION = "corner-rotation",
17
+ /** 选区缩放工具。 */
18
+ RESIZE_SELECTION = "resize-selection",
19
+ /** 视口覆盖层。 */
20
+ VIEWPORT_OVERLAY = "viewport-overlay",
21
+ /** 图片裁切工具。 */
22
+ IMAGE_CUT = "image-cut",
23
+ /** 文本编辑工具。 */
24
+ TEXT = "text",
25
+ /** 蒙版编辑工具。 */
26
+ MASK = "mask",
27
+ /** 加载状态工具。 */
28
+ LOADING = "loading",
29
+ /** 图片扩边工具。 */
30
+ IMAGE_EXPAND = "image-expand",
31
+ /** 精准文字编辑工具。 */
32
+ SPRITE_TEXT_EDIT = "sprite-text-edit",
33
+ /** 媒体图标工具。 */
34
+ ICON = "icon",
35
+ /** 元素创建工具。 */
36
+ ITEM_CREATE = "item-create"
37
+ }
@@ -0,0 +1,60 @@
1
+ import type { InputEventKey, InputEventMouseButton, InputEventMouseMotion } from '@galacean/effects';
2
+ import type { Control } from '@galacean/effects-plugin-gui';
3
+ import type { GizmoOwner } from './gizmo-owner';
4
+ /** 定义 Gizmo 的绘制、鼠标和键盘交互生命周期。 */
5
+ export declare abstract class Gizmo {
6
+ /** Gizmo 类型标识(子类必须实现)。 */
7
+ abstract readonly type: string;
8
+ /** Gizmo 共享状态的宿主契约。 */
9
+ protected readonly _owner: GizmoOwner;
10
+ /**
11
+ * 创建 Gizmo。
12
+ * @param owner 宿主契约
13
+ */
14
+ constructor(owner: GizmoOwner);
15
+ /** 释放资源。子类可覆盖清理。 */
16
+ dispose(): void;
17
+ /** 在每帧更新时同步内部渲染状态。 */
18
+ onUpdate(): void;
19
+ /** 在输入候选仲裁前更新命中状态。 */
20
+ prepareForDispatch(): void;
21
+ /** @returns 是否需要越过拖拽阈值后才接收拖拽事件。 */
22
+ requiresDragThreshold(): boolean;
23
+ /**
24
+ * 绘制 Gizmo 视觉元素。
25
+ * @param _control 绘制控制器
26
+ */
27
+ draw(_control: Control): void;
28
+ /**
29
+ * 处理鼠标按下并按需接管交互会话。
30
+ * @param _event 鼠标按下事件
31
+ */
32
+ onMouseDown(_event: InputEventMouseButton): void;
33
+ /**
34
+ * 处理鼠标抬起并结束交互会话。
35
+ * @param _event 鼠标抬起事件
36
+ */
37
+ onMouseUp(_event: InputEventMouseButton): void;
38
+ /**
39
+ * 处理无按键状态的鼠标移动。
40
+ * @param _event 鼠标移动事件
41
+ */
42
+ onMouseMove(_event: InputEventMouseMotion): void;
43
+ /**
44
+ * 处理越过距离阈值后的鼠标拖拽。
45
+ * @param _event 鼠标拖拽事件
46
+ */
47
+ onMouseDrag(_event: InputEventMouseMotion): void;
48
+ /** 处理鼠标离开并清理悬停状态。 */
49
+ onMouseLeave(): void;
50
+ /**
51
+ * 处理键盘按下。
52
+ * @param _event 键盘按下事件
53
+ */
54
+ onKeyDown(_event: InputEventKey): void;
55
+ /**
56
+ * 处理键盘抬起。
57
+ * @param _event 键盘抬起事件
58
+ */
59
+ onKeyUp(_event: InputEventKey): void;
60
+ }
@@ -0,0 +1,67 @@
1
+ import { type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
2
+ import type { Control } from '@galacean/effects-plugin-gui';
3
+ import { Gizmo } from '../gizmo';
4
+ import type { GizmoOwner } from '../gizmo-owner';
5
+ import type { SelectionPreviewConfig } from '../configs/types';
6
+ /** 通过拖拽矩形更新选区并绘制框选区域。 */
7
+ export declare class BoxSelectionGizmo extends Gizmo {
8
+ private readonly deferToHitTarget;
9
+ readonly type = "box-selection";
10
+ private readonly overlay;
11
+ private readonly cursorPoint;
12
+ private readonly startPoint;
13
+ private isBoxSelecting;
14
+ private mouseGrabbed;
15
+ /**
16
+ * 创建框选交互。
17
+ * @param owner Gizmo 宿主。
18
+ * @param deferToHitTarget 命中已有对象时是否将交互让给其他候选。
19
+ */
20
+ constructor(owner: GizmoOwner, deferToHitTarget?: boolean);
21
+ /** 框选预览配置。 */
22
+ get config(): Readonly<SelectionPreviewConfig>;
23
+ /** 当前选区。 */
24
+ private get selection();
25
+ /**
26
+ * 忽略尚未进入拖拽阶段的移动事件。
27
+ * @param _event 鼠标移动事件。
28
+ */
29
+ onMouseMove(_event: InputEventMouseMotion): void;
30
+ /**
31
+ * 更新已开始的框选交互。
32
+ * @param event 鼠标拖拽事件。
33
+ */
34
+ onMouseDrag(event: InputEventMouseMotion): void;
35
+ /**
36
+ * 在空白区域按下主键时开始框选。
37
+ * @param event 鼠标按下事件。
38
+ */
39
+ onMouseDown(event: InputEventMouseButton): void;
40
+ /**
41
+ * 结束框选并提交选择变更。
42
+ * @param event 鼠标抬起事件。
43
+ */
44
+ onMouseUp(event: InputEventMouseButton): void;
45
+ /**
46
+ * 绘制当前框选区域。
47
+ * @param control 绘制控制器。
48
+ */
49
+ draw(control: Control): void;
50
+ /**
51
+ * 根据当前指针更新框选区域与候选选区。
52
+ * @param event 鼠标拖拽事件。
53
+ */
54
+ private updateGrab;
55
+ /**
56
+ * 在选区发生变化时提交操作事件。
57
+ * @param force 是否强制提交。
58
+ */
59
+ private emitMouseUpIfChanged;
60
+ /**
61
+ * 判断两个 ID 列表是否按顺序相等。
62
+ * @param left 左侧 ID 列表。
63
+ * @param right 右侧 ID 列表。
64
+ * @returns 是否相等。
65
+ */
66
+ private sameIds;
67
+ }
@@ -0,0 +1,45 @@
1
+ import { Gizmo } from '../gizmo';
2
+ import { type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
3
+ /** 处理单击、双击和右键选择,并协调与拖拽候选的选择时机。 */
4
+ export declare class ChangeSelectionGizmo extends Gizmo {
5
+ readonly type = "change-selection";
6
+ private session;
7
+ private hoverItemId;
8
+ /**
9
+ * 更新悬停目标。
10
+ * @param event 鼠标移动事件。
11
+ */
12
+ onMouseMove(event: InputEventMouseMotion): void;
13
+ /**
14
+ * 忽略拖拽阶段的悬停更新。
15
+ * @param _event 鼠标拖拽事件。
16
+ */
17
+ onMouseDrag(_event: InputEventMouseMotion): void;
18
+ /**
19
+ * 根据鼠标按键和命中结果开始选择交互。
20
+ * @param event 鼠标按下事件。
21
+ */
22
+ onMouseDown(event: InputEventMouseButton): void;
23
+ /**
24
+ * 完成或取消当前选择交互。
25
+ * @param event 鼠标抬起事件。
26
+ */
27
+ onMouseUp(event: InputEventMouseButton): void;
28
+ /** 释放选择交互状态。 */
29
+ dispose(): void;
30
+ /**
31
+ * 解析按下阶段应提交的选区。
32
+ * @param event 鼠标按下事件。
33
+ * @param session 当前按下会话。
34
+ * @returns 立即提交的选中项 ID;需要延迟或保持选区时返回 undefined。
35
+ */
36
+ private resolvePressSelection;
37
+ /**
38
+ * 根据右键命中结果更新上下文选区。
39
+ * @param event 鼠标按下事件。
40
+ * @returns 选区是否发生变化。
41
+ */
42
+ private resolveContextSelection;
43
+ /** 清除当前按下会话。 */
44
+ private resetSession;
45
+ }
@@ -0,0 +1,95 @@
1
+ import { Gizmo } from '../gizmo';
2
+ import type { GizmoOwner } from '../gizmo-owner';
3
+ import { InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
4
+ import type { Control } from '@galacean/effects-plugin-gui';
5
+ /** 点击与拖拽候选的仲裁配置。 */
6
+ export type ClickDragMultiplexOptions = {
7
+ /** 点击阶段的候选列表。 */
8
+ clickCandidates: Gizmo[];
9
+ /** 拖拽阶段的候选列表。 */
10
+ dragCandidates: Gizmo[];
11
+ /** 标准快捷键按下时优先尝试的拖拽候选。 */
12
+ auxiliaryBehavior?: Gizmo;
13
+ };
14
+ /** 在同一指针序列中延迟仲裁点击与拖拽候选。 */
15
+ export declare class ClickDragMultiplexGizmo extends Gizmo {
16
+ readonly type = "click-drag-multiplex";
17
+ /** 点击阶段的候选列表。 */
18
+ private readonly clickCandidateList;
19
+ /** 拖拽阶段的候选列表。 */
20
+ private readonly dragCandidateList;
21
+ /** 标准快捷键对应的辅助拖拽候选。 */
22
+ private readonly auxiliaryBehaviorGizmo;
23
+ /** 供拖拽候选重放的按下事件快照。 */
24
+ private downSnapshot;
25
+ /** 当前拖拽候选胜者。 */
26
+ private dragWinner;
27
+ /** 当前点击候选胜者。 */
28
+ private clickWinner;
29
+ /**
30
+ * 创建点击与拖拽仲裁器。
31
+ * @param owner Gizmo 宿主。
32
+ * @param options 候选配置。
33
+ */
34
+ constructor(owner: GizmoOwner, options: ClickDragMultiplexOptions);
35
+ /** @returns 点击候选的只读列表。 */
36
+ clickCandidates(): readonly Gizmo[];
37
+ /** @returns 拖拽候选的只读列表。 */
38
+ dragCandidates(): readonly Gizmo[];
39
+ /** @returns 标准快捷键对应的辅助拖拽候选。 */
40
+ auxiliaryBehavior(): Gizmo | undefined;
41
+ /**
42
+ * 将按下事件交给点击候选并保存事件快照。
43
+ * @param event 鼠标按下事件。
44
+ */
45
+ onMouseDown(event: InputEventMouseButton): void;
46
+ /**
47
+ * 将悬停移动事件广播给点击候选。
48
+ * @param event 鼠标移动事件。
49
+ */
50
+ onMouseMove(event: InputEventMouseMotion): void;
51
+ /**
52
+ * 解析拖拽胜者并将事件转发给它。
53
+ * @param event 鼠标拖拽事件。
54
+ */
55
+ onMouseDrag(event: InputEventMouseMotion): void;
56
+ /**
57
+ * 将抬起事件交给当前胜者。
58
+ * @param event 鼠标抬起事件。
59
+ */
60
+ onMouseUp(event: InputEventMouseButton): void;
61
+ /** 将每帧更新转发给点击和拖拽候选。 */
62
+ onUpdate(): void;
63
+ /**
64
+ * 按候选优先级绘制所有子 Gizmo。
65
+ * @param control 绘制控制器。
66
+ */
67
+ draw(control: Control): void;
68
+ /** 释放所有子 Gizmo 和交互快照。 */
69
+ dispose(): void;
70
+ /**
71
+ * 顺序派发按下事件并返回首个接受者。
72
+ * @param candidates 候选列表。
73
+ * @param event 鼠标按下事件。
74
+ * @returns 接受事件的候选。
75
+ */
76
+ private invokeMouseDown;
77
+ /**
78
+ * 向候选重放按下事件以尝试建立拖拽会话。
79
+ * @param candidate 待尝试的候选。
80
+ * @returns 接受事件的拖拽候选。
81
+ */
82
+ private resolveDragCandidate;
83
+ /** @returns 所有受托管的子 Gizmo。 */
84
+ private allChildren;
85
+ /** 清除当前点击与拖拽胜者。 */
86
+ private clearWinners;
87
+ /**
88
+ * 调用候选的指定鼠标阶段。
89
+ * @param candidate 目标候选。
90
+ * @param event 鼠标事件。
91
+ * @param phase 事件阶段。
92
+ * @returns 候选是否接受事件。
93
+ */
94
+ private invoke;
95
+ }
@@ -0,0 +1,101 @@
1
+ import { type InputEventMouseButton, type InputEventMouseMotion, type VFXItem } from '@galacean/effects';
2
+ import { type GestureCursorResult } from '../cursor';
3
+ import { Gizmo } from '../gizmo';
4
+ import type { GizmoOwner } from '../gizmo-owner';
5
+ import { GizmoType } from '../gizmo-type';
6
+ import { Vector2 } from '../math';
7
+ import type { ResizeSelectionGizmo } from './resize-selection-gizmo';
8
+ /** 通过选框角点命中区域旋转选中对象。 */
9
+ export declare class CornerRotationGizmo extends Gizmo {
10
+ private readonly resizeSelection;
11
+ readonly type: GizmoType;
12
+ cursorResult: GestureCursorResult;
13
+ /** 当前指针的视图坐标;拖拽期间按 Control 本地坐标增量推进。 */
14
+ cursorPoint: Vector2;
15
+ /** 上一帧指针的 Control 本地坐标。 */
16
+ lastPoint: Vector2;
17
+ /** 单次旋转会话累计的 z 轴角度,用于保持旋转光标朝向连续。 */
18
+ rotationAngle: number;
19
+ private rotationActive;
20
+ private anchor;
21
+ private interactiveDirection;
22
+ /** 未吸附的累计拖拽角,独立于已应用角度,避免逐帧取整丢失小幅移动。 */
23
+ private rawRotationAngle;
24
+ /** pointer down 时选区节点的公共世界角度,用于吸附最终朝向而非单次拖拽增量。 */
25
+ private initialSelectionAngle;
26
+ /** pointer down 时冻结的旋转对象,避免拖拽中途换目标。 */
27
+ private rotationItems;
28
+ /**
29
+ * 创建共享选框几何的角旋转交互。
30
+ * @param owner Gizmo 宿主。
31
+ * @param resizeSelection 提供选框几何的缩放 Gizmo。
32
+ */
33
+ constructor(owner: GizmoOwner, resizeSelection: ResizeSelectionGizmo);
34
+ /** 当前选中的对象。 */
35
+ get selectedItems(): VFXItem[];
36
+ /**
37
+ * 更新角旋转悬停或正在进行的旋转。
38
+ * @param event 鼠标移动事件。
39
+ */
40
+ onMouseMove(event: InputEventMouseMotion): void;
41
+ /**
42
+ * 继续当前角旋转交互。
43
+ * @param event 鼠标拖拽事件。
44
+ */
45
+ onMouseDrag(event: InputEventMouseMotion): void;
46
+ /**
47
+ * 在角旋转命中区域按下主键时开始旋转。
48
+ * @param event 鼠标按下事件。
49
+ */
50
+ onMouseDown(event: InputEventMouseButton): void;
51
+ /**
52
+ * 结束旋转并提交结果。
53
+ * @param event 鼠标抬起事件。
54
+ */
55
+ onMouseUp(event: InputEventMouseButton): void;
56
+ /** 清除离开视口后的旋转悬停状态。 */
57
+ onMouseLeave(): void;
58
+ /** @returns 当前选区是否支持旋转。 */
59
+ private isApplicableSelection;
60
+ /**
61
+ * 根据指针增量更新累计旋转角度。
62
+ * @param event 鼠标拖拽事件。
63
+ * @returns 是否处理了旋转。
64
+ */
65
+ private updateRotationDrag;
66
+ /**
67
+ * 应用累计旋转角,并在 Shift 按下时吸附角度。
68
+ * @param event 鼠标拖拽事件。
69
+ */
70
+ private applyRotation;
71
+ /** 重置旋转交互状态。 */
72
+ private resetOperation;
73
+ /**
74
+ * 查找指针命中的角旋转区域。
75
+ * @param point 指针视口坐标。
76
+ * @returns 角旋转命中结果。
77
+ */
78
+ private findRotationHit;
79
+ /** @returns 选框在视口中的局部坐标轴。 */
80
+ private boxLocalAxes;
81
+ /**
82
+ * 获取 Shift 吸附使用的初始绝对角度。
83
+ * 角度来自节点变换,不从选框或子元素包围盒反推;
84
+ * 多选节点没有公共角度时使用 0°。
85
+ * @returns 当前选区在视图平面内的初始角度(度)。
86
+ */
87
+ private resolveInitialSelectionAngle;
88
+ /**
89
+ * 刷新指定位置的旋转悬停状态。
90
+ * @param point 指针视口坐标。
91
+ * @returns 角旋转命中结果。
92
+ */
93
+ private refreshHover;
94
+ /**
95
+ * 更新旋转光标。
96
+ * @param angle 旋转方向的弧度值。
97
+ */
98
+ private setRotationCursor;
99
+ /** 清除旋转悬停状态。 */
100
+ private clearHover;
101
+ }
@@ -0,0 +1,11 @@
1
+ import { type InputEventMouseButton } from '@galacean/effects';
2
+ import { Gizmo } from '../gizmo';
3
+ /** 识别可编辑元素的双击,并进入对应的编辑模式。 */
4
+ export declare class EnterEditModeGizmo extends Gizmo {
5
+ readonly type = "enter-edit-mode";
6
+ /**
7
+ * 双击当前选中的文本或动效元素时进入对应编辑模式。
8
+ * @param event 鼠标按下事件
9
+ */
10
+ onMouseDown(event: InputEventMouseButton): void;
11
+ }
@@ -0,0 +1,67 @@
1
+ import { Gizmo } from '../gizmo';
2
+ import { type GestureCursorResult } from '../cursor';
3
+ import { type InputEventKey, type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
4
+ /** 通过中键或抓手模式拖拽平移视口。 */
5
+ export declare class HandGizmo extends Gizmo {
6
+ readonly type = "hand";
7
+ /** 空格按下时下一次左键拖拽应平移视口。 */
8
+ private panKeyPressed;
9
+ /** 当前拖拽会话态(NONE 未建立 / PAN 平移拖拽中)。 */
10
+ private dragType;
11
+ /** 上一帧鼠标位置(拖拽平移增量计算用)。 */
12
+ private lastPoint;
13
+ /** 当前抓手交互对应的光标。 */
14
+ get cursorResult(): GestureCursorResult;
15
+ /** @returns 是否正在平移或等待空格拖拽。 */
16
+ isPanning(): boolean;
17
+ /**
18
+ * 处理空格键按下并进入待平移状态。
19
+ * @param event 键盘按下事件。
20
+ */
21
+ onKeyDown(event: InputEventKey): void;
22
+ /**
23
+ * 处理空格键抬起并退出待平移状态。
24
+ * @param event 键盘抬起事件。
25
+ */
26
+ onKeyUp(event: InputEventKey): void;
27
+ /**
28
+ * 根据触发键开始视口平移。
29
+ * @param event 鼠标按下事件。
30
+ */
31
+ onMouseDown(event: InputEventMouseButton): void;
32
+ /**
33
+ * 更新悬停阶段的视口平移。
34
+ * @param event 鼠标移动事件。
35
+ */
36
+ onMouseMove(event: InputEventMouseMotion): void;
37
+ /**
38
+ * 更新拖拽阶段的视口平移。
39
+ * @param event 鼠标拖拽事件。
40
+ */
41
+ onMouseDrag(event: InputEventMouseMotion): void;
42
+ /**
43
+ * 结束视口平移。
44
+ * @param event 鼠标抬起事件。
45
+ */
46
+ onMouseUp(event: InputEventMouseButton): void;
47
+ /** 释放视口平移状态。 */
48
+ dispose(): void;
49
+ /**
50
+ * 处理指针移动并更新光标。
51
+ * @param event 鼠标移动事件。
52
+ */
53
+ private handlePointerMove;
54
+ /**
55
+ * 进入视口平移会话。
56
+ * @param event 鼠标按下事件。
57
+ */
58
+ private beginPan;
59
+ /**
60
+ * 将鼠标位移应用到视口。
61
+ * @param event 鼠标移动事件。
62
+ * @returns 视口是否发生变化。
63
+ */
64
+ private pan;
65
+ /** @returns 结束前是否存在平移会话。 */
66
+ private endPan;
67
+ }
@@ -0,0 +1,107 @@
1
+ import { type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
2
+ import type { Control } from '@galacean/effects-plugin-gui';
3
+ import { Gizmo } from '../gizmo';
4
+ import type { GizmoOwner } from '../gizmo-owner';
5
+ import { GizmoType } from '../gizmo-type';
6
+ import { type GestureCursorResult } from '../cursor';
7
+ import { Box2 } from '@galacean/effects-math/es/extension/index';
8
+ import { Vector2 } from '../math';
9
+ import type { IconConfig } from '../configs/types';
10
+ /** 辅助渲染 Icon 类型。 */
11
+ export declare enum IconType {
12
+ /** 视频播放 Icon */
13
+ VIDEO_PLAY = "video-play",
14
+ /** 视频生成器 Icon */
15
+ VIDEO_GENERATOR = "video-generator",
16
+ /** 图片生成器 Icon */
17
+ IMAGE_GENERATOR = "image-generator"
18
+ }
19
+ /** 元素辅助 Icon 结果。 */
20
+ export type IconResult = {
21
+ /** 选中元素 Id */
22
+ id: string;
23
+ /** Icon 类型 */
24
+ type: IconType;
25
+ /** 包围盒信息 */
26
+ box: Box2;
27
+ };
28
+ /** 元素辅助 Icon 交互参数。 */
29
+ export type IconInteractionParam = {
30
+ /** 鼠标悬停的视频元素 ID */
31
+ hoverVideoId?: string;
32
+ };
33
+ /** 渲染元素辅助 Icon(视频播放按钮、生成器图标等)。 */
34
+ export declare class IconGizmo extends Gizmo {
35
+ type: GizmoType;
36
+ results: IconResult[];
37
+ interactionParam: IconInteractionParam;
38
+ /** 光标结果(GestureCursorResult) */
39
+ cursorResult: GestureCursorResult;
40
+ private configOff?;
41
+ /** 图标纹理缓存,按 IconType 懒加载。 */
42
+ private iconTextures;
43
+ /** 图标纹理加载中的 Promise,避免重复发起加载。 */
44
+ private iconTexturePromises;
45
+ /**
46
+ * 创建元素辅助图标 Gizmo。
47
+ * @param owner Gizmo 宿主。
48
+ */
49
+ constructor(owner: GizmoOwner);
50
+ /** 当前图标配置。 */
51
+ get config(): Readonly<IconConfig>;
52
+ /**
53
+ * 更新视频播放图标的悬停状态与光标。
54
+ * @param event 鼠标移动事件。
55
+ */
56
+ onMouseMove(event: InputEventMouseMotion): void;
57
+ /** 清除离开交互层后的图标悬停状态。 */
58
+ onMouseLeave(): void;
59
+ /**
60
+ * 点击视频播放图标时发送播放事件。
61
+ * @param event 鼠标按下事件。
62
+ */
63
+ onMouseDown(event: InputEventMouseButton): void;
64
+ /** 根据当前指针与图标结果刷新光标。 */
65
+ refreshCursorResult(): void;
66
+ /**
67
+ * 更新悬停视频 ID 与图标结果。
68
+ * @param mouse 鼠标位置。
69
+ */
70
+ refreshVideoIconId(mouse: Vector2): void;
71
+ /** 刷新所有待绘制的元素辅助图标。 */
72
+ onUpdate(): void;
73
+ /**
74
+ * 绘制视频播放与生成器图标。
75
+ * @param control 绘制控制器。
76
+ */
77
+ draw(control: Control): void;
78
+ /** 释放配置监听器。 */
79
+ dispose(): void;
80
+ /**
81
+ * 在图标 URL 变化时清除对应纹理缓存。
82
+ * @param change 图标配置变更。
83
+ */
84
+ private onConfigChange;
85
+ /** 刷新视频播放与生成器图标的绘制结果。 */
86
+ private refreshResults;
87
+ /**
88
+ * 按 IconType 取得图标 URL。
89
+ * @param type 图标类型
90
+ * @returns 对应图标 URL,无匹配时返回空字符串
91
+ */
92
+ private getIconUrl;
93
+ /**
94
+ * 获取图标纹理(懒加载)。命中且未销毁则直接返回;否则发起一次异步加载并返回
95
+ * undefined(本帧跳过该图标,加载完成后由持续渲染循环自动重绘)。
96
+ * @param type 图标类型
97
+ * @param engine effects 引擎实例(取自 control)
98
+ * @returns 命中且未销毁的缓存纹理;未命中且发起异步加载时返回 undefined
99
+ */
100
+ private getIconTexture;
101
+ /**
102
+ * 查找鼠标命中的最上层视频对象。
103
+ * @param mouse 鼠标位置。
104
+ * @returns 命中视频对象的 ID。
105
+ */
106
+ private computeHoverVideoId;
107
+ }