@planara/core 1.5.0 → 2.0.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/README.md +10 -2
- package/dist/core/editor-renderer.d.ts +14 -61
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/core/preview-renderer.d.ts +2 -7
- package/dist/core/preview-renderer.d.ts.map +1 -1
- package/dist/core/renderer.d.ts +28 -9
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/events/editor-events.d.ts +18 -0
- package/dist/events/editor-events.d.ts.map +1 -0
- package/dist/events/event-bus.d.ts +17 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-topics.d.ts +12 -0
- package/dist/events/event-topics.d.ts.map +1 -0
- package/dist/extensions/orbit-extension.d.ts +5 -5
- package/dist/extensions/orbit-extension.d.ts.map +1 -1
- package/dist/handlers/display/wireframe-handler.d.ts +7 -14
- package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
- package/dist/handlers/select/mesh-select-handler.d.ts +32 -0
- package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -0
- package/dist/helpers/symmetric-axes-helper.d.ts +5 -0
- package/dist/helpers/symmetric-axes-helper.d.ts.map +1 -0
- package/dist/hub/app-hub.d.ts +1 -2
- package/dist/hub/app-hub.d.ts.map +1 -1
- package/dist/hub/editor-hub.d.ts +12 -4
- package/dist/hub/editor-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +3845 -34
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +21568 -1199
- package/dist/index.full.d.ts +119 -91
- package/dist/index.public.d.ts +99 -60
- package/dist/index.umd.js +3845 -34
- package/dist/interfaces/{mesh-api.d.ts → api/mesh-api.d.ts} +7 -6
- package/dist/interfaces/api/mesh-api.d.ts.map +1 -0
- package/dist/interfaces/{display-handler.d.ts → handler/display-handler.d.ts} +1 -0
- package/dist/interfaces/handler/display-handler.d.ts.map +1 -0
- package/dist/interfaces/{handler.d.ts → handler/handler.d.ts} +2 -1
- package/dist/interfaces/handler/handler.d.ts.map +1 -0
- package/dist/interfaces/handler/select-handler.d.ts +13 -0
- package/dist/interfaces/handler/select-handler.d.ts.map +1 -0
- package/dist/interfaces/manager/display-manager.d.ts +8 -0
- package/dist/interfaces/manager/display-manager.d.ts.map +1 -0
- package/dist/interfaces/{manager.d.ts → manager/manager.d.ts} +0 -6
- package/dist/interfaces/manager/manager.d.ts.map +1 -0
- package/dist/interfaces/manager/select-manager.d.ts +8 -0
- package/dist/interfaces/manager/select-manager.d.ts.map +1 -0
- package/dist/ioc/container.d.ts +3 -2
- package/dist/ioc/container.d.ts.map +1 -1
- package/dist/loaders/obj-loader.d.ts +6 -6
- package/dist/loaders/obj-loader.d.ts.map +1 -1
- package/dist/managers/{display-manager.d.ts → display/display-manager.d.ts} +4 -4
- package/dist/managers/display/display-manager.d.ts.map +1 -0
- package/dist/managers/select/select-manager.d.ts +19 -0
- package/dist/managers/select/select-manager.d.ts.map +1 -0
- package/dist/types/camera/camera-position.d.ts +10 -0
- package/dist/types/camera/camera-position.d.ts.map +1 -0
- package/dist/types/event/select-event-type.d.ts +6 -0
- package/dist/types/event/select-event-type.d.ts.map +1 -0
- package/dist/utils/renderer-api.d.ts +10 -12
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +6 -4
- package/dist/interfaces/display-handler.d.ts.map +0 -1
- package/dist/interfaces/handler.d.ts.map +0 -1
- package/dist/interfaces/manager.d.ts.map +0 -1
- package/dist/interfaces/mesh-api.d.ts.map +0 -1
- package/dist/interfaces/renderer-api.d.ts +0 -14
- package/dist/interfaces/renderer-api.d.ts.map +0 -1
- package/dist/managers/display-manager.d.ts.map +0 -1
- package/dist/utils/program-settings.d.ts +0 -13
- package/dist/utils/program-settings.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
## Planara Core
|
|
5
5
|
|
|
6
|
-
3D-библиотека на
|
|
6
|
+
3D-библиотека на Three.js для браузера, предназначенная для работы с `.obj` моделями и создания простого 3D-редактора.
|
|
7
7
|
|
|
8
8
|
Библиотека предоставляет базовые инструменты для визуализации, редактирования, добавления объектов и покраски.
|
|
9
9
|
|
|
10
10
|
### Возможности
|
|
11
11
|
|
|
12
|
-
- Рендеринг 3D сцены через `
|
|
12
|
+
- Рендеринг 3D сцены через `Three.js` (WebGL2).
|
|
13
13
|
|
|
14
14
|
- Базовая камера с Orbit-controls (вращение, зум).
|
|
15
15
|
|
|
@@ -22,3 +22,11 @@
|
|
|
22
22
|
- Покраска объектов (через материалы или vertex colors).
|
|
23
23
|
|
|
24
24
|
- Отображение сетки и осей (Grid и Axes Helper).
|
|
25
|
+
|
|
26
|
+
### Установка
|
|
27
|
+
|
|
28
|
+
Установка в проект осуществляется командой
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm i @planara/core
|
|
32
|
+
```
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Renderer } from './renderer';
|
|
2
|
-
import {
|
|
2
|
+
import { EventBus } from '../events/event-bus';
|
|
3
3
|
import { Figure } from '@planara/types';
|
|
4
|
+
import * as THREE from 'three';
|
|
4
5
|
/**
|
|
5
6
|
* Рендерер для редактора.
|
|
6
7
|
* Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
|
|
@@ -8,71 +9,23 @@ import { Figure } from '@planara/types';
|
|
|
8
9
|
* @public
|
|
9
10
|
*/
|
|
10
11
|
export declare class EditorRenderer extends Renderer {
|
|
12
|
+
private _canvas;
|
|
13
|
+
private _bus;
|
|
11
14
|
/** Orbit-контроллер для управления камерой */
|
|
12
|
-
private
|
|
13
|
-
|
|
14
|
-
private
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
private isEventListenersAdded;
|
|
19
|
-
/**
|
|
20
|
-
* Инициализация сцены редактора.
|
|
21
|
-
* Создает сетку, оси координат и orbit-контроллер.
|
|
22
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
23
|
-
*/
|
|
24
|
-
constructor(canvas: HTMLCanvasElement);
|
|
25
|
-
/**
|
|
26
|
-
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
27
|
-
*
|
|
28
|
-
* @param mesh - Фигура для добавления в сцену.
|
|
29
|
-
* @internal
|
|
30
|
-
*/
|
|
31
|
-
addMesh(mesh: Mesh): void;
|
|
32
|
-
/**
|
|
33
|
-
* Возвращает WebGL контекст рендерера.
|
|
34
|
-
*
|
|
35
|
-
* @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
|
|
36
|
-
* @internal
|
|
37
|
-
*/
|
|
38
|
-
getContext(): OGLRenderingContext;
|
|
39
|
-
/**
|
|
40
|
-
* Убирает фигуру со сцены
|
|
41
|
-
*
|
|
42
|
-
* @param mesh - Фигура для удаления со сцены.
|
|
43
|
-
* @internal
|
|
44
|
-
*/
|
|
45
|
-
removeMesh(mesh: Mesh): void;
|
|
46
|
-
/**
|
|
47
|
-
* Возвращает список всех фигур, находящихся в сцене.
|
|
48
|
-
*
|
|
49
|
-
* @returns Массив текущих фигур.
|
|
50
|
-
* @internal
|
|
51
|
-
*/
|
|
52
|
-
getMeshes(): Mesh[];
|
|
15
|
+
private _orbit;
|
|
16
|
+
private _raycaster;
|
|
17
|
+
private readonly _mouse;
|
|
18
|
+
private _isEventListenersAdded;
|
|
19
|
+
private _lastHovered;
|
|
20
|
+
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
53
21
|
/**
|
|
54
22
|
* Обновление состояния рендерера.
|
|
55
23
|
*/
|
|
56
24
|
protected update(): void;
|
|
57
|
-
|
|
58
|
-
* Метод для добавления фигуры.
|
|
59
|
-
* Настройка raycast.
|
|
60
|
-
* @param figure - Данные фигуры: position, normal, uv
|
|
61
|
-
*/
|
|
62
|
-
addFigure(figure: Figure): Mesh<import('ogl').Geometry, import('ogl').Program>;
|
|
63
|
-
/**
|
|
64
|
-
* Обновление uniform uHit для конкретной 3D-модели
|
|
65
|
-
*/
|
|
66
|
-
protected updateHitUniform(mesh: Mesh): void;
|
|
67
|
-
/**
|
|
68
|
-
* Инициализация обработчиков мыши для raycast
|
|
69
|
-
*/
|
|
25
|
+
addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
70
26
|
private initMouseListeners;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
private handleMouseMove;
|
|
75
|
-
/** Деструктор */
|
|
76
|
-
destroy(): void;
|
|
27
|
+
private _handleMouseMove;
|
|
28
|
+
private _handleMouseClick;
|
|
29
|
+
private _processRaycastEvent;
|
|
77
30
|
}
|
|
78
31
|
//# sourceMappingURL=editor-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,QAAQ;IAStB,OAAO,CAAC,OAAO;IACb,OAAO,CAAC,IAAI;IATlC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,YAAY,CAA+B;gBAGvB,OAAO,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ;IA0B5C;;OAEG;IACH,SAAS,CAAC,MAAM;IAIA,SAAS,CAAC,MAAM,EAAE,MAAM;IAkBxC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,iBAAiB,CAEvB;IAEF,OAAO,CAAC,oBAAoB;CAkC7B"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { Renderer } from './renderer';
|
|
2
2
|
/**
|
|
3
3
|
* Рендерер для предпросмотра 3D-модели.
|
|
4
|
-
* Настраивает сцену, камеру и орбитальную навигацию
|
|
5
|
-
* Наследуется от базового Renderer.
|
|
4
|
+
* Настраивает сцену, камеру и орбитальную навигацию по горизонтали.
|
|
6
5
|
* @alpha
|
|
7
6
|
*/
|
|
8
7
|
export declare class PreviewRenderer extends Renderer {
|
|
9
8
|
/** Orbit-контроллер для управления камерой */
|
|
10
|
-
private
|
|
11
|
-
/**
|
|
12
|
-
* Инициализация сцены предпросмотра.
|
|
13
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
14
|
-
*/
|
|
9
|
+
private _orbit;
|
|
15
10
|
constructor(canvas: HTMLCanvasElement);
|
|
16
11
|
/**
|
|
17
12
|
* Обновление состояния рендерера.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,iBAAiB;IAiBrC;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
|
package/dist/core/renderer.d.ts
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
import { Renderer as OGLRenderer, Camera, Transform, Mesh, Geometry, Program } from 'ogl';
|
|
2
1
|
import { Figure } from '@planara/types';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
3
|
/**
|
|
4
4
|
* Абстрактный базовый класс рендерера для работы с WebGL через OGL.
|
|
5
5
|
* Отвечает за инициализацию сцены, камеры и цикла рендеринга.
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
8
|
export declare abstract class Renderer {
|
|
9
|
-
/** Экземпляр рендерера OGL */
|
|
10
|
-
protected gl: OGLRenderer;
|
|
11
9
|
/** Корневой объект сцены */
|
|
12
|
-
protected scene:
|
|
10
|
+
protected scene: THREE.Scene;
|
|
13
11
|
/** Камера для сцены */
|
|
14
|
-
protected camera:
|
|
12
|
+
protected camera: THREE.PerspectiveCamera;
|
|
13
|
+
/** Экземпляр рендерера Three.js */
|
|
14
|
+
protected renderer: THREE.WebGLRenderer;
|
|
15
15
|
/** HTML-элемент canvas, на котором рендерится сцена */
|
|
16
16
|
protected canvas: HTMLCanvasElement;
|
|
17
|
-
/** Program для настройки рендеринга моделей */
|
|
18
|
-
protected program: Program;
|
|
19
17
|
/** Массив моделей на сцене */
|
|
20
|
-
protected meshes: Mesh[];
|
|
18
|
+
protected meshes: THREE.Mesh[];
|
|
21
19
|
/**
|
|
22
20
|
* Конструктор рендерера
|
|
23
21
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -43,7 +41,28 @@ export declare abstract class Renderer {
|
|
|
43
41
|
* Публичный метод для добавления фигуры.
|
|
44
42
|
* @param figure - Данные фигуры: position, normal, uv
|
|
45
43
|
*/
|
|
46
|
-
addFigure(figure: Figure): Mesh
|
|
44
|
+
addFigure(figure: Figure): THREE.Mesh;
|
|
45
|
+
/**
|
|
46
|
+
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
47
|
+
*
|
|
48
|
+
* @param mesh - Фигура для добавления в сцену.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
addMesh(mesh: THREE.Mesh): void;
|
|
52
|
+
/**
|
|
53
|
+
* Убирает фигуру со сцены
|
|
54
|
+
*
|
|
55
|
+
* @param mesh - Фигура для удаления со сцены.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
58
|
+
removeMesh(mesh: THREE.Mesh): void;
|
|
59
|
+
/**
|
|
60
|
+
* Возвращает список всех фигур, находящихся в сцене.
|
|
61
|
+
*
|
|
62
|
+
* @returns Массив текущих фигур.
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
getMeshes(): THREE.Mesh[];
|
|
47
66
|
/** Деструктор */
|
|
48
67
|
destroy(): void;
|
|
49
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,8BAAsB,QAAQ;IAC5B,4BAA4B;IAC5B,SAAS,CAAC,KAAK,EAAG,KAAK,CAAC,KAAK,CAAC;IAE9B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAG,KAAK,CAAC,iBAAiB,CAAC;IAE3C,mCAAmC;IACnC,SAAS,CAAC,QAAQ,EAAG,KAAK,CAAC,aAAa,CAAC;IAEzC,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAErC,8BAA8B;IAC9B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAM;IAEpC;;;OAGG;IACH,SAAS,aAAa,MAAM,EAAE,iBAAiB;IA+B/C;;OAEG;IACI,MAAM;IAMb;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB;;OAEG;IACI,IAAI;IAMX;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI;IAgC5C;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAK/B;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;IAKlC;;;;;OAKG;IACI,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;IAIhC,iBAAiB;IACV,OAAO;CAaf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EventTopics } from './event-topics';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
/**
|
|
4
|
+
* Типы событий редактора.
|
|
5
|
+
* Используются в EventEmitter для типизированной публикации и подписки на события.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export type EditorEvents = {
|
|
9
|
+
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
10
|
+
[EventTopics.SelectHover]: {
|
|
11
|
+
mesh: THREE.Object3D;
|
|
12
|
+
} | null;
|
|
13
|
+
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
14
|
+
[EventTopics.SelectClick]: {
|
|
15
|
+
mesh: THREE.Object3D;
|
|
16
|
+
} | null;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=editor-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-events.d.ts","sourceRoot":"","sources":["../../src/events/editor-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,2EAA2E;IAC3E,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAE3D,gEAAgE;IAChE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EditorEvents } from './editor-events';
|
|
2
|
+
/**
|
|
3
|
+
* Событийная шина редактора с топиками.
|
|
4
|
+
* Используется для publish/subscribe без прямых зависимостей.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare class EventBus {
|
|
8
|
+
private _emitter;
|
|
9
|
+
constructor();
|
|
10
|
+
/** Публикация события */
|
|
11
|
+
emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
|
|
12
|
+
/** Подписка на событие */
|
|
13
|
+
on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
14
|
+
/** Отписка от события */
|
|
15
|
+
off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AACH,qBACa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAgB;;IAMhC,yBAAyB;IACzB,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5E,0BAA0B;IAC1B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9F,yBAAyB;IACzB,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;CAGhG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Топики событий редактора.
|
|
3
|
+
* Используются для подписки/публикации через EventEmitter.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export declare enum EventTopics {
|
|
7
|
+
/** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
|
|
8
|
+
SelectHover = "select.hover",
|
|
9
|
+
/** Событие клика по объекту. Payload: mesh: Mesh | null */
|
|
10
|
+
SelectClick = "select.click"
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=event-topics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-topics.d.ts","sourceRoot":"","sources":["../../src/events/event-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sEAAsE;IACtE,WAAW,iBAAiB;IAE5B,2DAA2D;IAC3D,WAAW,iBAAiB;CAC7B"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Camera } from 'three';
|
|
2
|
+
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
|
|
2
3
|
/**
|
|
3
|
-
* Расширение для
|
|
4
|
+
* Расширение для OrbitControls с отслеживанием управления камерой
|
|
4
5
|
* @internal
|
|
5
6
|
*/
|
|
6
|
-
export declare class OrbitWithState extends
|
|
7
|
+
export declare class OrbitWithState extends OrbitControls {
|
|
7
8
|
/** Используется ли Orbit-controls */
|
|
8
9
|
isInteracting: boolean;
|
|
9
|
-
|
|
10
|
-
constructor(object: any, options?: any);
|
|
10
|
+
constructor(camera: Camera, domElement?: HTMLElement | null);
|
|
11
11
|
/** Очистка новых обработчиков событий */
|
|
12
12
|
destroy(): void;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;;GAGG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;gBAE1B,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,IAAI;IAU3D,yCAAyC;IAClC,OAAO;CAMf"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IDisplayHandler } from '../../interfaces/display-handler';
|
|
1
|
+
import { IDisplayHandler } from '../../interfaces/handler/display-handler';
|
|
2
2
|
import { RendererApi } from '../../utils/renderer-api';
|
|
3
3
|
import { DisplayMode } from '@planara/types';
|
|
4
4
|
/**
|
|
@@ -7,31 +7,24 @@ import { DisplayMode } from '@planara/types';
|
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
export declare class WireframeHandler implements IDisplayHandler {
|
|
10
|
-
private api;
|
|
11
10
|
/** Режим отображения */
|
|
12
11
|
readonly mode: DisplayMode;
|
|
13
|
-
/**
|
|
14
|
-
private
|
|
15
|
-
/**
|
|
16
|
-
private readonly
|
|
17
|
-
/** WebGl контекст */
|
|
18
|
-
private readonly context;
|
|
12
|
+
/** Список wireframe-объектов для текущих мешей */
|
|
13
|
+
private _wireframes;
|
|
14
|
+
/** Ссылка на API рендерера */
|
|
15
|
+
private readonly _api;
|
|
19
16
|
constructor(api: RendererApi);
|
|
20
17
|
/**
|
|
21
18
|
* Применяет wireframe-режим к сцене.
|
|
22
19
|
*/
|
|
23
20
|
handle(): void;
|
|
24
21
|
/**
|
|
25
|
-
*
|
|
22
|
+
* Отключает wireframe-режим и возвращает оригинальные меши.
|
|
26
23
|
*/
|
|
27
24
|
rollback(): void;
|
|
28
25
|
/**
|
|
29
|
-
*
|
|
26
|
+
* Очистка ресурсов.
|
|
30
27
|
*/
|
|
31
28
|
destroy(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Создание wireframe-моделей для фигур на сцене.
|
|
34
|
-
*/
|
|
35
|
-
private createWireMeshes;
|
|
36
29
|
}
|
|
37
30
|
//# sourceMappingURL=wireframe-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;IACtD,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,kDAAkD;IAClD,OAAO,CAAC,WAAW,CAA4B;IAE/C,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAEA,GAAG,EAAE,WAAW;IAInD;;OAEG;IACI,MAAM,IAAI,IAAI;IAwCrB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAoBvB;;OAEG;IACI,OAAO,IAAI,IAAI;CAOvB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ISelectHandler } from '../../interfaces/handler/select-handler';
|
|
2
|
+
import { SelectMode } from '@planara/types';
|
|
3
|
+
import { EditorEvents } from '../../events/editor-events';
|
|
4
|
+
import { EventTopics } from '../../events/event-topics';
|
|
5
|
+
import { SelectEventType } from '../../types/event/select-event-type';
|
|
6
|
+
/**
|
|
7
|
+
* Хендлер для выборки моделей.
|
|
8
|
+
* Управляет сценой через payload события рендерера.
|
|
9
|
+
* Обрабатывает hover и click.
|
|
10
|
+
* Меняет цвет ребер конкретной модели из payload, в случае null возвращает исходное состояние.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MeshSelectHandler implements ISelectHandler {
|
|
13
|
+
/** Режим, которым управляет хендлер, нужен только менеджеру */
|
|
14
|
+
readonly mode: SelectMode;
|
|
15
|
+
/** Фигура, на которую навелись в данный момент */
|
|
16
|
+
private _hoveredMesh;
|
|
17
|
+
/** Фигура, которую выбрали в данный момент */
|
|
18
|
+
private _selectedMesh;
|
|
19
|
+
/** Цвет граней для фигуры, на которую навелись */
|
|
20
|
+
private readonly _hoverColor;
|
|
21
|
+
/** Цвет граней для выделенной фигуры */
|
|
22
|
+
private readonly _selectColor;
|
|
23
|
+
/** Изначальный цвет граней у модели, перед наложением эффектов*/
|
|
24
|
+
private readonly _defaultColor;
|
|
25
|
+
constructor();
|
|
26
|
+
handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
|
|
27
|
+
rollback(): void;
|
|
28
|
+
destroy(): void;
|
|
29
|
+
/** вспомогательный метод для изменения цвета ребер меша */
|
|
30
|
+
private _setEdgesColor;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=mesh-select-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/mesh-select-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE;;;;;GAKG;AACH,qBACa,iBAAkB,YAAW,cAAc;IACtD,+DAA+D;IAC/D,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,kDAAkD;IAClD,OAAO,CAAC,YAAY,CAA2B;IAC/C,8CAA8C;IAC9C,OAAO,CAAC,aAAa,CAA2B;IAGhD,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAY;IACzC,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;;IAI1C,MAAM,CACJ,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAkDP,QAAQ,IAAI,IAAI;IAUhB,OAAO,IAAI,IAAI;IAIf,2DAA2D;IAC3D,OAAO,CAAC,cAAc;CAQvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symmetric-axes-helper.d.ts","sourceRoot":"","sources":["../../src/helpers/symmetric-axes-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,qBAAa,mBAAoB,SAAQ,KAAK,CAAC,KAAK;gBACtC,IAAI,SAAI;CAsBrB"}
|
package/dist/hub/app-hub.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { EditorHub } from './editor-hub';
|
|
2
|
-
import { Renderer } from '../core/renderer';
|
|
3
2
|
/**
|
|
4
3
|
* Создаёт или возвращает готовый экземпляр хаба.
|
|
5
4
|
* @public
|
|
6
5
|
*/
|
|
7
|
-
export declare function createAppHub(
|
|
6
|
+
export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
8
7
|
//# sourceMappingURL=app-hub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-hub.d.ts","sourceRoot":"","sources":["../../src/hub/app-hub.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"app-hub.d.ts","sourceRoot":"","sources":["../../src/hub/app-hub.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAGjE"}
|
package/dist/hub/editor-hub.d.ts
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
import { DisplayMode } from '@planara/types';
|
|
2
|
-
import { IDisplayManager } from '../interfaces/manager';
|
|
1
|
+
import { DisplayMode, Figure, SelectMode } from '@planara/types';
|
|
2
|
+
import { IDisplayManager } from '../interfaces/manager/display-manager';
|
|
3
|
+
import { ISelectManager } from '../interfaces/manager/select-manager';
|
|
4
|
+
import { EditorRenderer } from '../core/editor-renderer';
|
|
3
5
|
/**
|
|
4
6
|
* Хаб для управления редактированием
|
|
5
7
|
* @public
|
|
6
8
|
*/
|
|
7
9
|
export declare class EditorHub {
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
+
private _displayManager;
|
|
11
|
+
private _selectManager;
|
|
12
|
+
private _renderer;
|
|
13
|
+
constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
|
|
10
14
|
setDisplayMode(mode: DisplayMode): void;
|
|
15
|
+
setSelectMode(mode: SelectMode): void;
|
|
16
|
+
resizeRenderer(): void;
|
|
17
|
+
updateRenderer(): void;
|
|
18
|
+
addFigure(figure: Figure): void;
|
|
11
19
|
destroy(): void;
|
|
12
20
|
}
|
|
13
21
|
//# sourceMappingURL=editor-hub.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;GAGG;AACH,qBACa,SAAS;IAES,OAAO,CAAC,eAAe;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;gBAFR,eAAe,EAAE,eAAe,EACjC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,cAAc;IAK7D,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,aAAa,CAAC,IAAI,EAAE,UAAU;IAI9B,cAAc;IAId,cAAc;IAId,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO;CAKR"}
|