@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/dist/index.full.d.ts
CHANGED
|
@@ -1,27 +1,54 @@
|
|
|
1
|
-
import { Camera } from 'ogl';
|
|
2
1
|
import { DisplayMode } from '@planara/types';
|
|
3
2
|
import { Figure } from '@planara/types';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { SelectMode } from '@planara/types';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Тип позиции камеры в мире.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare type CameraPosition = {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
z: number;
|
|
14
|
+
};
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
17
|
* Создаёт или возвращает готовый экземпляр хаба.
|
|
13
18
|
* @public
|
|
14
19
|
*/
|
|
15
|
-
export declare function createAppHub(
|
|
20
|
+
export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Типы событий редактора.
|
|
24
|
+
* Используются в EventEmitter для типизированной публикации и подписки на события.
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export declare type EditorEvents = {
|
|
28
|
+
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
29
|
+
[EventTopics.SelectHover]: {
|
|
30
|
+
mesh: THREE.Object3D;
|
|
31
|
+
} | null;
|
|
32
|
+
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
33
|
+
[EventTopics.SelectClick]: {
|
|
34
|
+
mesh: THREE.Object3D;
|
|
35
|
+
} | null;
|
|
36
|
+
};
|
|
16
37
|
|
|
17
38
|
/**
|
|
18
39
|
* Хаб для управления редактированием
|
|
19
40
|
* @public
|
|
20
41
|
*/
|
|
21
42
|
export declare class EditorHub {
|
|
22
|
-
private
|
|
23
|
-
|
|
43
|
+
private _displayManager;
|
|
44
|
+
private _selectManager;
|
|
45
|
+
private _renderer;
|
|
46
|
+
constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
|
|
24
47
|
setDisplayMode(mode: DisplayMode): void;
|
|
48
|
+
setSelectMode(mode: SelectMode): void;
|
|
49
|
+
resizeRenderer(): void;
|
|
50
|
+
updateRenderer(): void;
|
|
51
|
+
addFigure(figure: Figure): void;
|
|
25
52
|
destroy(): void;
|
|
26
53
|
}
|
|
27
54
|
|
|
@@ -32,72 +59,52 @@ export declare class EditorHub {
|
|
|
32
59
|
* @public
|
|
33
60
|
*/
|
|
34
61
|
export declare class EditorRenderer extends Renderer {
|
|
62
|
+
private _canvas;
|
|
63
|
+
private _bus;
|
|
35
64
|
/** Orbit-контроллер для управления камерой */
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
private isEventListenersAdded;
|
|
43
|
-
/**
|
|
44
|
-
* Инициализация сцены редактора.
|
|
45
|
-
* Создает сетку, оси координат и orbit-контроллер.
|
|
46
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
47
|
-
*/
|
|
48
|
-
constructor(canvas: HTMLCanvasElement);
|
|
49
|
-
/**
|
|
50
|
-
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
51
|
-
*
|
|
52
|
-
* @param mesh - Фигура для добавления в сцену.
|
|
53
|
-
* @internal
|
|
54
|
-
*/
|
|
55
|
-
addMesh(mesh: Mesh): void;
|
|
56
|
-
/**
|
|
57
|
-
* Возвращает WebGL контекст рендерера.
|
|
58
|
-
*
|
|
59
|
-
* @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
|
|
60
|
-
* @internal
|
|
61
|
-
*/
|
|
62
|
-
getContext(): OGLRenderingContext;
|
|
63
|
-
/**
|
|
64
|
-
* Убирает фигуру со сцены
|
|
65
|
-
*
|
|
66
|
-
* @param mesh - Фигура для удаления со сцены.
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
removeMesh(mesh: Mesh): void;
|
|
70
|
-
/**
|
|
71
|
-
* Возвращает список всех фигур, находящихся в сцене.
|
|
72
|
-
*
|
|
73
|
-
* @returns Массив текущих фигур.
|
|
74
|
-
* @internal
|
|
75
|
-
*/
|
|
76
|
-
getMeshes(): Mesh[];
|
|
65
|
+
private _orbit;
|
|
66
|
+
private _raycaster;
|
|
67
|
+
private readonly _mouse;
|
|
68
|
+
private _isEventListenersAdded;
|
|
69
|
+
private _lastHovered;
|
|
70
|
+
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
77
71
|
/**
|
|
78
72
|
* Обновление состояния рендерера.
|
|
79
73
|
*/
|
|
80
74
|
protected update(): void;
|
|
81
|
-
|
|
82
|
-
* Метод для добавления фигуры.
|
|
83
|
-
* Настройка raycast.
|
|
84
|
-
* @param figure - Данные фигуры: position, normal, uv
|
|
85
|
-
*/
|
|
86
|
-
addFigure(figure: Figure): Mesh<Geometry, Program>;
|
|
87
|
-
/**
|
|
88
|
-
* Обновление uniform uHit для конкретной 3D-модели
|
|
89
|
-
*/
|
|
90
|
-
protected updateHitUniform(mesh: Mesh): void;
|
|
91
|
-
/**
|
|
92
|
-
* Инициализация обработчиков мыши для raycast
|
|
93
|
-
*/
|
|
75
|
+
addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
94
76
|
private initMouseListeners;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
77
|
+
private _handleMouseMove;
|
|
78
|
+
private _handleMouseClick;
|
|
79
|
+
private _processRaycastEvent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Событийная шина редактора с топиками.
|
|
84
|
+
* Используется для publish/subscribe без прямых зависимостей.
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
export declare class EventBus {
|
|
88
|
+
private _emitter;
|
|
89
|
+
constructor();
|
|
90
|
+
/** Публикация события */
|
|
91
|
+
emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
|
|
92
|
+
/** Подписка на событие */
|
|
93
|
+
on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
94
|
+
/** Отписка от события */
|
|
95
|
+
off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Топики событий редактора.
|
|
100
|
+
* Используются для подписки/публикации через EventEmitter.
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
export declare enum EventTopics {
|
|
104
|
+
/** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
|
|
105
|
+
SelectHover = "select.hover",
|
|
106
|
+
/** Событие клика по объекту. Payload: mesh: Mesh | null */
|
|
107
|
+
SelectClick = "select.click"
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
/**
|
|
@@ -123,17 +130,24 @@ export declare interface IManager {
|
|
|
123
130
|
destroy(): void;
|
|
124
131
|
}
|
|
125
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Маркерный интерфейс для менеджеров выборки.
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
export declare interface ISelectManager extends IManager {
|
|
138
|
+
}
|
|
139
|
+
|
|
126
140
|
/** @public */
|
|
127
141
|
export declare class ObjLoader {
|
|
128
142
|
/** Позиции вершин */
|
|
129
|
-
private
|
|
143
|
+
private _positions;
|
|
130
144
|
/** Нормали вершин */
|
|
131
|
-
private
|
|
145
|
+
private _normals;
|
|
132
146
|
/** UV-координаты (опционально) */
|
|
133
|
-
private
|
|
134
|
-
private
|
|
135
|
-
private
|
|
136
|
-
private
|
|
147
|
+
private _uvs;
|
|
148
|
+
private _tmpPositions;
|
|
149
|
+
private _tmpNormals;
|
|
150
|
+
private _tmpUVs;
|
|
137
151
|
/**
|
|
138
152
|
* Загружает OBJ-модель в Figure
|
|
139
153
|
* @param objContent - Строка содержимого .obj файла
|
|
@@ -147,17 +161,12 @@ export declare class ObjLoader {
|
|
|
147
161
|
|
|
148
162
|
/**
|
|
149
163
|
* Рендерер для предпросмотра 3D-модели.
|
|
150
|
-
* Настраивает сцену, камеру и орбитальную навигацию
|
|
151
|
-
* Наследуется от базового Renderer.
|
|
164
|
+
* Настраивает сцену, камеру и орбитальную навигацию по горизонтали.
|
|
152
165
|
* @alpha
|
|
153
166
|
*/
|
|
154
167
|
export declare class PreviewRenderer extends Renderer {
|
|
155
168
|
/** Orbit-контроллер для управления камерой */
|
|
156
|
-
private
|
|
157
|
-
/**
|
|
158
|
-
* Инициализация сцены предпросмотра.
|
|
159
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
160
|
-
*/
|
|
169
|
+
private _orbit;
|
|
161
170
|
constructor(canvas: HTMLCanvasElement);
|
|
162
171
|
/**
|
|
163
172
|
* Обновление состояния рендерера.
|
|
@@ -171,18 +180,16 @@ export declare class PreviewRenderer extends Renderer {
|
|
|
171
180
|
* @public
|
|
172
181
|
*/
|
|
173
182
|
export declare abstract class Renderer {
|
|
174
|
-
/** Экземпляр рендерера OGL */
|
|
175
|
-
protected gl: Renderer_2;
|
|
176
183
|
/** Корневой объект сцены */
|
|
177
|
-
protected scene:
|
|
184
|
+
protected scene: THREE.Scene;
|
|
178
185
|
/** Камера для сцены */
|
|
179
|
-
protected camera:
|
|
186
|
+
protected camera: THREE.PerspectiveCamera;
|
|
187
|
+
/** Экземпляр рендерера Three.js */
|
|
188
|
+
protected renderer: THREE.WebGLRenderer;
|
|
180
189
|
/** HTML-элемент canvas, на котором рендерится сцена */
|
|
181
190
|
protected canvas: HTMLCanvasElement;
|
|
182
|
-
/** Program для настройки рендеринга моделей */
|
|
183
|
-
protected program: Program;
|
|
184
191
|
/** Массив моделей на сцене */
|
|
185
|
-
protected meshes: Mesh[];
|
|
192
|
+
protected meshes: THREE.Mesh[];
|
|
186
193
|
/**
|
|
187
194
|
* Конструктор рендерера
|
|
188
195
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -208,7 +215,28 @@ export declare abstract class Renderer {
|
|
|
208
215
|
* Публичный метод для добавления фигуры.
|
|
209
216
|
* @param figure - Данные фигуры: position, normal, uv
|
|
210
217
|
*/
|
|
211
|
-
addFigure(figure: Figure): Mesh
|
|
218
|
+
addFigure(figure: Figure): THREE.Mesh;
|
|
219
|
+
/**
|
|
220
|
+
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
221
|
+
*
|
|
222
|
+
* @param mesh - Фигура для добавления в сцену.
|
|
223
|
+
* @internal
|
|
224
|
+
*/
|
|
225
|
+
addMesh(mesh: THREE.Mesh): void;
|
|
226
|
+
/**
|
|
227
|
+
* Убирает фигуру со сцены
|
|
228
|
+
*
|
|
229
|
+
* @param mesh - Фигура для удаления со сцены.
|
|
230
|
+
* @internal
|
|
231
|
+
*/
|
|
232
|
+
removeMesh(mesh: THREE.Mesh): void;
|
|
233
|
+
/**
|
|
234
|
+
* Возвращает список всех фигур, находящихся в сцене.
|
|
235
|
+
*
|
|
236
|
+
* @returns Массив текущих фигур.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
getMeshes(): THREE.Mesh[];
|
|
212
240
|
/** Деструктор */
|
|
213
241
|
destroy(): void;
|
|
214
242
|
}
|
package/dist/index.public.d.ts
CHANGED
|
@@ -1,27 +1,54 @@
|
|
|
1
|
-
import { Camera } from 'ogl';
|
|
2
1
|
import { DisplayMode } from '@planara/types';
|
|
3
2
|
import { Figure } from '@planara/types';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { SelectMode } from '@planara/types';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Тип позиции камеры в мире.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export declare type CameraPosition = {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
z: number;
|
|
14
|
+
};
|
|
10
15
|
|
|
11
16
|
/**
|
|
12
17
|
* Создаёт или возвращает готовый экземпляр хаба.
|
|
13
18
|
* @public
|
|
14
19
|
*/
|
|
15
|
-
export declare function createAppHub(
|
|
20
|
+
export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Типы событий редактора.
|
|
24
|
+
* Используются в EventEmitter для типизированной публикации и подписки на события.
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export declare type EditorEvents = {
|
|
28
|
+
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
29
|
+
[EventTopics.SelectHover]: {
|
|
30
|
+
mesh: THREE.Object3D;
|
|
31
|
+
} | null;
|
|
32
|
+
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
33
|
+
[EventTopics.SelectClick]: {
|
|
34
|
+
mesh: THREE.Object3D;
|
|
35
|
+
} | null;
|
|
36
|
+
};
|
|
16
37
|
|
|
17
38
|
/**
|
|
18
39
|
* Хаб для управления редактированием
|
|
19
40
|
* @public
|
|
20
41
|
*/
|
|
21
42
|
export declare class EditorHub {
|
|
22
|
-
private
|
|
23
|
-
|
|
43
|
+
private _displayManager;
|
|
44
|
+
private _selectManager;
|
|
45
|
+
private _renderer;
|
|
46
|
+
constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
|
|
24
47
|
setDisplayMode(mode: DisplayMode): void;
|
|
48
|
+
setSelectMode(mode: SelectMode): void;
|
|
49
|
+
resizeRenderer(): void;
|
|
50
|
+
updateRenderer(): void;
|
|
51
|
+
addFigure(figure: Figure): void;
|
|
25
52
|
destroy(): void;
|
|
26
53
|
}
|
|
27
54
|
|
|
@@ -32,48 +59,52 @@ export declare class EditorHub {
|
|
|
32
59
|
* @public
|
|
33
60
|
*/
|
|
34
61
|
export declare class EditorRenderer extends Renderer {
|
|
62
|
+
private _canvas;
|
|
63
|
+
private _bus;
|
|
35
64
|
/** Orbit-контроллер для управления камерой */
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
private
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
private isEventListenersAdded;
|
|
43
|
-
/**
|
|
44
|
-
* Инициализация сцены редактора.
|
|
45
|
-
* Создает сетку, оси координат и orbit-контроллер.
|
|
46
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
47
|
-
*/
|
|
48
|
-
constructor(canvas: HTMLCanvasElement);
|
|
49
|
-
/* Excluded from this release type: addMesh */
|
|
50
|
-
/* Excluded from this release type: getContext */
|
|
51
|
-
/* Excluded from this release type: removeMesh */
|
|
52
|
-
/* Excluded from this release type: getMeshes */
|
|
65
|
+
private _orbit;
|
|
66
|
+
private _raycaster;
|
|
67
|
+
private readonly _mouse;
|
|
68
|
+
private _isEventListenersAdded;
|
|
69
|
+
private _lastHovered;
|
|
70
|
+
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
53
71
|
/**
|
|
54
72
|
* Обновление состояния рендерера.
|
|
55
73
|
*/
|
|
56
74
|
protected update(): void;
|
|
57
|
-
|
|
58
|
-
* Метод для добавления фигуры.
|
|
59
|
-
* Настройка raycast.
|
|
60
|
-
* @param figure - Данные фигуры: position, normal, uv
|
|
61
|
-
*/
|
|
62
|
-
addFigure(figure: Figure): Mesh<Geometry, Program>;
|
|
63
|
-
/**
|
|
64
|
-
* Обновление uniform uHit для конкретной 3D-модели
|
|
65
|
-
*/
|
|
66
|
-
protected updateHitUniform(mesh: Mesh): void;
|
|
67
|
-
/**
|
|
68
|
-
* Инициализация обработчиков мыши для raycast
|
|
69
|
-
*/
|
|
75
|
+
addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
70
76
|
private initMouseListeners;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
private _handleMouseMove;
|
|
78
|
+
private _handleMouseClick;
|
|
79
|
+
private _processRaycastEvent;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Событийная шина редактора с топиками.
|
|
84
|
+
* Используется для publish/subscribe без прямых зависимостей.
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
export declare class EventBus {
|
|
88
|
+
private _emitter;
|
|
89
|
+
constructor();
|
|
90
|
+
/** Публикация события */
|
|
91
|
+
emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
|
|
92
|
+
/** Подписка на событие */
|
|
93
|
+
on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
94
|
+
/** Отписка от события */
|
|
95
|
+
off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Топики событий редактора.
|
|
100
|
+
* Используются для подписки/публикации через EventEmitter.
|
|
101
|
+
* @public
|
|
102
|
+
*/
|
|
103
|
+
export declare enum EventTopics {
|
|
104
|
+
/** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
|
|
105
|
+
SelectHover = "select.hover",
|
|
106
|
+
/** Событие клика по объекту. Payload: mesh: Mesh | null */
|
|
107
|
+
SelectClick = "select.click"
|
|
77
108
|
}
|
|
78
109
|
|
|
79
110
|
/**
|
|
@@ -99,17 +130,24 @@ export declare interface IManager {
|
|
|
99
130
|
destroy(): void;
|
|
100
131
|
}
|
|
101
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Маркерный интерфейс для менеджеров выборки.
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
export declare interface ISelectManager extends IManager {
|
|
138
|
+
}
|
|
139
|
+
|
|
102
140
|
/** @public */
|
|
103
141
|
export declare class ObjLoader {
|
|
104
142
|
/** Позиции вершин */
|
|
105
|
-
private
|
|
143
|
+
private _positions;
|
|
106
144
|
/** Нормали вершин */
|
|
107
|
-
private
|
|
145
|
+
private _normals;
|
|
108
146
|
/** UV-координаты (опционально) */
|
|
109
|
-
private
|
|
110
|
-
private
|
|
111
|
-
private
|
|
112
|
-
private
|
|
147
|
+
private _uvs;
|
|
148
|
+
private _tmpPositions;
|
|
149
|
+
private _tmpNormals;
|
|
150
|
+
private _tmpUVs;
|
|
113
151
|
/**
|
|
114
152
|
* Загружает OBJ-модель в Figure
|
|
115
153
|
* @param objContent - Строка содержимого .obj файла
|
|
@@ -129,18 +167,16 @@ export declare class ObjLoader {
|
|
|
129
167
|
* @public
|
|
130
168
|
*/
|
|
131
169
|
export declare abstract class Renderer {
|
|
132
|
-
/** Экземпляр рендерера OGL */
|
|
133
|
-
protected gl: Renderer_2;
|
|
134
170
|
/** Корневой объект сцены */
|
|
135
|
-
protected scene:
|
|
171
|
+
protected scene: THREE.Scene;
|
|
136
172
|
/** Камера для сцены */
|
|
137
|
-
protected camera:
|
|
173
|
+
protected camera: THREE.PerspectiveCamera;
|
|
174
|
+
/** Экземпляр рендерера Three.js */
|
|
175
|
+
protected renderer: THREE.WebGLRenderer;
|
|
138
176
|
/** HTML-элемент canvas, на котором рендерится сцена */
|
|
139
177
|
protected canvas: HTMLCanvasElement;
|
|
140
|
-
/** Program для настройки рендеринга моделей */
|
|
141
|
-
protected program: Program;
|
|
142
178
|
/** Массив моделей на сцене */
|
|
143
|
-
protected meshes: Mesh[];
|
|
179
|
+
protected meshes: THREE.Mesh[];
|
|
144
180
|
/**
|
|
145
181
|
* Конструктор рендерера
|
|
146
182
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -166,7 +202,10 @@ export declare abstract class Renderer {
|
|
|
166
202
|
* Публичный метод для добавления фигуры.
|
|
167
203
|
* @param figure - Данные фигуры: position, normal, uv
|
|
168
204
|
*/
|
|
169
|
-
addFigure(figure: Figure): Mesh
|
|
205
|
+
addFigure(figure: Figure): THREE.Mesh;
|
|
206
|
+
/* Excluded from this release type: addMesh */
|
|
207
|
+
/* Excluded from this release type: removeMesh */
|
|
208
|
+
/* Excluded from this release type: getMeshes */
|
|
170
209
|
/** Деструктор */
|
|
171
210
|
destroy(): void;
|
|
172
211
|
}
|