@planara/core 1.6.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 +6 -40
- package/dist/core/editor-renderer.d.ts.map +1 -1
- package/dist/core/preview-renderer.d.ts +1 -6
- package/dist/core/preview-renderer.d.ts.map +1 -1
- package/dist/core/renderer.d.ts +10 -27
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/events/editor-events.d.ts +3 -3
- package/dist/events/editor-events.d.ts.map +1 -1
- package/dist/events/event-bus.d.ts.map +1 -1
- 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 +19 -12
- package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
- package/dist/helpers/symmetric-axes-helper.d.ts +5 -0
- package/dist/helpers/symmetric-axes-helper.d.ts.map +1 -0
- package/dist/index.cjs.js +3833 -39
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +21461 -1479
- package/dist/index.full.d.ts +17 -88
- package/dist/index.public.d.ts +13 -60
- package/dist/index.umd.js +3833 -39
- package/dist/interfaces/api/mesh-api.d.ts +6 -6
- package/dist/interfaces/api/mesh-api.d.ts.map +1 -1
- package/dist/managers/display/display-manager.d.ts.map +1 -1
- package/dist/managers/select/select-manager.d.ts.map +1 -1
- package/dist/utils/renderer-api.d.ts +7 -11
- package/dist/utils/renderer-api.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/extensions/mesh-extension.d.ts +0 -12
- package/dist/extensions/mesh-extension.d.ts.map +0 -1
- package/dist/interfaces/api/renderer-api.d.ts +0 -27
- package/dist/interfaces/api/renderer-api.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,15 +1,7 @@
|
|
|
1
|
-
import { Camera } from 'ogl';
|
|
2
1
|
import { DisplayMode } from '@planara/types';
|
|
3
2
|
import { Figure } from '@planara/types';
|
|
4
|
-
import { Mesh } from 'ogl';
|
|
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';
|
|
9
|
-
import { Program } from 'ogl';
|
|
10
|
-
import { Renderer as Renderer_2 } from 'ogl';
|
|
11
3
|
import { SelectMode } from '@planara/types';
|
|
12
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
13
5
|
|
|
14
6
|
/**
|
|
15
7
|
* Тип позиции камеры в мире.
|
|
@@ -35,11 +27,11 @@ export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
|
35
27
|
export declare type EditorEvents = {
|
|
36
28
|
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
37
29
|
[EventTopics.SelectHover]: {
|
|
38
|
-
mesh:
|
|
30
|
+
mesh: THREE.Object3D;
|
|
39
31
|
} | null;
|
|
40
32
|
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
41
33
|
[EventTopics.SelectClick]: {
|
|
42
|
-
mesh:
|
|
34
|
+
mesh: THREE.Object3D;
|
|
43
35
|
} | null;
|
|
44
36
|
};
|
|
45
37
|
|
|
@@ -60,15 +52,6 @@ export declare class EditorHub {
|
|
|
60
52
|
destroy(): void;
|
|
61
53
|
}
|
|
62
54
|
|
|
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
|
-
|
|
72
55
|
/**
|
|
73
56
|
* Рендерер для редактора.
|
|
74
57
|
* Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
|
|
@@ -80,53 +63,20 @@ export declare class EditorRenderer extends Renderer {
|
|
|
80
63
|
private _bus;
|
|
81
64
|
/** Orbit-контроллер для управления камерой */
|
|
82
65
|
private _orbit;
|
|
83
|
-
|
|
84
|
-
private
|
|
85
|
-
/** Курсор мыши для остлеживания наведения на 3D-модель */
|
|
86
|
-
private _mouse;
|
|
87
|
-
/** Были ли зарегистрированы обработчики событий для мыши */
|
|
66
|
+
private _raycaster;
|
|
67
|
+
private readonly _mouse;
|
|
88
68
|
private _isEventListenersAdded;
|
|
89
|
-
|
|
90
|
-
* Инициализация сцены редактора.
|
|
91
|
-
* Создает сетку, оси координат и orbit-контроллер.
|
|
92
|
-
*/
|
|
69
|
+
private _lastHovered;
|
|
93
70
|
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
94
71
|
/**
|
|
95
72
|
* Обновление состояния рендерера.
|
|
96
73
|
*/
|
|
97
74
|
protected update(): void;
|
|
98
|
-
|
|
99
|
-
* Метод для добавления фигуры.
|
|
100
|
-
* Настройка raycast.
|
|
101
|
-
* @param figure - Данные фигуры: position, normal, uv
|
|
102
|
-
*/
|
|
103
|
-
addFigure(figure: Figure): EditorMesh;
|
|
104
|
-
/**
|
|
105
|
-
* Устанавливает callback, который будет вызываться перед рендером конкретного меша.
|
|
106
|
-
*
|
|
107
|
-
* @param mesh - Меш, для которого нужно задать callback.
|
|
108
|
-
* @param f - Функция обратного вызова, выполняемая перед рендером меша.
|
|
109
|
-
* @internal
|
|
110
|
-
*/
|
|
111
|
-
setMeshBeforeRender(mesh: Mesh, f: MeshRenderCallback): void;
|
|
112
|
-
/**
|
|
113
|
-
* Инициализация обработчиков мыши для raycast
|
|
114
|
-
*/
|
|
75
|
+
addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
115
76
|
private initMouseListeners;
|
|
116
|
-
/**
|
|
117
|
-
* Обработчик движения мыши
|
|
118
|
-
*/
|
|
119
77
|
private _handleMouseMove;
|
|
120
|
-
/**
|
|
121
|
-
* Обработчик клика мыши
|
|
122
|
-
*/
|
|
123
78
|
private _handleMouseClick;
|
|
124
|
-
/**
|
|
125
|
-
* Универсальная логика raycast-события
|
|
126
|
-
*/
|
|
127
79
|
private _processRaycastEvent;
|
|
128
|
-
/** Деструктор */
|
|
129
|
-
destroy(): void;
|
|
130
80
|
}
|
|
131
81
|
|
|
132
82
|
/**
|
|
@@ -211,17 +161,12 @@ export declare class ObjLoader {
|
|
|
211
161
|
|
|
212
162
|
/**
|
|
213
163
|
* Рендерер для предпросмотра 3D-модели.
|
|
214
|
-
* Настраивает сцену, камеру и орбитальную навигацию
|
|
215
|
-
* Наследуется от базового Renderer.
|
|
164
|
+
* Настраивает сцену, камеру и орбитальную навигацию по горизонтали.
|
|
216
165
|
* @alpha
|
|
217
166
|
*/
|
|
218
167
|
export declare class PreviewRenderer extends Renderer {
|
|
219
168
|
/** Orbit-контроллер для управления камерой */
|
|
220
169
|
private _orbit;
|
|
221
|
-
/**
|
|
222
|
-
* Инициализация сцены предпросмотра.
|
|
223
|
-
* @param canvas - HTMLCanvasElement для рендеринга
|
|
224
|
-
*/
|
|
225
170
|
constructor(canvas: HTMLCanvasElement);
|
|
226
171
|
/**
|
|
227
172
|
* Обновление состояния рендерера.
|
|
@@ -235,18 +180,16 @@ export declare class PreviewRenderer extends Renderer {
|
|
|
235
180
|
* @public
|
|
236
181
|
*/
|
|
237
182
|
export declare abstract class Renderer {
|
|
238
|
-
/** Экземпляр рендерера OGL */
|
|
239
|
-
protected gl: Renderer_2;
|
|
240
183
|
/** Корневой объект сцены */
|
|
241
|
-
protected scene:
|
|
184
|
+
protected scene: THREE.Scene;
|
|
242
185
|
/** Камера для сцены */
|
|
243
|
-
protected camera:
|
|
186
|
+
protected camera: THREE.PerspectiveCamera;
|
|
187
|
+
/** Экземпляр рендерера Three.js */
|
|
188
|
+
protected renderer: THREE.WebGLRenderer;
|
|
244
189
|
/** HTML-элемент canvas, на котором рендерится сцена */
|
|
245
190
|
protected canvas: HTMLCanvasElement;
|
|
246
|
-
/** Program для настройки рендеринга моделей */
|
|
247
|
-
protected program: Program;
|
|
248
191
|
/** Массив моделей на сцене */
|
|
249
|
-
protected meshes: Mesh[];
|
|
192
|
+
protected meshes: THREE.Mesh[];
|
|
250
193
|
/**
|
|
251
194
|
* Конструктор рендерера
|
|
252
195
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -272,42 +215,28 @@ export declare abstract class Renderer {
|
|
|
272
215
|
* Публичный метод для добавления фигуры.
|
|
273
216
|
* @param figure - Данные фигуры: position, normal, uv
|
|
274
217
|
*/
|
|
275
|
-
addFigure(figure: Figure):
|
|
218
|
+
addFigure(figure: Figure): THREE.Mesh;
|
|
276
219
|
/**
|
|
277
220
|
* Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
|
|
278
221
|
*
|
|
279
222
|
* @param mesh - Фигура для добавления в сцену.
|
|
280
223
|
* @internal
|
|
281
224
|
*/
|
|
282
|
-
addMesh(mesh: Mesh): void;
|
|
283
|
-
/**
|
|
284
|
-
* Возвращает WebGL контекст рендерера.
|
|
285
|
-
*
|
|
286
|
-
* @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
|
|
287
|
-
* @internal
|
|
288
|
-
*/
|
|
289
|
-
getContext(): OGLRenderingContext_2;
|
|
225
|
+
addMesh(mesh: THREE.Mesh): void;
|
|
290
226
|
/**
|
|
291
227
|
* Убирает фигуру со сцены
|
|
292
228
|
*
|
|
293
229
|
* @param mesh - Фигура для удаления со сцены.
|
|
294
230
|
* @internal
|
|
295
231
|
*/
|
|
296
|
-
removeMesh(mesh: Mesh): void;
|
|
232
|
+
removeMesh(mesh: THREE.Mesh): void;
|
|
297
233
|
/**
|
|
298
234
|
* Возвращает список всех фигур, находящихся в сцене.
|
|
299
235
|
*
|
|
300
236
|
* @returns Массив текущих фигур.
|
|
301
237
|
* @internal
|
|
302
238
|
*/
|
|
303
|
-
getMeshes(): Mesh[];
|
|
304
|
-
/**
|
|
305
|
-
* Возвращает настройку для рендеринга.
|
|
306
|
-
*
|
|
307
|
-
* @returns Program для настройки рендеринга моделей.
|
|
308
|
-
* @internal
|
|
309
|
-
*/
|
|
310
|
-
getProgram(): Program;
|
|
239
|
+
getMeshes(): THREE.Mesh[];
|
|
311
240
|
/** Деструктор */
|
|
312
241
|
destroy(): void;
|
|
313
242
|
}
|
package/dist/index.public.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import { Camera } from 'ogl';
|
|
2
1
|
import { DisplayMode } from '@planara/types';
|
|
3
2
|
import { Figure } from '@planara/types';
|
|
4
|
-
import { Mesh } from 'ogl';
|
|
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';
|
|
9
|
-
import { Program } from 'ogl';
|
|
10
|
-
import { Renderer as Renderer_2 } from 'ogl';
|
|
11
3
|
import { SelectMode } from '@planara/types';
|
|
12
|
-
import
|
|
4
|
+
import * as THREE from 'three';
|
|
13
5
|
|
|
14
6
|
/**
|
|
15
7
|
* Тип позиции камеры в мире.
|
|
@@ -35,11 +27,11 @@ export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
|
|
|
35
27
|
export declare type EditorEvents = {
|
|
36
28
|
/** Событие наведения на объект (hover). Payload: объект с mesh или null */
|
|
37
29
|
[EventTopics.SelectHover]: {
|
|
38
|
-
mesh:
|
|
30
|
+
mesh: THREE.Object3D;
|
|
39
31
|
} | null;
|
|
40
32
|
/** Событие клика по объекту. Payload: объект с mesh или null */
|
|
41
33
|
[EventTopics.SelectClick]: {
|
|
42
|
-
mesh:
|
|
34
|
+
mesh: THREE.Object3D;
|
|
43
35
|
} | null;
|
|
44
36
|
};
|
|
45
37
|
|
|
@@ -60,15 +52,6 @@ export declare class EditorHub {
|
|
|
60
52
|
destroy(): void;
|
|
61
53
|
}
|
|
62
54
|
|
|
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
|
-
|
|
72
55
|
/**
|
|
73
56
|
* Рендерер для редактора.
|
|
74
57
|
* Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
|
|
@@ -80,46 +63,20 @@ export declare class EditorRenderer extends Renderer {
|
|
|
80
63
|
private _bus;
|
|
81
64
|
/** Orbit-контроллер для управления камерой */
|
|
82
65
|
private _orbit;
|
|
83
|
-
|
|
84
|
-
private
|
|
85
|
-
/** Курсор мыши для остлеживания наведения на 3D-модель */
|
|
86
|
-
private _mouse;
|
|
87
|
-
/** Были ли зарегистрированы обработчики событий для мыши */
|
|
66
|
+
private _raycaster;
|
|
67
|
+
private readonly _mouse;
|
|
88
68
|
private _isEventListenersAdded;
|
|
89
|
-
|
|
90
|
-
* Инициализация сцены редактора.
|
|
91
|
-
* Создает сетку, оси координат и orbit-контроллер.
|
|
92
|
-
*/
|
|
69
|
+
private _lastHovered;
|
|
93
70
|
constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
|
|
94
71
|
/**
|
|
95
72
|
* Обновление состояния рендерера.
|
|
96
73
|
*/
|
|
97
74
|
protected update(): void;
|
|
98
|
-
|
|
99
|
-
* Метод для добавления фигуры.
|
|
100
|
-
* Настройка raycast.
|
|
101
|
-
* @param figure - Данные фигуры: position, normal, uv
|
|
102
|
-
*/
|
|
103
|
-
addFigure(figure: Figure): EditorMesh;
|
|
104
|
-
/* Excluded from this release type: setMeshBeforeRender */
|
|
105
|
-
/**
|
|
106
|
-
* Инициализация обработчиков мыши для raycast
|
|
107
|
-
*/
|
|
75
|
+
addFigure(figure: Figure): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
108
76
|
private initMouseListeners;
|
|
109
|
-
/**
|
|
110
|
-
* Обработчик движения мыши
|
|
111
|
-
*/
|
|
112
77
|
private _handleMouseMove;
|
|
113
|
-
/**
|
|
114
|
-
* Обработчик клика мыши
|
|
115
|
-
*/
|
|
116
78
|
private _handleMouseClick;
|
|
117
|
-
/**
|
|
118
|
-
* Универсальная логика raycast-события
|
|
119
|
-
*/
|
|
120
79
|
private _processRaycastEvent;
|
|
121
|
-
/** Деструктор */
|
|
122
|
-
destroy(): void;
|
|
123
80
|
}
|
|
124
81
|
|
|
125
82
|
/**
|
|
@@ -210,18 +167,16 @@ export declare class ObjLoader {
|
|
|
210
167
|
* @public
|
|
211
168
|
*/
|
|
212
169
|
export declare abstract class Renderer {
|
|
213
|
-
/** Экземпляр рендерера OGL */
|
|
214
|
-
protected gl: Renderer_2;
|
|
215
170
|
/** Корневой объект сцены */
|
|
216
|
-
protected scene:
|
|
171
|
+
protected scene: THREE.Scene;
|
|
217
172
|
/** Камера для сцены */
|
|
218
|
-
protected camera:
|
|
173
|
+
protected camera: THREE.PerspectiveCamera;
|
|
174
|
+
/** Экземпляр рендерера Three.js */
|
|
175
|
+
protected renderer: THREE.WebGLRenderer;
|
|
219
176
|
/** HTML-элемент canvas, на котором рендерится сцена */
|
|
220
177
|
protected canvas: HTMLCanvasElement;
|
|
221
|
-
/** Program для настройки рендеринга моделей */
|
|
222
|
-
protected program: Program;
|
|
223
178
|
/** Массив моделей на сцене */
|
|
224
|
-
protected meshes: Mesh[];
|
|
179
|
+
protected meshes: THREE.Mesh[];
|
|
225
180
|
/**
|
|
226
181
|
* Конструктор рендерера
|
|
227
182
|
* @param canvas - HTMLCanvasElement для рендеринга
|
|
@@ -247,12 +202,10 @@ export declare abstract class Renderer {
|
|
|
247
202
|
* Публичный метод для добавления фигуры.
|
|
248
203
|
* @param figure - Данные фигуры: position, normal, uv
|
|
249
204
|
*/
|
|
250
|
-
addFigure(figure: Figure):
|
|
205
|
+
addFigure(figure: Figure): THREE.Mesh;
|
|
251
206
|
/* Excluded from this release type: addMesh */
|
|
252
|
-
/* Excluded from this release type: getContext */
|
|
253
207
|
/* Excluded from this release type: removeMesh */
|
|
254
208
|
/* Excluded from this release type: getMeshes */
|
|
255
|
-
/* Excluded from this release type: getProgram */
|
|
256
209
|
/** Деструктор */
|
|
257
210
|
destroy(): void;
|
|
258
211
|
}
|