@planara/core 2.1.1 → 2.2.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/dist/constants/colors.d.ts +24 -0
- package/dist/constants/colors.d.ts.map +1 -0
- package/dist/constants/layers.d.ts +39 -0
- package/dist/constants/layers.d.ts.map +1 -0
- package/dist/constants/threshold.d.ts +5 -0
- package/dist/constants/threshold.d.ts.map +1 -0
- package/dist/core/editor-renderer.d.ts +8 -2
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/core/preview-renderer.d.ts.map +1 -1
- package/dist/core/renderer.d.ts +55 -4
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/events/editor-events.d.ts +4 -4
- package/dist/events/editor-events.d.ts.map +1 -1
- package/dist/events/event-topics.d.ts +2 -2
- package/dist/events/event-topics.d.ts.map +1 -1
- package/dist/extensions/orbit-extension.d.ts +3 -2
- package/dist/extensions/orbit-extension.d.ts.map +1 -1
- package/dist/handlers/display/wireframe-handler.d.ts +2 -4
- package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
- package/dist/handlers/select/edge-select-handler.d.ts +46 -0
- package/dist/handlers/select/edge-select-handler.d.ts.map +1 -0
- package/dist/handlers/select/face-select-handler.d.ts +34 -0
- package/dist/handlers/select/face-select-handler.d.ts.map +1 -0
- package/dist/handlers/select/mesh-select-handler.d.ts +10 -5
- package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
- package/dist/handlers/tool/base-tool-handler.d.ts +6 -4
- package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/rotate-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/scale-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/translate-tool-handler.d.ts +2 -1
- package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
- package/dist/hub/editor-hub.d.ts +3 -2
- package/dist/hub/editor-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +230 -201
- package/dist/index.es.js +9106 -5883
- package/dist/index.full.d.ts +71 -18
- package/dist/index.public.d.ts +20 -18
- package/dist/index.umd.js +197 -168
- package/dist/interfaces/api/raycast-api.d.ts +23 -0
- package/dist/interfaces/api/raycast-api.d.ts.map +1 -0
- package/dist/interfaces/api/scene-api.d.ts +50 -0
- package/dist/interfaces/api/scene-api.d.ts.map +1 -0
- package/dist/interfaces/handler/handler.d.ts +2 -5
- package/dist/interfaces/handler/handler.d.ts.map +1 -1
- package/dist/interfaces/manager/manager.d.ts +2 -5
- package/dist/interfaces/manager/manager.d.ts.map +1 -1
- package/dist/interfaces/store/editor-store.d.ts +44 -0
- package/dist/interfaces/store/editor-store.d.ts.map +1 -0
- package/dist/ioc/container.d.ts.map +1 -1
- package/dist/managers/display/display-manager.d.ts +6 -4
- package/dist/managers/display/display-manager.d.ts.map +1 -1
- package/dist/managers/select/select-manager.d.ts +11 -2
- package/dist/managers/select/select-manager.d.ts.map +1 -1
- package/dist/managers/tool/tool-manager.d.ts +6 -7
- package/dist/managers/tool/tool-manager.d.ts.map +1 -1
- package/dist/store/index.d.ts +37 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/types/api/editor-api.d.ts +4 -0
- package/dist/types/api/editor-api.d.ts.map +1 -0
- package/dist/types/listener/selected-listener.d.ts +3 -0
- package/dist/types/listener/selected-listener.d.ts.map +1 -0
- package/dist/utils/renderer-api.d.ts +20 -2
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/index.full.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DisplayMode } from '@planara/types';
|
|
2
|
+
import { Disposable as Disposable_2 } from 'tsyringe';
|
|
2
3
|
import { Figure } from '@planara/types';
|
|
3
4
|
import { SelectMode } from '@planara/types';
|
|
4
5
|
import * as THREE from 'three';
|
|
@@ -26,13 +27,13 @@ export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
|
26
27
|
* @public
|
|
27
28
|
*/
|
|
28
29
|
export declare type EditorEvents = {
|
|
29
|
-
/** Событие наведения на объект (hover). Payload: объект с
|
|
30
|
+
/** Событие наведения на объект (hover). Payload: объект с пересечениями или null */
|
|
30
31
|
[EventTopics.SelectHover]: {
|
|
31
|
-
|
|
32
|
+
intersection: THREE.Intersection;
|
|
32
33
|
} | null;
|
|
33
|
-
/** Событие клика по объекту. Payload: объект с
|
|
34
|
+
/** Событие клика по объекту. Payload: объект с пересечениями или null */
|
|
34
35
|
[EventTopics.SelectClick]: {
|
|
35
|
-
|
|
36
|
+
intersection: THREE.Intersection;
|
|
36
37
|
} | null;
|
|
37
38
|
/** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
|
|
38
39
|
[EventTopics.ToolSelect]: {
|
|
@@ -45,7 +46,7 @@ export declare type EditorEvents = {
|
|
|
45
46
|
* Хаб для управления редактированием
|
|
46
47
|
* @public
|
|
47
48
|
*/
|
|
48
|
-
export declare class EditorHub {
|
|
49
|
+
export declare class EditorHub implements Disposable_2 {
|
|
49
50
|
private _displayManager;
|
|
50
51
|
private _selectManager;
|
|
51
52
|
private _toolManager;
|
|
@@ -57,7 +58,7 @@ export declare class EditorHub {
|
|
|
57
58
|
resizeRenderer(): void;
|
|
58
59
|
updateRenderer(): void;
|
|
59
60
|
addFigure(figure: Figure): void;
|
|
60
|
-
|
|
61
|
+
dispose(): Promise<void> | void;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
/**
|
|
@@ -75,7 +76,7 @@ export declare class EditorRenderer extends Renderer {
|
|
|
75
76
|
private _transform;
|
|
76
77
|
private readonly _transformHelper;
|
|
77
78
|
/** Raycast для получения событий наведения/клика по модели*/
|
|
78
|
-
private _raycaster;
|
|
79
|
+
private readonly _raycaster;
|
|
79
80
|
/** Курсор мыши */
|
|
80
81
|
private readonly _mouse;
|
|
81
82
|
/** Были ли инициализированы обработчики событий (hover/click) */
|
|
@@ -109,6 +110,12 @@ export declare class EditorRenderer extends Renderer {
|
|
|
109
110
|
* @internal
|
|
110
111
|
*/
|
|
111
112
|
detachTransformControls(): void;
|
|
113
|
+
/**
|
|
114
|
+
* Настройка режимов для `Raycaster`.
|
|
115
|
+
* @internal
|
|
116
|
+
*/
|
|
117
|
+
setRaycastMode(mode: SelectMode): void;
|
|
118
|
+
dispose(): void;
|
|
112
119
|
/** Инициализация обработчиков событий на hover/click */
|
|
113
120
|
private _initMouseListeners;
|
|
114
121
|
/** Обработчик события для hover */
|
|
@@ -141,9 +148,9 @@ export declare class EventBus {
|
|
|
141
148
|
* @public
|
|
142
149
|
*/
|
|
143
150
|
export declare enum EventTopics {
|
|
144
|
-
/** Событие наведения на объект (hover). Payload:
|
|
151
|
+
/** Событие наведения на объект (hover). Payload: intersection: Intersection | null */
|
|
145
152
|
SelectHover = "select.hover",
|
|
146
|
-
/** Событие клика по объекту. Payload:
|
|
153
|
+
/** Событие клика по объекту. Payload: intersection: Intersection | null */
|
|
147
154
|
SelectClick = "select.click",
|
|
148
155
|
/** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
|
|
149
156
|
ToolSelect = "tool.select"
|
|
@@ -161,15 +168,11 @@ export declare interface IDisplayManager extends IManager {
|
|
|
161
168
|
* Каждый менеджер отвечает за одну фичу.
|
|
162
169
|
* @public
|
|
163
170
|
*/
|
|
164
|
-
export declare interface IManager {
|
|
171
|
+
export declare interface IManager extends Disposable_2 {
|
|
165
172
|
/**
|
|
166
173
|
* Выполняет основное действие менеджера.
|
|
167
174
|
*/
|
|
168
175
|
manage(...args: unknown[]): void;
|
|
169
|
-
/**
|
|
170
|
-
* Освобождает ресурсы менеджера.
|
|
171
|
-
*/
|
|
172
|
-
destroy(): void;
|
|
173
176
|
}
|
|
174
177
|
|
|
175
178
|
/**
|
|
@@ -228,7 +231,7 @@ export declare class PreviewRenderer extends Renderer {
|
|
|
228
231
|
* Отвечает за инициализацию сцены, камеры и цикла рендеринга.
|
|
229
232
|
* @public
|
|
230
233
|
*/
|
|
231
|
-
export declare abstract class Renderer {
|
|
234
|
+
export declare abstract class Renderer implements Disposable_2 {
|
|
232
235
|
/** Корневой объект сцены */
|
|
233
236
|
protected scene: THREE.Scene;
|
|
234
237
|
/** Камера для сцены */
|
|
@@ -261,7 +264,7 @@ export declare abstract class Renderer {
|
|
|
261
264
|
*/
|
|
262
265
|
loop(): void;
|
|
263
266
|
/**
|
|
264
|
-
*
|
|
267
|
+
* Добавление фигуры на сцену.
|
|
265
268
|
* @param figure - Данные фигуры: position, normal, uv
|
|
266
269
|
*/
|
|
267
270
|
addFigure(figure: Figure): THREE.Mesh;
|
|
@@ -286,8 +289,58 @@ export declare abstract class Renderer {
|
|
|
286
289
|
* @internal
|
|
287
290
|
*/
|
|
288
291
|
getMeshes(): THREE.Mesh[];
|
|
289
|
-
/**
|
|
290
|
-
|
|
292
|
+
/**
|
|
293
|
+
* Добавляет объект в сцену и (опционально) выставляет ему слой.
|
|
294
|
+
*
|
|
295
|
+
* @param obj - Объект, который нужно добавить в сцену.
|
|
296
|
+
* @param layer - (Опц.) Номер слоя, который следует установить объекту перед добавлением.
|
|
297
|
+
*
|
|
298
|
+
* @remarks
|
|
299
|
+
* Если рендерер уже диспоузнут (scene отсутствует), метод тихо завершится.
|
|
300
|
+
* Слой задаётся через `obj.layers.set(layer)`, после чего объект добавляется в `this.scene`.
|
|
301
|
+
*
|
|
302
|
+
* @example
|
|
303
|
+
* // Добавить оверлей на слой подсветок:
|
|
304
|
+
* add(overlayLine, OVERLAY_LAYER);
|
|
305
|
+
*
|
|
306
|
+
* @internal
|
|
307
|
+
*/
|
|
308
|
+
addObject(obj: THREE.Object3D, layer?: number): void;
|
|
309
|
+
/**
|
|
310
|
+
* Удаляет объект из сцены (или из его родителя, если он есть).
|
|
311
|
+
*
|
|
312
|
+
* @param obj - Объект, который необходимо удалить.
|
|
313
|
+
*
|
|
314
|
+
* @remarks
|
|
315
|
+
* Если у объекта есть `parent`, он будет удалён из родителя. Иначе — метод попытается
|
|
316
|
+
* удалить его напрямую из `this.scene`. В рамках данного API метод не отвечает за
|
|
317
|
+
* освобождение GPU-ресурсов; освобождайте геометрию/материалы отдельно при необходимости.
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* // Снять оверлей со сцены:
|
|
321
|
+
* removeObject(overlayLine);
|
|
322
|
+
*
|
|
323
|
+
* @internal
|
|
324
|
+
*/
|
|
325
|
+
removeObject(obj: THREE.Object3D): void;
|
|
326
|
+
/**
|
|
327
|
+
* Включает указанный слой у активной камеры.
|
|
328
|
+
*
|
|
329
|
+
* @param layer - Номер слоя, который требуется сделать видимым для камеры.
|
|
330
|
+
*
|
|
331
|
+
* @remarks
|
|
332
|
+
* Полезно для показа служебных оверлеев (например, подсветки) на отдельном слое.
|
|
333
|
+
* Метод не изменяет слои Raycaster — ими должен управлять другой слой API (например, IRaycastAPI).
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* // Убедиться, что камера видит слой оверлеев:
|
|
337
|
+
* enableCameraLayer(OVERLAY_LAYER);
|
|
338
|
+
*
|
|
339
|
+
* @internal
|
|
340
|
+
*/
|
|
341
|
+
enableCameraLayer(layer: number): void;
|
|
342
|
+
/** Освобождает ресурсы рендерера, очищает внутренние данные. */
|
|
343
|
+
dispose(): Promise<void> | void;
|
|
291
344
|
}
|
|
292
345
|
|
|
293
346
|
export { }
|
package/dist/index.public.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DisplayMode } from '@planara/types';
|
|
2
|
+
import { Disposable as Disposable_2 } from 'tsyringe';
|
|
2
3
|
import { Figure } from '@planara/types';
|
|
3
4
|
import { SelectMode } from '@planara/types';
|
|
4
5
|
import * as THREE from 'three';
|
|
@@ -26,13 +27,13 @@ export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
|
26
27
|
* @public
|
|
27
28
|
*/
|
|
28
29
|
export declare type EditorEvents = {
|
|
29
|
-
/** Событие наведения на объект (hover). Payload: объект с
|
|
30
|
+
/** Событие наведения на объект (hover). Payload: объект с пересечениями или null */
|
|
30
31
|
[EventTopics.SelectHover]: {
|
|
31
|
-
|
|
32
|
+
intersection: THREE.Intersection;
|
|
32
33
|
} | null;
|
|
33
|
-
/** Событие клика по объекту. Payload: объект с
|
|
34
|
+
/** Событие клика по объекту. Payload: объект с пересечениями или null */
|
|
34
35
|
[EventTopics.SelectClick]: {
|
|
35
|
-
|
|
36
|
+
intersection: THREE.Intersection;
|
|
36
37
|
} | null;
|
|
37
38
|
/** Событие выбора объекта для редактирования. Payload: выбранный режим выборки */
|
|
38
39
|
[EventTopics.ToolSelect]: {
|
|
@@ -45,7 +46,7 @@ export declare type EditorEvents = {
|
|
|
45
46
|
* Хаб для управления редактированием
|
|
46
47
|
* @public
|
|
47
48
|
*/
|
|
48
|
-
export declare class EditorHub {
|
|
49
|
+
export declare class EditorHub implements Disposable_2 {
|
|
49
50
|
private _displayManager;
|
|
50
51
|
private _selectManager;
|
|
51
52
|
private _toolManager;
|
|
@@ -57,7 +58,7 @@ export declare class EditorHub {
|
|
|
57
58
|
resizeRenderer(): void;
|
|
58
59
|
updateRenderer(): void;
|
|
59
60
|
addFigure(figure: Figure): void;
|
|
60
|
-
|
|
61
|
+
dispose(): Promise<void> | void;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
/**
|
|
@@ -75,7 +76,7 @@ export declare class EditorRenderer extends Renderer {
|
|
|
75
76
|
private _transform;
|
|
76
77
|
private readonly _transformHelper;
|
|
77
78
|
/** Raycast для получения событий наведения/клика по модели*/
|
|
78
|
-
private _raycaster;
|
|
79
|
+
private readonly _raycaster;
|
|
79
80
|
/** Курсор мыши */
|
|
80
81
|
private readonly _mouse;
|
|
81
82
|
/** Были ли инициализированы обработчики событий (hover/click) */
|
|
@@ -95,6 +96,8 @@ export declare class EditorRenderer extends Renderer {
|
|
|
95
96
|
/* Excluded from this release type: setTransformControlsMode */
|
|
96
97
|
/* Excluded from this release type: attachTransformControls */
|
|
97
98
|
/* Excluded from this release type: detachTransformControls */
|
|
99
|
+
/* Excluded from this release type: setRaycastMode */
|
|
100
|
+
dispose(): void;
|
|
98
101
|
/** Инициализация обработчиков событий на hover/click */
|
|
99
102
|
private _initMouseListeners;
|
|
100
103
|
/** Обработчик события для hover */
|
|
@@ -127,9 +130,9 @@ export declare class EventBus {
|
|
|
127
130
|
* @public
|
|
128
131
|
*/
|
|
129
132
|
export declare enum EventTopics {
|
|
130
|
-
/** Событие наведения на объект (hover). Payload:
|
|
133
|
+
/** Событие наведения на объект (hover). Payload: intersection: Intersection | null */
|
|
131
134
|
SelectHover = "select.hover",
|
|
132
|
-
/** Событие клика по объекту. Payload:
|
|
135
|
+
/** Событие клика по объекту. Payload: intersection: Intersection | null */
|
|
133
136
|
SelectClick = "select.click",
|
|
134
137
|
/** Событие выбора объекта для редактирования. Payload: mode: SelectMode, object: THREE.Object3D | null */
|
|
135
138
|
ToolSelect = "tool.select"
|
|
@@ -147,15 +150,11 @@ export declare interface IDisplayManager extends IManager {
|
|
|
147
150
|
* Каждый менеджер отвечает за одну фичу.
|
|
148
151
|
* @public
|
|
149
152
|
*/
|
|
150
|
-
export declare interface IManager {
|
|
153
|
+
export declare interface IManager extends Disposable_2 {
|
|
151
154
|
/**
|
|
152
155
|
* Выполняет основное действие менеджера.
|
|
153
156
|
*/
|
|
154
157
|
manage(...args: unknown[]): void;
|
|
155
|
-
/**
|
|
156
|
-
* Освобождает ресурсы менеджера.
|
|
157
|
-
*/
|
|
158
|
-
destroy(): void;
|
|
159
158
|
}
|
|
160
159
|
|
|
161
160
|
/**
|
|
@@ -201,7 +200,7 @@ export declare class ObjLoader {
|
|
|
201
200
|
* Отвечает за инициализацию сцены, камеры и цикла рендеринга.
|
|
202
201
|
* @public
|
|
203
202
|
*/
|
|
204
|
-
export declare abstract class Renderer {
|
|
203
|
+
export declare abstract class Renderer implements Disposable_2 {
|
|
205
204
|
/** Корневой объект сцены */
|
|
206
205
|
protected scene: THREE.Scene;
|
|
207
206
|
/** Камера для сцены */
|
|
@@ -234,15 +233,18 @@ export declare abstract class Renderer {
|
|
|
234
233
|
*/
|
|
235
234
|
loop(): void;
|
|
236
235
|
/**
|
|
237
|
-
*
|
|
236
|
+
* Добавление фигуры на сцену.
|
|
238
237
|
* @param figure - Данные фигуры: position, normal, uv
|
|
239
238
|
*/
|
|
240
239
|
addFigure(figure: Figure): THREE.Mesh;
|
|
241
240
|
/* Excluded from this release type: addMesh */
|
|
242
241
|
/* Excluded from this release type: removeMesh */
|
|
243
242
|
/* Excluded from this release type: getMeshes */
|
|
244
|
-
|
|
245
|
-
|
|
243
|
+
/* Excluded from this release type: addObject */
|
|
244
|
+
/* Excluded from this release type: removeObject */
|
|
245
|
+
/* Excluded from this release type: enableCameraLayer */
|
|
246
|
+
/** Освобождает ресурсы рендерера, очищает внутренние данные. */
|
|
247
|
+
dispose(): Promise<void> | void;
|
|
246
248
|
}
|
|
247
249
|
|
|
248
250
|
export { }
|