@planara/core 2.0.0 → 2.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.
Files changed (48) hide show
  1. package/dist/core/editor-renderer.d.ts +34 -2
  2. package/dist/core/editor-renderer.d.ts.map +1 -1
  3. package/dist/events/editor-events.d.ts +6 -0
  4. package/dist/events/editor-events.d.ts.map +1 -1
  5. package/dist/events/event-topics.d.ts +3 -1
  6. package/dist/events/event-topics.d.ts.map +1 -1
  7. package/dist/extensions/symmetric-axes-helper.d.ts.map +1 -0
  8. package/dist/handlers/display/wireframe-handler.d.ts +3 -4
  9. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  10. package/dist/handlers/select/mesh-select-handler.d.ts +1 -0
  11. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  12. package/dist/handlers/tool/base-tool-handler.d.ts +25 -0
  13. package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -0
  14. package/dist/handlers/tool/rotate-tool-handler.d.ts +19 -0
  15. package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -0
  16. package/dist/handlers/tool/scale-tool-handler.d.ts +19 -0
  17. package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -0
  18. package/dist/handlers/tool/translate-tool-handler.d.ts +19 -0
  19. package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -0
  20. package/dist/hub/editor-hub.d.ts +5 -2
  21. package/dist/hub/editor-hub.d.ts.map +1 -1
  22. package/dist/index.cjs.js +180 -180
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.es.js +6231 -5157
  26. package/dist/index.full.d.ts +52 -3
  27. package/dist/index.public.d.ts +38 -3
  28. package/dist/index.umd.js +147 -147
  29. package/dist/interfaces/api/transform-helpers-api.d.ts +25 -0
  30. package/dist/interfaces/api/transform-helpers-api.d.ts.map +1 -0
  31. package/dist/interfaces/handler/display-handler.d.ts +1 -0
  32. package/dist/interfaces/handler/display-handler.d.ts.map +1 -1
  33. package/dist/interfaces/handler/select-handler.d.ts +1 -0
  34. package/dist/interfaces/handler/select-handler.d.ts.map +1 -1
  35. package/dist/interfaces/handler/tool-handler.d.ts +14 -0
  36. package/dist/interfaces/handler/tool-handler.d.ts.map +1 -0
  37. package/dist/interfaces/manager/tool-manager.d.ts +8 -0
  38. package/dist/interfaces/manager/tool-manager.d.ts.map +1 -0
  39. package/dist/ioc/container.d.ts.map +1 -1
  40. package/dist/managers/display/display-manager.d.ts.map +1 -1
  41. package/dist/managers/select/select-manager.d.ts.map +1 -1
  42. package/dist/managers/tool/tool-manager.d.ts +18 -0
  43. package/dist/managers/tool/tool-manager.d.ts.map +1 -0
  44. package/dist/utils/renderer-api.d.ts +6 -1
  45. package/dist/utils/renderer-api.d.ts.map +1 -1
  46. package/package.json +2 -2
  47. package/dist/helpers/symmetric-axes-helper.d.ts.map +0 -1
  48. /package/dist/{helpers → extensions}/symmetric-axes-helper.d.ts +0 -0
@@ -2,6 +2,7 @@ import { DisplayMode } from '@planara/types';
2
2
  import { Figure } from '@planara/types';
3
3
  import { SelectMode } from '@planara/types';
4
4
  import * as THREE from 'three';
5
+ import { ToolType } from '@planara/types';
5
6
 
6
7
  /**
7
8
  * Тип позиции камеры в мире.
@@ -33,6 +34,11 @@ export declare type EditorEvents = {
33
34
  [EventTopics.SelectClick]: {
34
35
  mesh: THREE.Object3D;
35
36
  } | null;
37
+ /** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
38
+ [EventTopics.ToolSelect]: {
39
+ mode: SelectMode;
40
+ mesh: THREE.Object3D | null;
41
+ };
36
42
  };
37
43
 
38
44
  /**
@@ -42,10 +48,12 @@ export declare type EditorEvents = {
42
48
  export declare class EditorHub {
43
49
  private _displayManager;
44
50
  private _selectManager;
51
+ private _toolManager;
45
52
  private _renderer;
46
- constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
53
+ constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _toolManager: IToolManager, _renderer: EditorRenderer);
47
54
  setDisplayMode(mode: DisplayMode): void;
48
55
  setSelectMode(mode: SelectMode): void;
56
+ setToolMode(mode: ToolType): void;
49
57
  resizeRenderer(): void;
50
58
  updateRenderer(): void;
51
59
  addFigure(figure: Figure): void;
@@ -63,19 +71,51 @@ export declare class EditorRenderer extends Renderer {
63
71
  private _bus;
64
72
  /** Orbit-контроллер для управления камерой */
65
73
  private _orbit;
74
+ /** Transform-контроллер для редактирования */
75
+ private _transform;
76
+ private readonly _transformHelper;
77
+ /** Raycast для получения событий наведения/клика по модели*/
66
78
  private _raycaster;
79
+ /** Курсор мыши */
67
80
  private readonly _mouse;
81
+ /** Были ли инициализированы обработчики событий (hover/click) */
68
82
  private _isEventListenersAdded;
83
+ /**
84
+ * Последняя модель на которую наводились,
85
+ * необходима для отправки только уникальных событий в event bus
86
+ */
69
87
  private _lastHovered;
70
88
  constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
71
89
  /**
72
90
  * Обновление состояния рендерера.
73
91
  */
74
92
  protected update(): void;
93
+ /** Добавление фигуры на сцену */
75
94
  addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
