@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,140 @@
1
+ import { Box2 } from '@galacean/effects-math/es/extension/index';
2
+ import { Vector2 } from '../math';
3
+ import type { ImageCutConfig } from '../configs/types';
4
+ import type { VFXItem } from '@galacean/effects';
5
+ import { type InputEventKey, type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
6
+ import type { Control } from '@galacean/effects-plugin-gui';
7
+ import { Gizmo } from '../gizmo';
8
+ import { GizmoType } from '../gizmo-type';
9
+ import { type GestureCursorResult } from '../cursor';
10
+ import { ImageInteractionType, type ImageDirectionScaleParam, type ImageMoveParam, type ImageNoneParam } from './image-interaction';
11
+ /**
12
+ * 图片裁切工具结果
13
+ */
14
+ export type ImageCutResult = {
15
+ /** 归一化裁切盒,不依赖渲染帧投影。 */
16
+ normalizeCutBox: Box2;
17
+ };
18
+ /**
19
+ * 图片裁切缩放交互参数
20
+ */
21
+ export type ImageCutScaleParam = {
22
+ /** 交互类型 */
23
+ type: ImageInteractionType.SCALE;
24
+ /** 归一化裁切框 */
25
+ box: Box2;
26
+ /** 锚点(对角点) */
27
+ anchor: Vector2;
28
+ /** 归一化起始鼠标位置 */
29
+ startMouse: Vector2;
30
+ /** 归一化起始角点 */
31
+ startCorner: Vector2;
32
+ /** 锁定的宽高比 */
33
+ lockedAspect?: number;
34
+ };
35
+ /**
36
+ * 图片裁切交互参数
37
+ */
38
+ export type ImageCutInteractionParam = ImageNoneParam | ImageCutScaleParam | ImageDirectionScaleParam | ImageMoveParam;
39
+ /**
40
+ * 裁剪工具交互类型
41
+ */
42
+ export type ImageCutInteractionType = ImageInteractionType;
43
+ /** 在图片元素范围内移动或缩放归一化裁剪框。 */
44
+ export declare class ImageCutGizmo extends Gizmo {
45
+ result: ImageCutResult;
46
+ interactionParam: ImageCutInteractionParam;
47
+ readonly type = GizmoType.IMAGE_CUT;
48
+ /** 光标结果。 */
49
+ cursorResult: GestureCursorResult;
50
+ /** 仅供当前渲染帧使用的几何快照;输入不读取它。 */
51
+ private renderGeometry?;
52
+ private _isLockScale;
53
+ private mouseGrabbed;
54
+ /** 当前图片裁剪配置。 */
55
+ get config(): Readonly<ImageCutConfig>;
56
+ /** 当前选中的元素(直读 selection.getSelectedPlayerItems:id→VFXItem 已解析)。 */
57
+ get selectedItems(): VFXItem[];
58
+ /** 是否锁定宽高比缩放。 */
59
+ get isLockScale(): boolean;
60
+ /**
61
+ * 设置是否锁定宽高比缩放。
62
+ * @param state 是否锁定宽高比。
63
+ */
64
+ set isLockScale(state: boolean);
65
+ /**
66
+ * 更新裁剪框交互或悬停状态。
67
+ * @param event 鼠标移动事件。
68
+ */
69
+ onMouseMove(event: InputEventMouseMotion): void;
70
+ /**
71
+ * 继续当前裁剪框拖拽。
72
+ * @param event 鼠标拖拽事件。
73
+ */
74
+ onMouseDrag(event: InputEventMouseMotion): void;
75
+ /** 鼠标离开交互层:清交互类型(拖拽中不清)。 */
76
+ onMouseLeave(): void;
77
+ /**
78
+ * 命中裁剪框交互区域时开始操作。
79
+ * @param event 鼠标按下事件。
80
+ */
81
+ onMouseDown(event: InputEventMouseButton): void;
82
+ /**
83
+ * 结束裁剪框操作并提交结果。
84
+ * @param event 鼠标抬起事件。
85
+ */
86
+ onMouseUp(event: InputEventMouseButton): void;
87
+ /**
88
+ * 键盘松开:清除当前交互的锁定宽高比(下次拖拽重新算)。
89
+ * @param _keyCode 键盘事件
90
+ */
91
+ onKeyUp(_keyCode: InputEventKey): void;
92
+ /** 为本帧绘制创建裁剪投影。 */
93
+ onUpdate(): void;
94
+ /**
95
+ * 绘制裁剪蒙版、网格、边框与角点。
96
+ * @param control 绘制控制器。
97
+ */
98
+ draw(control: Control): void;
99
+ /**
100
+ * 刷新指针结果。
101
+ * @param activeType 交互类型
102
+ * @param angle 指针方向
103
+ */
104
+ refreshCursorResult(activeType: ImageCutInteractionType, angle?: number): void;
105
+ /**
106
+ * 获取当前裁切信息(裁切框 + 元素包围盒)。
107
+ * @returns 裁切信息对象,不可交互时返回 undefined
108
+ */
109
+ getCutInfo(): {
110
+ cutBox: Box2;
111
+ itemBox: Box2;
112
+ } | undefined;
113
+ /**
114
+ * 获取归一化裁切包围盒(min/max 取值 [0, 1],相对元素包围盒)。
115
+ */
116
+ getCutBox(): Box2 | undefined;
117
+ /**
118
+ * 设置归一化裁切包围盒(入参为归一化坐标,钳制到 [0, 1])。
119
+ * @param normalizeBox 归一化裁切包围盒
120
+ * @returns 设置成功时返回更新后的裁切框,不可交互时返回 undefined
121
+ */
122
+ setCutBox(normalizeBox: Box2): Box2 | undefined;
123
+ /** @returns 是否仅选中了一个可裁剪元素。 */
124
+ private isApplicableSelection;
125
+ /**
126
+ * drag:按交互类型处理裁切框移动/缩放/单向缩放。
127
+ * 支持 shift 锁定宽高比,结果以归一化裁切盒写入 result。
128
+ * @param event 鼠标事件(drag)
129
+ */
130
+ private updateGrab;
131
+ /** @returns 当前图片与裁剪框的视口投影。 */
132
+ private getSelectionGeometry;
133
+ /**
134
+ * 根据鼠标位置判定裁切框的交互类型(角点缩放/边线单向缩放/整体移动),
135
+ * 同时刷新光标方向。
136
+ * @param point 视图坐标鼠标位置
137
+ * @param inputPosition Control 本地坐标鼠标位置
138
+ */
139
+ private refreshInteractionType;
140
+ }
@@ -0,0 +1,135 @@
1
+ import { Box2 } from '@galacean/effects-math/es/extension/index';
2
+ import { Vector2 } from '../math';
3
+ import type { ImageExpandConfig } from '../configs/types';
4
+ import type { VFXItem } from '@galacean/effects';
5
+ import { type InputEventKey, type InputEventMouseButton, type InputEventMouseMotion } from '@galacean/effects';
6
+ import type { Control } from '@galacean/effects-plugin-gui';
7
+ import { Gizmo } from '../gizmo';
8
+ import { GizmoType } from '../gizmo-type';
9
+ import { type GestureCursorResult } from '../cursor';
10
+ import { ImageInteractionType, type ImageDirectionScaleParam, type ImageMoveParam, type ImageNoneParam } from './image-interaction';
11
+ /**
12
+ * 图片扩边缩放交互参数
13
+ */
14
+ export type ImageExpandScaleParam = {
15
+ /** 交互类型 */
16
+ type: ImageInteractionType.SCALE;
17
+ /** 归一化扩边框 */
18
+ box: Box2;
19
+ /** 起始角点索引 */
20
+ index: number;
21
+ /** 归一化起始鼠标位置 */
22
+ startMouse: Vector2;
23
+ /** 锁定的宽高比 */
24
+ lockedAspect?: number;
25
+ };
26
+ /**
27
+ * 图片扩边交互参数
28
+ */
29
+ export type ImageExpandInteractionParam = ImageNoneParam | ImageExpandScaleParam | ImageDirectionScaleParam | ImageMoveParam;
30
+ /** 图片扩边交互类型。 */
31
+ export type ImageExpandInteractionType = ImageInteractionType;
32
+ /**
33
+ * 图片扩边工具结果
34
+ */
35
+ export type ImageExpandResult = {
36
+ /** 当前归一化扩边框。 */
37
+ normalizeExpandBox: Box2;
38
+ };
39
+ /** 在图片范围外移动或缩放归一化扩边框。 */
40
+ export declare class ImageExpandGizmo extends Gizmo {
41
+ result: ImageExpandResult;
42
+ interactionParam: ImageExpandInteractionParam;
43
+ readonly type = GizmoType.IMAGE_EXPAND;
44
+ /** 光标结果。 */
45
+ cursorResult: GestureCursorResult;
46
+ private renderGeometry?;
47
+ private _isLockScale;
48
+ private mouseGrabbed;
49
+ /** 当前图片扩边配置。 */
50
+ get config(): Readonly<ImageExpandConfig>;
51
+ /** 当前选中的元素(直读 selection.getSelectedPlayerItems:id→VFXItem 已解析)。 */
52
+ get selectedItems(): VFXItem[];
53
+ /** 是否锁定宽高比缩放。 */
54
+ get isLockScale(): boolean;
55
+ /**
56
+ * 设置是否锁定宽高比缩放。
57
+ * @param state 是否锁定宽高比。
58
+ */
59
+ set isLockScale(state: boolean);
60
+ /**
61
+ * 更新扩边框交互或悬停状态。
62
+ * @param event 鼠标移动事件。
63
+ */
64
+ onMouseMove(event: InputEventMouseMotion): void;
65
+ /**
66
+ * 继续当前扩边框拖拽。
67
+ * @param event 鼠标拖拽事件。
68
+ */
69
+ onMouseDrag(event: InputEventMouseMotion): void;
70
+ /** 鼠标离开交互层:清交互类型(拖拽中不清)。 */
71
+ onMouseLeave(): void;
72
+ /**
73
+ * 命中扩边框交互区域时开始操作。
74
+ * @param event 鼠标按下事件。
75
+ */
76
+ onMouseDown(event: InputEventMouseButton): void;
77
+ /**
78
+ * 结束扩边框操作并提交结果。
79
+ * @param event 鼠标抬起事件。
80
+ */
81
+ onMouseUp(event: InputEventMouseButton): void;
82
+ /**
83
+ * 键盘松开:清除当前交互的锁定宽高比(下次拖拽重新算)。
84
+ * @param _keyCode 键盘事件
85
+ */
86
+ onKeyUp(_keyCode: InputEventKey): void;
87
+ /** 为本帧绘制创建扩边投影。 */
88
+ onUpdate(): void;
89
+ /**
90
+ * 绘制扩边蒙版、网格、边框与角点。
91
+ * @param control 绘制控制器。
92
+ */
93
+ draw(control: Control): void;
94
+ /**
95
+ * 刷新指针结果。
96
+ * @param activeType 交互类型。
97
+ * @param angle 指针方向角度。
98
+ */
99
+ refreshCursorResult(activeType: ImageExpandInteractionType, angle?: number): void;
100
+ /**
101
+ * 获取当前扩边信息(扩边框 + 元素包围盒)。
102
+ * @returns 扩边信息对象,不可交互时返回 undefined
103
+ */
104
+ getExpandInfo(): {
105
+ expandBox: Box2;
106
+ itemBox: Box2;
107
+ } | undefined;
108
+ /**
109
+ * 获取归一化扩边包围盒(相对元素包围盒,可超出 [0, 1])。
110
+ */
111
+ getExpandBox(): Box2 | undefined;
112
+ /**
113
+ * 设置归一化扩边包围盒(入参为归一化坐标,钳制为至少覆盖元素范围)。
114
+ * @param normalizeBox 归一化扩边包围盒
115
+ * @returns 更新后的扩边包围盒;未激活或无效状态返回 undefined
116
+ */
117
+ setExpandBox(normalizeBox: Box2): Box2 | undefined;
118
+ /** @returns 是否仅选中了一个可扩边元素。 */
119
+ private isApplicableSelection;
120
+ /**
121
+ * drag:按交互类型处理扩边框移动/缩放/单向缩放。
122
+ * 支持 shift 锁定宽高比,结果以归一化扩边盒写入 result。
123
+ * @param event 鼠标事件(drag)
124
+ */
125
+ private updateGrab;
126
+ /** @returns 当前图片与扩边框的视口投影。 */
127
+ private getSelectionGeometry;
128
+ /**
129
+ * 根据鼠标位置判定扩边框的交互类型(角点缩放/边线单向缩放/整体移动),
130
+ * 同时刷新光标方向。
131
+ * @param point 视图坐标鼠标位置
132
+ * @param inputPosition Control 本地坐标鼠标位置
133
+ */
134
+ private refreshInteractionType;
135
+ }
@@ -0,0 +1,40 @@
1
+ import type { Box2 } from '@galacean/effects-math/es/extension/index';
2
+ import type { Vector2 } from '../math';
3
+ /** 图片裁切和扩边的交互类型。 */
4
+ export declare enum ImageInteractionType {
5
+ /** 无交互。 */
6
+ NONE = "none",
7
+ /** 角点双轴缩放。 */
8
+ SCALE = "scale",
9
+ /** 边中点单轴缩放。 */
10
+ DIRECTION_SCALE = "direction-scale",
11
+ /** 移动交互框。 */
12
+ MOVE = "move"
13
+ }
14
+ /** 无图片交互参数。 */
15
+ export type ImageNoneParam = {
16
+ /** 交互类型。 */
17
+ type: ImageInteractionType.NONE;
18
+ };
19
+ /** 图片单轴缩放参数。 */
20
+ export type ImageDirectionScaleParam = {
21
+ /** 交互类型。 */
22
+ type: ImageInteractionType.DIRECTION_SCALE;
23
+ /** 交互开始时的归一化 Box2。 */
24
+ box: Box2;
25
+ /** 被拖拽边的索引。 */
26
+ index: number;
27
+ /** 交互开始时的归一化鼠标位置。 */
28
+ startMouse: Vector2;
29
+ /** 锁定的宽高比。 */
30
+ lockedAspect?: number;
31
+ };
32
+ /** 图片交互框移动参数。 */
33
+ export type ImageMoveParam = {
34
+ /** 交互类型。 */
35
+ type: ImageInteractionType.MOVE;
36
+ /** 交互开始时的归一化 Box2。 */
37
+ box: Box2;
38
+ /** 交互开始时的归一化鼠标位置。 */
39
+ startMouse: Vector2;
40
+ };
@@ -0,0 +1,146 @@
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 GestureCursorResult } from '../cursor';
5
+ import type { ItemCreateConfig } from '../configs/types';
6
+ /** 元素创建类型。 */
7
+ export declare enum ItemCreateType {
8
+ /** 不创建元素。 */
9
+ NONE = "none",
10
+ /** 创建文本元素。 */
11
+ TEXT = "text",
12
+ /** 创建视频生成器。 */
13
+ VIDEO_GENERATOR = "video-generator",
14
+ /** 创建图片生成器。 */
15
+ IMAGE_GENERATOR = "image-generator",
16
+ /** 创建画板。 */
17
+ FRAME = "frame"
18
+ }
19
+ /** 画板创建交互生成的几何与子元素数据。 */
20
+ export type FrameCreateData = {
21
+ /** 画板像素位置(中心点) */
22
+ position: [number, number];
23
+ /** 画板像素尺寸 [width, height] */
24
+ size: [number, number];
25
+ /** 框选命中的子元素 ID 列表 */
26
+ children: string[];
27
+ };
28
+ /** 固定宽度文字创建数据;垂直尺寸仍由文字默认样式决定。 */
29
+ export type TextCreateData = {
30
+ /** 文字像素位置(中心点) */
31
+ position: [number, number];
32
+ /** 水平拖拽得到的固定像素宽度 */
33
+ width: number;
34
+ };
35
+ /** 通过点击或拖拽创建文本、生成器和画板元素。 */
36
+ export declare class ItemCreateGizmo extends Gizmo {
37
+ readonly type = "item-create";
38
+ _createType: ItemCreateType;
39
+ /** 光标结果(GestureCursorResult) */
40
+ cursorResult: GestureCursorResult;
41
+ private dragStartPoint;
42
+ private dragStartViewPoint;
43
+ private pressStartedAt;
44
+ private mouseGrabbed;
45
+ private frameBox;
46
+ private frameChildren;
47
+ private interactiveChildrenBoxes;
48
+ private isFixedWidthText;
49
+ private textDragDirection;
50
+ private textBox;
51
+ private createItemId;
52
+ private dragCreationStarted;
53
+ /** 当前元素创建配置。 */
54
+ get config(): Readonly<ItemCreateConfig>;
55
+ /** 当前创建类型 */
56
+ get createType(): ItemCreateType;
57
+ /**
58
+ * 设置创建类型,变化时刷新光标。
59
+ * @param type 元素创建类型
60
+ */
61
+ set createType(type: ItemCreateType);
62
+ /**
63
+ * 更新已开始的元素创建交互。
64
+ * @param event 鼠标移动事件。
65
+ */
66
+ onMouseMove(event: InputEventMouseMotion): void;
67
+ /**
68
+ * 继续画板或固定宽度文本的拖拽创建。
69
+ * @param event 鼠标拖拽事件。
70
+ */
71
+ onMouseDrag(event: InputEventMouseMotion): void;
72
+ /**
73
+ * 初始化元素创建交互与预生成 ID。
74
+ * @param event 鼠标按下事件。
75
+ */
76
+ onMouseDown(event: InputEventMouseButton): void;
77
+ /**
78
+ * 提交或取消当前元素创建交互。
79
+ * @param event 鼠标抬起事件。
80
+ */
81
+ onMouseUp(event: InputEventMouseButton): void;
82
+ /** 按当前创建类型刷新鼠标光标样式。 */
83
+ refreshCursorResult(): void;
84
+ /** 刷新可被框选加入画板的子元素包围盒映射:过滤动效元素、画板元素及其子元素。 */
85
+ refreshInteractiveChildrenBoxes(): void;
86
+ /**
87
+ * 绘制画板或文本的创建区域,以及画板待收纳元素轮廓。
88
+ * @param control 绘制控制器。
89
+ */
90
+ draw(control: Control): void;
91
+ /** 释放元素创建交互状态。 */
92
+ dispose(): void;
93
+ /**
94
+ * 按当前创建类型更新拖拽预览。
95
+ * @param event 鼠标拖拽事件。
96
+ * @returns 是否处理了拖拽。
97
+ */
98
+ private updateGrab;
99
+ /**
100
+ * 更新画板拖拽区域及其待收纳子元素。
101
+ * @param event 鼠标拖拽事件。
102
+ */
103
+ private updateFrameDrag;
104
+ /**
105
+ * 超过水平距离阈值后更新固定宽度文本;预览另外等待时间阈值。
106
+ * @param event 鼠标拖拽事件。
107
+ * @param committing 是否正在松开提交,此时不等待预览时间阈值。
108
+ */
109
+ private updateTextDrag;
110
+ /**
111
+ * 发送拖拽创建的开始或更新事件。
112
+ * @param createInfo 当前元素创建信息。
113
+ */
114
+ private emitDragCreate;
115
+ /** @returns 当前画板拖拽预览对应的创建信息。 */
116
+ private getFrameDragCreateInfo;
117
+ /** @returns 当前文本拖拽预览对应的创建信息。 */
118
+ private getTextDragCreateInfo;
119
+ /** @returns 当前有效的拖拽创建信息。 */
120
+ private getCurrentDragCreateInfo;
121
+ /**
122
+ * @returns 拖拽创建中文本的实际视图包围盒;元素尚未就绪时退回手势预览盒。
123
+ */
124
+ private getTextPreviewBox;
125
+ /**
126
+ * 计算当前指针对应的视口位置。
127
+ * @param event 鼠标拖拽事件。
128
+ * @returns 当前视口位置。
129
+ */
130
+ private getCurrentViewPoint;
131
+ /**
132
+ * 根据两个端点创建轴对齐包围盒。
133
+ * @param start 起点。
134
+ * @param end 终点。
135
+ * @returns 轴对齐包围盒。
136
+ */
137
+ private createBox;
138
+ /**
139
+ * 将视口位置转换为像素坐标。
140
+ * @param point 视口位置。
141
+ * @returns 像素坐标。
142
+ */
143
+ private viewPositionToPixel;
144
+ /** 重置一次创建交互的全部临时状态。 */
145
+ private resetInteractionState;
146
+ }
@@ -0,0 +1,11 @@
1
+ import { type InputEventMouseButton } from '@galacean/effects';
2
+ import { Gizmo } from '../gizmo';
3
+ /** 点击当前动效范围外的画布空白区域时退出动效编辑。 */
4
+ export declare class LeaveEffectsEditGizmo extends Gizmo {
5
+ readonly type = "leave-effects-edit";
6
+ /**
7
+ * 在动效范围外的空白区域按下主键时退出编辑模式。
8
+ * @param event 鼠标按下事件
9
+ */
10
+ onMouseDown(event: InputEventMouseButton): void;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { Gizmo } from '../gizmo';
2
+ import { type InputEventMouseButton } from '@galacean/effects';
3
+ /** 在画布主键按下时退出行内文本编辑。 */
4
+ export declare class LeaveTextEditGizmo extends Gizmo {
5
+ readonly type = "leave-text-edit";
6
+ /**
7
+ * 处理主键按下并退出编辑模式。
8
+ * @param event 鼠标按下事件
9
+ */
10
+ onMouseDown(event: InputEventMouseButton): void;
11
+ }
@@ -0,0 +1,110 @@
1
+ import type { VFXItem } from '@galacean/effects';
2
+ import type { Control } from '@galacean/effects-plugin-gui';
3
+ import { Box2 } from '@galacean/effects-math/es/extension/index';
4
+ import { Gizmo } from '../gizmo';
5
+ import type { GizmoOwner } from '../gizmo-owner';
6
+ import type { LoadingItemOptions, LoadingManager } from './loading-manager';
7
+ /** 为目标元素叠加加载动画与提示文案。 */
8
+ export declare class LoadingGizmo extends Gizmo {
9
+ readonly type = "loading";
10
+ private configOff?;
11
+ private managerOff?;
12
+ private readonly manager;
13
+ private readonly loadingBoxSize;
14
+ private _idMap;
15
+ /**
16
+ * 创建加载覆盖层。
17
+ * @param owner Gizmo 宿主。
18
+ * @param manager 加载状态管理器。
19
+ */
20
+ constructor(owner: GizmoOwner, manager: LoadingManager);
21
+ /** 当前 Gizmo 实例持有的可销毁渲染投影。 */
22
+ get idMap(): Map<string, {
23
+ /** 归一化加载区域。 */
24
+ loadingBox: Box2;
25
+ /** 加载动画渲染对象。 */
26
+ loadingVFXItem: VFXItem;
27
+ /** 加载提示配置。 */
28
+ tip: LoadingItemOptions;
29
+ }>;
30
+ /** 当前 loading 元素 id 列表(由稳定 manager 派生)。 */
31
+ get loadingIds(): string[];
32
+ /** 当前加载覆盖层配置。 */
33
+ private get config();
34
+ /**
35
+ * 订阅 loading 集合变化:add/delete 后回调当前全量 id 列表。
36
+ * @param cb 收到当前全量 loading id 列表的回调
37
+ * @returns 退订函数,调用后取消对应监听
38
+ */
39
+ onLoadingChange(cb: (ids: string[]) => void): () => void;
40
+ /**
41
+ * 为指定元素添加 loading 覆盖层;同一元素不可重复添加。
42
+ * @param id 目标元素 ID
43
+ * @param options loading 配置(文案、位置、自定义区域、是否清空选中)
44
+ */
45
+ add(id: string, options?: LoadingItemOptions): void;
46
+ /**
47
+ * 移除指定元素的 loading 覆盖层并释放对应 VFXItem。
48
+ * @param id 目标元素 ID
49
+ */
50
+ delete(id: string): void;
51
+ /**
52
+ * 更新指定 loading 元素的提示文案。
53
+ * @param id 目标元素 ID
54
+ * @param options 待合并更新的 LoadingTip 属性
55
+ */
56
+ updateItem(id: string, options: LoadingItemOptions): void;
57
+ /** 根据目标元素的实时包围盒刷新加载动画。 */
58
+ onUpdate(): void;
59
+ /**
60
+ * 绘制所有加载提示文案。
61
+ * @param control 绘制控制器。
62
+ */
63
+ draw(control: Control): void;
64
+ /** 释放当前实例的渲染投影;稳定 LoadingManager 不随 Gizmo 重建清空。 */
65
+ dispose(): void;
66
+ /**
67
+ * 在片元着色器变化时重建加载动画对象。
68
+ * @param change 加载配置变更。
69
+ */
70
+ private onConfigChange;
71
+ /**
72
+ * 绘制单条加载提示,并将文本限制在加载区域内。
73
+ * @param control 绘制控制器。
74
+ * @param loadingBox 加载区域。
75
+ * @param itemBox 目标元素包围盒。
76
+ * @param tip 加载提示配置。
77
+ */
78
+ private drawLoadingTip;
79
+ /** 将可销毁的渲染投影同步到当前加载状态。 */
80
+ private syncManager;
81
+ /**
82
+ * 为加载状态创建渲染投影。
83
+ * @param id 目标元素 ID。
84
+ * @param state 加载状态。
85
+ */
86
+ private createProjection;
87
+ /** @returns 当前相机信息。 */
88
+ private getCameraInfo;
89
+ /** @returns 当前视口的缩放、平移与尺寸。 */
90
+ private getViewportParams;
91
+ /**
92
+ * 将视图坐标下的包围盒按当前视口缩放与平移变换为实际渲染包围盒。
93
+ * @param box 视图坐标下的包围盒
94
+ * @returns 经视口缩放与平移后的实际渲染包围盒
95
+ */
96
+ private getViewBoxByPixelBox;
97
+ /**
98
+ * 创建承载加载动画的 VFXItem。
99
+ * @returns 已绑定几何与材质的加载动画对象。
100
+ */
101
+ private createLoadingVFXItem;
102
+ /** 释放 loading 渲染对象,并同步恢复 Selection 的命中过滤。 */
103
+ private disposeLoadingVFXItem;
104
+ /**
105
+ * 按目标元素的实时包围盒更新加载动画变换。
106
+ * @param id 目标元素 ID。
107
+ * @param loadingItem 对应的加载渲染投影。
108
+ */
109
+ private updateLoadingVFXItemTransform;
110
+ }
@@ -0,0 +1,74 @@
1
+ import { EventEmitter } from '@galacean/effects';
2
+ import { type Box2 } from '@galacean/effects-math/es/extension/index';
3
+ import { Vector2 } from '../math';
4
+ /** 单个元素的加载提示配置。 */
5
+ export type LoadingItemOptions = {
6
+ /** 加载提示文本。 */
7
+ text?: string;
8
+ /** 相对目标元素实时包围盒左上角的视图像素偏移;未设置时文案在 loading 区域内居中。 */
9
+ position?: Vector2;
10
+ /** 打开 loading 时是否移除目标元素的选中状态。 */
11
+ clearSelected?: boolean;
12
+ /** 自定义加载区域。 */
13
+ loadingBox?: Box2;
14
+ };
15
+ /** 单个元素的当前加载状态。 */
16
+ export interface LoadingItemState {
17
+ /** 加载提示配置。 */
18
+ tip: LoadingItemOptions;
19
+ /** 自定义加载区域。 */
20
+ loadingBox?: Box2;
21
+ }
22
+ /** 加载状态集合的一次变更。 */
23
+ export type LoadingManagerChange = {
24
+ /** 变更后的全部加载元素 ID。 */
25
+ ids: string[];
26
+ /** 新增加载元素 ID。 */
27
+ addedIds: string[];
28
+ /** 已删除加载元素 ID。 */
29
+ removedIds: string[];
30
+ /** 已更新加载元素 ID。 */
31
+ updatedIds: string[];
32
+ };
33
+ /** 加载状态管理器事件参数。 */
34
+ type LoadingManagerEvents = {
35
+ /** 加载集合变更事件。 */
36
+ change: [LoadingManagerChange];
37
+ /** 请求移除选中元素事件。 */
38
+ removeselecteditems: [string[]];
39
+ };
40
+ /** 管理元素加载状态并向 LoadingGizmo 提供稳定数据。 */
41
+ export declare class LoadingManager extends EventEmitter<LoadingManagerEvents> {
42
+ private readonly items;
43
+ /** 当前加载元素 ID。 */
44
+ get ids(): string[];
45
+ /**
46
+ * 获取元素加载状态。
47
+ * @param id 元素 ID
48
+ * @returns 加载状态;不存在时返回 undefined
49
+ */
50
+ get(id: string): LoadingItemState | undefined;
51
+ /**
52
+ * 添加元素加载状态。
53
+ * @param id 元素 ID
54
+ * @param options 加载提示配置
55
+ */
56
+ add(id: string, options?: LoadingItemOptions): void;
57
+ /**
58
+ * 删除元素加载状态。
59
+ * @param id 元素 ID
60
+ */
61
+ delete(id: string): void;
62
+ /**
63
+ * 更新元素加载提示。
64
+ * @param id 元素 ID
65
+ * @param options 增量加载提示配置
66
+ */
67
+ update(id: string, options: LoadingItemOptions): void;
68
+ /**
69
+ * 发出包含完整 ID 列表的加载状态变更。
70
+ * @param change 增量变更
71
+ */
72
+ private emitChange;
73
+ }
74
+ export {};