@planara/core 1.5.0 → 1.6.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/core/editor-renderer.d.ts +26 -39
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/core/preview-renderer.d.ts +1 -1
- package/dist/core/preview-renderer.d.ts.map +1 -1
- package/dist/core/renderer.d.ts +38 -2
- 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/mesh-extension.d.ts +12 -0
- package/dist/extensions/mesh-extension.d.ts.map +1 -0
- package/dist/extensions/orbit-extension.d.ts +1 -1
- package/dist/extensions/orbit-extension.d.ts.map +1 -1
- package/dist/handlers/display/wireframe-handler.d.ts +6 -6
- package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
- package/dist/handlers/select/mesh-select-handler.d.ts +25 -0
- package/dist/handlers/select/mesh-select-handler.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 +26 -9
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +1448 -1061
- package/dist/index.full.d.ts +150 -51
- package/dist/index.public.d.ts +114 -28
- package/dist/index.umd.js +26 -9
- package/dist/interfaces/{mesh-api.d.ts → api/mesh-api.d.ts} +1 -0
- package/dist/interfaces/api/mesh-api.d.ts.map +1 -0
- package/dist/interfaces/api/renderer-api.d.ts +27 -0
- package/dist/interfaces/api/renderer-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/program-settings.d.ts.map +1 -1
- package/dist/utils/renderer-api.d.ts +7 -5
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +3 -2
- 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/index.full.d.ts
CHANGED
|
@@ -1,30 +1,74 @@
|
|
|
1
1
|
import { Camera } from 'ogl';
|
|
2
2
|
import { DisplayMode } from '@planara/types';
|
|
3
3
|
import { Figure } from '@planara/types';
|
|
4
|
-
import { Geometry } from 'ogl';
|
|
5
4
|
import { Mesh } from 'ogl';
|
|
6
|
-
import {
|
|
5
|
+
import { MeshOptions } from 'ogl/types/core/Mesh';
|
|
6
|
+
import { MeshRenderCallback } from 'ogl';
|
|
7
|
+
import { OGLRenderingContext } from 'ogl/types/core/Renderer';
|
|
8
|
+
import { OGLRenderingContext as OGLRenderingContext_2 } from 'ogl';
|
|
7
9
|
import { Program } from 'ogl';
|
|
8
10
|
import { Renderer as Renderer_2 } from 'ogl';
|
|
11
|
+
import { SelectMode } from '@planara/types';
|
|
9
12
|
import { Transform } from 'ogl';
|
|
10
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Тип позиции камеры в мире.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export declare type CameraPosition = {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
z: number;
|
|
22
|
+
};
|
|
23
|
+
|
|
11
24
|
/**
|
|
12
25
|
* Создаёт или возвращает готовый экземпляр хаба.
|
|
13
26
|
* @public
|
|
14
27
|
*/
|
|
15
|
-
export declare function createAppHub(
|
|
28
|
+
export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Типы событий редактора.
|
|
32
|
+
* Используются в EventEmitter для типизированной публикации и подписки на события.
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export declare type EditorEvents = {
|
|
36
|
+
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
37
|
+
[EventTopics.SelectHover]: {
|
|
38
|
+
mesh: Mesh;
|
|
39
|
+
} | null;
|
|
40
|
+
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
41
|
+
[EventTopics.SelectClick]: {
|
|
42
|
+
mesh: Mesh;
|
|
43
|
+
} | null;
|
|
44
|
+
};
|
|
16
45
|
|
|
17
46
|
/**
|
|
18
47
|
* Хаб для управления редактированием
|
|
19
48
|
* @public
|
|
20
49
|
*/
|
|
21
50
|
export declare class EditorHub {
|
|
22
|
-
private
|
|
23
|
-
|
|
51
|
+
private _displayManager;
|
|
52
|
+
private _selectManager;
|
|
53
|
+
private _renderer;
|
|
54
|
+
constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
|
|
24
55
|
setDisplayMode(mode: DisplayMode): void;
|
|
56
|
+
setSelectMode(mode: SelectMode): void;
|
|
57
|
+
resizeRenderer(): void;
|
|
58
|
+
updateRenderer(): void;
|
|
59
|
+
addFigure(figure: Figure): void;
|
|
25
60
|
destroy(): void;
|
|
26
61
|
}
|
|
27
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Расширение для Mesh с добавлением поля isHit, необходимого для raycast
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
export declare class EditorMesh extends Mesh {
|
|
68
|
+
isHit: boolean;
|
|
69
|
+
constructor(gl: OGLRenderingContext, options?: Partial<MeshOptions>);
|
|
70
|
+
}
|
|
71
|
+
|
|
28
72
|
/**
|
|
29
73
|
* Рендерер для редактора.
|
|
30
74
|
* Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
|
|
@@ -32,48 +76,21 @@ export declare class EditorHub {
|
|
|
32
76
|
* @public
|
|
33
77
|
*/
|
|
34
78
|
export declare class EditorRenderer extends Renderer {
|
|
79
|
+
private _canvas;
|
|
80
|
+
private _bus;
|
|
35
81
|
/** Orbit-контроллер для управления камерой */
|
|
36
|
-
private
|
|
82
|
+
private _orbit;
|
|
37
83
|
/** Raycast для подсветки моделей при наведении */
|
|
38
|
-
private
|
|
84
|
+
private _raycast;
|
|
39
85
|
/** Курсор мыши для остлеживания наведения на 3D-модель */
|
|
40
|
-
private
|
|
86
|
+
private _mouse;
|
|
41
87
|
/** Были ли зарегистрированы обработчики событий для мыши */
|
|
42
|
-
private
|
|
88
|
+
private _isEventListenersAdded;
|
|
43
89
|
/**
|
|
44
90
|
* Инициализация сцены редактора.
|
|
45
91
|
* Создает сетку, оси координат и orbit-контроллер.
|
|
46
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
47
|
-
*/
|
|
48
|
-
constructor(canvas: HTMLCanvasElement);
|
|
49
|
-
/**
|
|
50
|
-
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
51
|
-
*
|
|
52
|
-
* @param mesh - Фигура для добавления в сцену.
|
|
53
|
-
* @internal
|
|
54
92
|
*/
|
|
55
|
-
|
|
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[];
|
|
93
|
+
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
77
94
|
/**
|
|
78
95
|
* Обновление состояния рендерера.
|
|
79
96
|
*/
|
|
@@ -83,11 +100,15 @@ export declare class EditorRenderer extends Renderer {
|
|
|
83
100
|
* Настройка raycast.
|
|
84
101
|
* @param figure - Данные фигуры: position, normal, uv
|
|
85
102
|
*/
|
|
86
|
-
addFigure(figure: Figure):
|
|
103
|
+
addFigure(figure: Figure): EditorMesh;
|
|
87
104
|
/**
|
|
88
|
-
*
|
|
105
|
+
* Устанавливает callback, который будет вызываться перед рендером конкретного меша.
|
|
106
|
+
*
|
|
107
|
+
* @param mesh - Меш, для которого нужно задать callback.
|
|
108
|
+
* @param f - Функция обратного вызова, выполняемая перед рендером меша.
|
|
109
|
+
* @internal
|
|
89
110
|
*/
|
|
90
|
-
|
|
111
|
+
setMeshBeforeRender(mesh: Mesh, f: MeshRenderCallback): void;
|
|
91
112
|
/**
|
|
92
113
|
* Инициализация обработчиков мыши для raycast
|
|
93
114
|
*/
|
|
@@ -95,11 +116,47 @@ export declare class EditorRenderer extends Renderer {
|
|
|
95
116
|
/**
|
|
96
117
|
* Обработчик движения мыши
|
|
97
118
|
*/
|
|
98
|
-
private
|
|
119
|
+
private _handleMouseMove;
|
|
120
|
+
/**
|
|
121
|
+
* Обработчик клика мыши
|
|
122
|
+
*/
|
|
123
|
+
private _handleMouseClick;
|
|
124
|
+
/**
|
|
125
|
+
* Универсальная логика raycast-события
|
|
126
|
+
*/
|
|
127
|
+
private _processRaycastEvent;
|
|
99
128
|
/** Деструктор */
|
|
100
129
|
destroy(): void;
|
|
101
130
|
}
|
|
102
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Событийная шина редактора с топиками.
|
|
134
|
+
* Используется для publish/subscribe без прямых зависимостей.
|
|
135
|
+
* @public
|
|
136
|
+
*/
|
|
137
|
+
export declare class EventBus {
|
|
138
|
+
private _emitter;
|
|
139
|
+
constructor();
|
|
140
|
+
/** Публикация события */
|
|
141
|
+
emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
|
|
142
|
+
/** Подписка на событие */
|
|
143
|
+
on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
144
|
+
/** Отписка от события */
|
|
145
|
+
off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Топики событий редактора.
|
|
150
|
+
* Используются для подписки/публикации через EventEmitter.
|
|
151
|
+
* @public
|
|
152
|
+
*/
|
|
153
|
+
export declare enum EventTopics {
|
|
154
|
+
/** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
|
|
155
|
+
SelectHover = "select.hover",
|
|
156
|
+
/** Событие клика по объекту. Payload: mesh: Mesh | null */
|
|
157
|
+
SelectClick = "select.click"
|
|
158
|
+
}
|
|
159
|
+
|
|
103
160
|
/**
|
|
104
161
|
* Маркерный интерфейс для менеджеров отображения.
|
|
105
162
|
* @public
|
|
@@ -123,17 +180,24 @@ export declare interface IManager {
|
|
|
123
180
|
destroy(): void;
|
|
124
181
|
}
|
|
125
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Маркерный интерфейс для менеджеров выборки.
|
|
185
|
+
* @public
|
|
186
|
+
*/
|
|
187
|
+
export declare interface ISelectManager extends IManager {
|
|
188
|
+
}
|
|
189
|
+
|
|
126
190
|
/** @public */
|
|
127
191
|
export declare class ObjLoader {
|
|
128
192
|
/** Позиции вершин */
|
|
129
|
-
private
|
|
193
|
+
private _positions;
|
|
130
194
|
/** Нормали вершин */
|
|
131
|
-
private
|
|
195
|
+
private _normals;
|
|
132
196
|
/** UV-координаты (опционально) */
|
|
133
|
-
private
|
|
134
|
-
private
|
|
135
|
-
private
|
|
136
|
-
private
|
|
197
|
+
private _uvs;
|
|
198
|
+
private _tmpPositions;
|
|
199
|
+
private _tmpNormals;
|
|
200
|
+
private _tmpUVs;
|
|
137
201
|
/**
|
|
138
202
|
* Загружает OBJ-модель в Figure
|
|
139
203
|
* @param objContent - Строка содержимого .obj файла
|
|
@@ -153,7 +217,7 @@ export declare class ObjLoader {
|
|
|
153
217
|
*/
|
|
154
218
|
export declare class PreviewRenderer extends Renderer {
|
|
155
219
|
/** Orbit-контроллер для управления камерой */
|
|
156
|
-
private
|
|
220
|
+
private _orbit;
|
|
157
221
|
/**
|
|
158
222
|
* Инициализация сцены предпросмотра.
|
|
159
223
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -208,7 +272,42 @@ export declare abstract class Renderer {
|
|
|
208
272
|
* Публичный метод для добавления фигуры.
|
|
209
273
|
* @param figure - Данные фигуры: position, normal, uv
|
|
210
274
|
*/
|
|
211
|
-
addFigure(figure: Figure):
|
|
275
|
+
addFigure(figure: Figure): EditorMesh;
|
|
276
|
+
/**
|
|
277
|
+
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
278
|
+
*
|
|
279
|
+
* @param mesh - Фигура для добавления в сцену.
|
|
280
|
+
* @internal
|
|
281
|
+
*/
|
|
282
|
+
addMesh(mesh: Mesh): void;
|
|
283
|
+
/**
|
|
284
|
+
* Возвращает WebGL контекст рендерера.
|
|
285
|
+
*
|
|
286
|
+
* @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
|
|
287
|
+
* @internal
|
|
288
|
+
*/
|
|
289
|
+
getContext(): OGLRenderingContext_2;
|
|
290
|
+
/**
|
|
291
|
+
* Убирает фигуру со сцены
|
|
292
|
+
*
|
|
293
|
+
* @param mesh - Фигура для удаления со сцены.
|
|
294
|
+
* @internal
|
|
295
|
+
*/
|
|
296
|
+
removeMesh(mesh: Mesh): void;
|
|
297
|
+
/**
|
|
298
|
+
* Возвращает список всех фигур, находящихся в сцене.
|
|
299
|
+
*
|
|
300
|
+
* @returns Массив текущих фигур.
|
|
301
|
+
* @internal
|
|
302
|
+
*/
|
|
303
|
+
getMeshes(): Mesh[];
|
|
304
|
+
/**
|
|
305
|
+
* Возвращает настройку для рендеринга.
|
|
306
|
+
*
|
|
307
|
+
* @returns Program для настройки рендеринга моделей.
|
|
308
|
+
* @internal
|
|
309
|
+
*/
|
|
310
|
+
getProgram(): Program;
|
|
212
311
|
/** Деструктор */
|
|
213
312
|
destroy(): void;
|
|
214
313
|
}
|
package/dist/index.public.d.ts
CHANGED
|
@@ -1,30 +1,74 @@
|
|
|
1
1
|
import { Camera } from 'ogl';
|
|
2
2
|
import { DisplayMode } from '@planara/types';
|
|
3
3
|
import { Figure } from '@planara/types';
|
|
4
|
-
import { Geometry } from 'ogl';
|
|
5
4
|
import { Mesh } from 'ogl';
|
|
6
|
-
import {
|
|
5
|
+
import { MeshOptions } from 'ogl/types/core/Mesh';
|
|
6
|
+
import { MeshRenderCallback } from 'ogl';
|
|
7
|
+
import { OGLRenderingContext } from 'ogl/types/core/Renderer';
|
|
8
|
+
import { OGLRenderingContext as OGLRenderingContext_2 } from 'ogl';
|
|
7
9
|
import { Program } from 'ogl';
|
|
8
10
|
import { Renderer as Renderer_2 } from 'ogl';
|
|
11
|
+
import { SelectMode } from '@planara/types';
|
|
9
12
|
import { Transform } from 'ogl';
|
|
10
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Тип позиции камеры в мире.
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export declare type CameraPosition = {
|
|
19
|
+
x: number;
|
|
20
|
+
y: number;
|
|
21
|
+
z: number;
|
|
22
|
+
};
|
|
23
|
+
|
|
11
24
|
/**
|
|
12
25
|
* Создаёт или возвращает готовый экземпляр хаба.
|
|
13
26
|
* @public
|
|
14
27
|
*/
|
|
15
|
-
export declare function createAppHub(
|
|
28
|
+
export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Типы событий редактора.
|
|
32
|
+
* Используются в EventEmitter для типизированной публикации и подписки на события.
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export declare type EditorEvents = {
|
|
36
|
+
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
37
|
+
[EventTopics.SelectHover]: {
|
|
38
|
+
mesh: Mesh;
|
|
39
|
+
} | null;
|
|
40
|
+
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
41
|
+
[EventTopics.SelectClick]: {
|
|
42
|
+
mesh: Mesh;
|
|
43
|
+
} | null;
|
|
44
|
+
};
|
|
16
45
|
|
|
17
46
|
/**
|
|
18
47
|
* Хаб для управления редактированием
|
|
19
48
|
* @public
|
|
20
49
|
*/
|
|
21
50
|
export declare class EditorHub {
|
|
22
|
-
private
|
|
23
|
-
|
|
51
|
+
private _displayManager;
|
|
52
|
+
private _selectManager;
|
|
53
|
+
private _renderer;
|
|
54
|
+
constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
|
|
24
55
|
setDisplayMode(mode: DisplayMode): void;
|
|
56
|
+
setSelectMode(mode: SelectMode): void;
|
|
57
|
+
resizeRenderer(): void;
|
|
58
|
+
updateRenderer(): void;
|
|
59
|
+
addFigure(figure: Figure): void;
|
|
25
60
|
destroy(): void;
|
|
26
61
|
}
|
|
27
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Расширение для Mesh с добавлением поля isHit, необходимого для raycast
|
|
65
|
+
* @public
|
|
66
|
+
*/
|
|
67
|
+
export declare class EditorMesh extends Mesh {
|
|
68
|
+
isHit: boolean;
|
|
69
|
+
constructor(gl: OGLRenderingContext, options?: Partial<MeshOptions>);
|
|
70
|
+
}
|
|
71
|
+
|
|
28
72
|
/**
|
|
29
73
|
* Рендерер для редактора.
|
|
30
74
|
* Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
|
|
@@ -32,24 +76,21 @@ export declare class EditorHub {
|
|
|
32
76
|
* @public
|
|
33
77
|
*/
|
|
34
78
|
export declare class EditorRenderer extends Renderer {
|
|
79
|
+
private _canvas;
|
|
80
|
+
private _bus;
|
|
35
81
|
/** Orbit-контроллер для управления камерой */
|
|
36
|
-
private
|
|
82
|
+
private _orbit;
|
|
37
83
|
/** Raycast для подсветки моделей при наведении */
|
|
38
|
-
private
|
|
84
|
+
private _raycast;
|
|
39
85
|
/** Курсор мыши для остлеживания наведения на 3D-модель */
|
|
40
|
-
private
|
|
86
|
+
private _mouse;
|
|
41
87
|
/** Были ли зарегистрированы обработчики событий для мыши */
|
|
42
|
-
private
|
|
88
|
+
private _isEventListenersAdded;
|
|
43
89
|
/**
|
|
44
90
|
* Инициализация сцены редактора.
|
|
45
91
|
* Создает сетку, оси координат и orbit-контроллер.
|
|
46
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
47
92
|
*/
|
|
48
|
-
constructor(
|
|
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 */
|
|
93
|
+
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
53
94
|
/**
|
|
54
95
|
* Обновление состояния рендерера.
|
|
55
96
|
*/
|
|
@@ -59,11 +100,8 @@ export declare class EditorRenderer extends Renderer {
|
|
|
59
100
|
* Настройка raycast.
|
|
60
101
|
* @param figure - Данные фигуры: position, normal, uv
|
|
61
102
|
*/
|
|
62
|
-
addFigure(figure: Figure):
|
|
63
|
-
|
|
64
|
-
* Обновление uniform uHit для конкретной 3D-модели
|
|
65
|
-
*/
|
|
66
|
-
protected updateHitUniform(mesh: Mesh): void;
|
|
103
|
+
addFigure(figure: Figure): EditorMesh;
|
|
104
|
+
/* Excluded from this release type: setMeshBeforeRender */
|
|
67
105
|
/**
|
|
68
106
|
* Инициализация обработчиков мыши для raycast
|
|
69
107
|
*/
|
|
@@ -71,11 +109,47 @@ export declare class EditorRenderer extends Renderer {
|
|
|
71
109
|
/**
|
|
72
110
|
* Обработчик движения мыши
|
|
73
111
|
*/
|
|
74
|
-
private
|
|
112
|
+
private _handleMouseMove;
|
|
113
|
+
/**
|
|
114
|
+
* Обработчик клика мыши
|
|
115
|
+
*/
|
|
116
|
+
private _handleMouseClick;
|
|
117
|
+
/**
|
|
118
|
+
* Универсальная логика raycast-события
|
|
119
|
+
*/
|
|
120
|
+
private _processRaycastEvent;
|
|
75
121
|
/** Деструктор */
|
|
76
122
|
destroy(): void;
|
|
77
123
|
}
|
|
78
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Событийная шина редактора с топиками.
|
|
127
|
+
* Используется для publish/subscribe без прямых зависимостей.
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
export declare class EventBus {
|
|
131
|
+
private _emitter;
|
|
132
|
+
constructor();
|
|
133
|
+
/** Публикация события */
|
|
134
|
+
emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
|
|
135
|
+
/** Подписка на событие */
|
|
136
|
+
on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
137
|
+
/** Отписка от события */
|
|
138
|
+
off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Топики событий редактора.
|
|
143
|
+
* Используются для подписки/публикации через EventEmitter.
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
export declare enum EventTopics {
|
|
147
|
+
/** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
|
|
148
|
+
SelectHover = "select.hover",
|
|
149
|
+
/** Событие клика по объекту. Payload: mesh: Mesh | null */
|
|
150
|
+
SelectClick = "select.click"
|
|
151
|
+
}
|
|
152
|
+
|
|
79
153
|
/**
|
|
80
154
|
* Маркерный интерфейс для менеджеров отображения.
|
|
81
155
|
* @public
|
|
@@ -99,17 +173,24 @@ export declare interface IManager {
|
|
|
99
173
|
destroy(): void;
|
|
100
174
|
}
|
|
101
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Маркерный интерфейс для менеджеров выборки.
|
|
178
|
+
* @public
|
|
179
|
+
*/
|
|
180
|
+
export declare interface ISelectManager extends IManager {
|
|
181
|
+
}
|
|
182
|
+
|
|
102
183
|
/** @public */
|
|
103
184
|
export declare class ObjLoader {
|
|
104
185
|
/** Позиции вершин */
|
|
105
|
-
private
|
|
186
|
+
private _positions;
|
|
106
187
|
/** Нормали вершин */
|
|
107
|
-
private
|
|
188
|
+
private _normals;
|
|
108
189
|
/** UV-координаты (опционально) */
|
|
109
|
-
private
|
|
110
|
-
private
|
|
111
|
-
private
|
|
112
|
-
private
|
|
190
|
+
private _uvs;
|
|
191
|
+
private _tmpPositions;
|
|
192
|
+
private _tmpNormals;
|
|
193
|
+
private _tmpUVs;
|
|
113
194
|
/**
|
|
114
195
|
* Загружает OBJ-модель в Figure
|
|
115
196
|
* @param objContent - Строка содержимого .obj файла
|
|
@@ -166,7 +247,12 @@ export declare abstract class Renderer {
|
|
|
166
247
|
* Публичный метод для добавления фигуры.
|
|
167
248
|
* @param figure - Данные фигуры: position, normal, uv
|
|
168
249
|
*/
|
|
169
|
-
addFigure(figure: Figure):
|
|
250
|
+
addFigure(figure: Figure): EditorMesh;
|
|
251
|
+
/* Excluded from this release type: addMesh */
|
|
252
|
+
/* Excluded from this release type: getContext */
|
|
253
|
+
/* Excluded from this release type: removeMesh */
|
|
254
|
+
/* Excluded from this release type: getMeshes */
|
|
255
|
+
/* Excluded from this release type: getProgram */
|
|
170
256
|
/** Деструктор */
|
|
171
257
|
destroy(): void;
|
|
172
258
|
}
|