76
- private initMouseListeners;
95
+ /**
96
+ * Смена отображения `TransformControls` в зависимости от типа инструмента.
97
+ * @param mode - тип инструмента для отображения `TransformControls`.
98
+ * @internal
99
+ */
100
+ setTransformControlsMode(mode: ToolType): void;
101
+ /**
102
+ * Добавление `TransformControls` к объекту.
103
+ * @param object - объект, к которому добавляются `TransformControls`.
104
+ * @internal
105
+ */
106
+ attachTransformControls(object: THREE.Object3D): void;
107
+ /**
108
+ * Удаление `TransformControls` с последнего выбранного объекта.
109
+ * @internal
110
+ */
111
+ detachTransformControls(): void;
112
+ /** Инициализация обработчиков событий на hover/click */
113
+ private _initMouseListeners;
114
+ /** Обработчик события для hover */
77
115
  private _handleMouseMove;
116
+ /** Обработчик события на click */
78
117
  private _handleMouseClick;
118
+ /** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
79
119
  private _processRaycastEvent;
80
120
  }
81
121
 
@@ -104,7 +144,9 @@ export declare enum EventTopics {
104
144
  /** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
105
145
  SelectHover = "select.hover",
106
146
  /** Событие клика по объекту. Payload: mesh: Mesh | null */
107
- SelectClick = "select.click"
147
+ SelectClick = "select.click",
148
+ /** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
149
+ ToolSelect = "tool.select"
108
150
  }
109
151
 
110
152
  /**
@@ -137,6 +179,13 @@ export declare interface IManager {
137
179
  export declare interface ISelectManager extends IManager {
138
180
  }
139
181
 
182
+ /**
183
+ * Маркерный интерфейс для менеджеров инструментов.
184
+ * @public
185
+ */
186
+ export declare interface IToolManager extends IManager {
187
+ }
188
+
140
189
  /** @public */
141
190
  export declare class ObjLoader {
142
191
  /** Позиции вершин */
@@ -2,6 +2,7 @@ import { DisplayMode } from '@planara/types';
2
2
  import { Figure } from '@planara/types';
3
3
  import { SelectMode } from '@planara/types';
4
4
  import * as THREE from 'three';
5
+ import { ToolType } from '@planara/types';
5
6
 
6
7
  /**
7
8
  * Тип позиции камеры в мире.
@@ -33,6 +34,11 @@ export declare type EditorEvents = {
33
34
  [EventTopics.SelectClick]: {
34
35
  mesh: THREE.Object3D;
35
36
  } | null;
37
+ /** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
38
+ [EventTopics.ToolSelect]: {
39
+ mode: SelectMode;
40
+ mesh: THREE.Object3D | null;
41
+ };
36
42
  };
37
43
 
38
44
  /**
@@ -42,10 +48,12 @@ export declare type EditorEvents = {
42
48
  export declare class EditorHub {
43
49
  private _displayManager;
44
50
  private _selectManager;
51
+ private _toolManager;
45
52
  private _renderer;
46
- constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
53
+ constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _toolManager: IToolManager, _renderer: EditorRenderer);
47
54
  setDisplayMode(mode: DisplayMode): void;
48
55
  setSelectMode(mode: SelectMode): void;
56
+ setToolMode(mode: ToolType): void;
49
57
  resizeRenderer(): void;
50
58
  updateRenderer(): void;
51
59
  addFigure(figure: Figure): void;
@@ -63,19 +71,37 @@ export declare class EditorRenderer extends Renderer {
63
71
  private _bus;
64
72
  /** Orbit-контроллер для управления камерой */
65
73
  private _orbit;
74
+ /** Transform-контроллер для редактирования */
75
+ private _transform;
76
+ private readonly _transformHelper;
77
+ /** Raycast для получения событий наведения/клика по модели*/
66
78
  private _raycaster;
79
+ /** Курсор мыши */
67
80
  private readonly _mouse;
81
+ /** Были ли инициализированы обработчики событий (hover/click) */
68
82
  private _isEventListenersAdded;
83
+ /**
84
+ * Последняя модель на которую наводились,
85
+ * необходима для отправки только уникальных событий в event bus
86
+ */
69
87
  private _lastHovered;
70
88
  constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
71
89
  /**
72
90
  * Обновление состояния рендерера.
73
91
  */
74
92
  protected update(): void;
93
+ /** Добавление фигуры на сцену */
75
94
  addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
76
- private initMouseListeners;
95
+ /* Excluded from this release type: setTransformControlsMode */
96
+ /* Excluded from this release type: attachTransformControls */
97
+ /* Excluded from this release type: detachTransformControls */
98
+ /** Инициализация обработчиков событий на hover/click */
99
+ private _initMouseListeners;
100
+ /** Обработчик события для hover */
77
101
  private _handleMouseMove;
102
+ /** Обработчик события на click */
78
103
  private _handleMouseClick;
104
+ /** Вспомогательный метод для получения модели, которую выбрали и отправки события в event bus */
79
105
  private _processRaycastEvent;
80
106
  }
81
107
 
@@ -104,7 +130,9 @@ export declare enum EventTopics {
104
130
  /** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
105
131
  SelectHover = "select.hover",
106
132
  /** Событие клика по объекту. Payload: mesh: Mesh | null */
107
- SelectClick = "select.click"
133
+ SelectClick = "select.click",
134
+ /** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
135
+ ToolSelect = "tool.select"
108
136
  }
109
137
 
110
138
  /**
@@ -137,6 +165,13 @@ export declare interface IManager {
137
165
  export declare interface ISelectManager extends IManager {
138
166
  }
139
167
 
168
+ /**
169
+ * Маркерный интерфейс для менеджеров инструментов.
170
+ * @public
171
+ */
172
+ export declare interface IToolManager extends IManager {
173
+ }
174
+
140
175
  /** @public */
141
176
  export declare class ObjLoader {
142
177
  /** Позиции вершин */