@planara/core 3.1.0 → 3.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.
Files changed (221) hide show
  1. package/dist/core/renderer.d.ts +6 -4
  2. package/dist/core/renderer.d.ts.map +1 -1
  3. package/dist/handlers/benchmark/base-benchmark-handler.d.ts +81 -0
  4. package/dist/handlers/benchmark/base-benchmark-handler.d.ts.map +1 -0
  5. package/dist/handlers/benchmark/heavy-benchmark-handler.d.ts +33 -0
  6. package/dist/handlers/benchmark/heavy-benchmark-handler.d.ts.map +1 -0
  7. package/dist/handlers/benchmark/index.d.ts +6 -0
  8. package/dist/handlers/benchmark/index.d.ts.map +1 -0
  9. package/dist/handlers/benchmark/light-benchmark-handler.d.ts +33 -0
  10. package/dist/handlers/benchmark/light-benchmark-handler.d.ts.map +1 -0
  11. package/dist/handlers/benchmark/medium-benchmark-handler.d.ts +33 -0
  12. package/dist/handlers/benchmark/medium-benchmark-handler.d.ts.map +1 -0
  13. package/dist/handlers/benchmark/mixed-benchmark-handler.d.ts +37 -0
  14. package/dist/handlers/benchmark/mixed-benchmark-handler.d.ts.map +1 -0
  15. package/dist/handlers/select/edge-select-handler.d.ts +1 -1
  16. package/dist/handlers/select/edge-select-handler.d.ts.map +1 -1
  17. package/dist/handlers/select/face-select-handler.d.ts +1 -1
  18. package/dist/handlers/select/face-select-handler.d.ts.map +1 -1
  19. package/dist/handlers/select/mesh-select-handler.d.ts +1 -1
  20. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
  21. package/dist/handlers/select/vertex-select-handler.d.ts +1 -1
  22. package/dist/handlers/select/vertex-select-handler.d.ts.map +1 -1
  23. package/dist/hub/benchmark-hub.d.ts +65 -0
  24. package/dist/hub/benchmark-hub.d.ts.map +1 -0
  25. package/dist/hub/editor-hub.d.ts +3 -3
  26. package/dist/hub/editor-hub.d.ts.map +1 -1
  27. package/dist/hub/index.d.ts +13 -1
  28. package/dist/hub/index.d.ts.map +1 -1
  29. package/dist/hub/viewer-hub.d.ts +3 -3
  30. package/dist/hub/viewer-hub.d.ts.map +1 -1
  31. package/dist/index.cjs.js +18 -18
  32. package/dist/index.d.ts +13 -20
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.es.js +2024 -1143
  35. package/dist/index.full.d.ts +214 -46
  36. package/dist/index.public.d.ts +214 -46
  37. package/dist/index.umd.js +18 -18
  38. package/dist/interfaces/api/index.d.ts +3 -0
  39. package/dist/interfaces/api/index.d.ts.map +1 -1
  40. package/dist/interfaces/api/interaction-api.d.ts +26 -0
  41. package/dist/interfaces/api/interaction-api.d.ts.map +1 -0
  42. package/dist/interfaces/api/metrics-api.d.ts +49 -0
  43. package/dist/interfaces/api/metrics-api.d.ts.map +1 -0
  44. package/dist/interfaces/api/renderer/index.d.ts +1 -0
  45. package/dist/interfaces/api/renderer/index.d.ts.map +1 -1
  46. package/dist/interfaces/api/renderer/renderer-info-access.d.ts +20 -0
  47. package/dist/interfaces/api/renderer/renderer-info-access.d.ts.map +1 -0
  48. package/dist/interfaces/api/renderer-info-api.d.ts +19 -0
  49. package/dist/interfaces/api/renderer-info-api.d.ts.map +1 -0
  50. package/dist/interfaces/api/scene-api.d.ts +2 -1
  51. package/dist/interfaces/api/scene-api.d.ts.map +1 -1
  52. package/dist/interfaces/handler/benchmark-handler.d.ts +22 -0
  53. package/dist/interfaces/handler/benchmark-handler.d.ts.map +1 -0
  54. package/dist/interfaces/handler/index.d.ts +1 -0
  55. package/dist/interfaces/handler/index.d.ts.map +1 -1
  56. package/dist/interfaces/manager/benchmark-manager.d.ts +10 -0
  57. package/dist/interfaces/manager/benchmark-manager.d.ts.map +1 -0
  58. package/dist/interfaces/manager/index.d.ts +1 -0
  59. package/dist/interfaces/manager/index.d.ts.map +1 -1
  60. package/dist/interfaces/module/index.d.ts +2 -0
  61. package/dist/interfaces/module/index.d.ts.map +1 -1
  62. package/dist/interfaces/module/interactive-module.d.ts +32 -0
  63. package/dist/interfaces/module/interactive-module.d.ts.map +1 -0
  64. package/dist/interfaces/module/observer-module.d.ts +27 -0
  65. package/dist/interfaces/module/observer-module.d.ts.map +1 -0
  66. package/dist/interfaces/store/index.d.ts +1 -0
  67. package/dist/interfaces/store/index.d.ts.map +1 -1
  68. package/dist/interfaces/store/metrics-store.d.ts +60 -0
  69. package/dist/interfaces/store/metrics-store.d.ts.map +1 -0
  70. package/dist/interfaces/{controller → worker}/index.d.ts +4 -4
  71. package/dist/interfaces/worker/index.d.ts.map +1 -0
  72. package/dist/managers/benchmark/benchmark-manager.d.ts +27 -0
  73. package/dist/managers/benchmark/benchmark-manager.d.ts.map +1 -0
  74. package/dist/managers/benchmark/index.d.ts +2 -0
  75. package/dist/managers/benchmark/index.d.ts.map +1 -0
  76. package/dist/managers/index.d.ts +1 -0
  77. package/dist/managers/index.d.ts.map +1 -1
  78. package/dist/managers/select/select-manager.d.ts +1 -1
  79. package/dist/managers/select/select-manager.d.ts.map +1 -1
  80. package/dist/modules/controls-module.d.ts +30 -5
  81. package/dist/modules/controls-module.d.ts.map +1 -1
  82. package/dist/modules/gizmo-module.d.ts +17 -3
  83. package/dist/modules/gizmo-module.d.ts.map +1 -1
  84. package/dist/modules/index.d.ts +1 -0
  85. package/dist/modules/index.d.ts.map +1 -1
  86. package/dist/modules/metrics-module.d.ts +156 -0
  87. package/dist/modules/metrics-module.d.ts.map +1 -0
  88. package/dist/modules/raycast-module.d.ts +21 -4
  89. package/dist/modules/raycast-module.d.ts.map +1 -1
  90. package/dist/{api → shared/api}/modules/controls-state-api.d.ts +1 -1
  91. package/dist/shared/api/modules/controls-state-api.d.ts.map +1 -0
  92. package/dist/{api → shared/api}/modules/index.d.ts +1 -0
  93. package/dist/shared/api/modules/index.d.ts.map +1 -0
  94. package/dist/shared/api/modules/interaction-api.d.ts +21 -0
  95. package/dist/shared/api/modules/interaction-api.d.ts.map +1 -0
  96. package/dist/{api → shared/api}/modules/mesh-api.d.ts +1 -1
  97. package/dist/shared/api/modules/mesh-api.d.ts.map +1 -0
  98. package/dist/{api → shared/api}/modules/raycast-api.d.ts +1 -1
  99. package/dist/shared/api/modules/raycast-api.d.ts.map +1 -0
  100. package/dist/{api → shared/api}/modules/transform-api.d.ts +2 -2
  101. package/dist/shared/api/modules/transform-api.d.ts.map +1 -0
  102. package/dist/{api → shared/api}/renderer/camera-api.d.ts +2 -2
  103. package/dist/shared/api/renderer/camera-api.d.ts.map +1 -0
  104. package/dist/{api → shared/api}/renderer/dom-api.d.ts +2 -2
  105. package/dist/shared/api/renderer/dom-api.d.ts.map +1 -0
  106. package/dist/{api → shared/api}/renderer/index.d.ts +1 -0
  107. package/dist/shared/api/renderer/index.d.ts.map +1 -0
  108. package/dist/shared/api/renderer/renderer-info-api.d.ts +25 -0
  109. package/dist/shared/api/renderer/renderer-info-api.d.ts.map +1 -0
  110. package/dist/{api → shared/api}/renderer/scene-api.d.ts +21 -3
  111. package/dist/shared/api/renderer/scene-api.d.ts.map +1 -0
  112. package/dist/shared/constants/benchmark.d.ts +5 -0
  113. package/dist/shared/constants/benchmark.d.ts.map +1 -0
  114. package/dist/shared/constants/colors.d.ts.map +1 -0
  115. package/dist/shared/constants/figure-geometries.d.ts.map +1 -0
  116. package/dist/{constants → shared/constants}/index.d.ts +1 -0
  117. package/dist/shared/constants/index.d.ts.map +1 -0
  118. package/dist/shared/constants/layers.d.ts.map +1 -0
  119. package/dist/shared/constants/messages.d.ts.map +1 -0
  120. package/dist/shared/constants/threshold.d.ts.map +1 -0
  121. package/dist/shared/decorators/index.d.ts.map +1 -0
  122. package/dist/{decorators → shared/decorators}/use-policy.d.ts +1 -1
  123. package/dist/shared/decorators/use-policy.d.ts.map +1 -0
  124. package/dist/{decorators → shared/decorators}/use-validator.d.ts +1 -1
  125. package/dist/shared/decorators/use-validator.d.ts.map +1 -0
  126. package/dist/shared/errors/index.d.ts.map +1 -0
  127. package/dist/shared/errors/policy-error.d.ts.map +1 -0
  128. package/dist/shared/errors/validation-error.d.ts.map +1 -0
  129. package/dist/shared/events/editor-events.d.ts.map +1 -0
  130. package/dist/shared/events/event-bus.d.ts.map +1 -0
  131. package/dist/shared/events/event-topics.d.ts.map +1 -0
  132. package/dist/shared/events/index.d.ts.map +1 -0
  133. package/dist/shared/ioc/container.d.ts +10 -0
  134. package/dist/shared/ioc/container.d.ts.map +1 -0
  135. package/dist/shared/loaders/obj-loader.d.ts.map +1 -0
  136. package/dist/shared/policy/index.d.ts.map +1 -0
  137. package/dist/{policy → shared/policy}/tool-policy.d.ts +2 -2
  138. package/dist/shared/policy/tool-policy.d.ts.map +1 -0
  139. package/dist/shared/utils/default-renderer-config.d.ts.map +1 -0
  140. package/dist/shared/utils/helpers.d.ts.map +1 -0
  141. package/dist/shared/utils/index.d.ts.map +1 -0
  142. package/dist/shared/validators/index.d.ts.map +1 -0
  143. package/dist/{validators → shared/validators}/obj-validator.d.ts +1 -1
  144. package/dist/shared/validators/obj-validator.d.ts.map +1 -0
  145. package/dist/store/index.d.ts +1 -0
  146. package/dist/store/index.d.ts.map +1 -1
  147. package/dist/store/metrics-store.d.ts +32 -0
  148. package/dist/store/metrics-store.d.ts.map +1 -0
  149. package/dist/types/feature/feature-type.d.ts +3 -1
  150. package/dist/types/feature/feature-type.d.ts.map +1 -1
  151. package/dist/types/listener/index.d.ts +1 -0
  152. package/dist/types/listener/index.d.ts.map +1 -1
  153. package/dist/types/listener/metrics-listener.d.ts +4 -0
  154. package/dist/types/listener/metrics-listener.d.ts.map +1 -0
  155. package/dist/types/renderer/index.d.ts +2 -0
  156. package/dist/types/renderer/index.d.ts.map +1 -0
  157. package/dist/types/renderer/renderer-info-metrics.d.ts +8 -0
  158. package/dist/types/renderer/renderer-info-metrics.d.ts.map +1 -0
  159. package/dist/workers/index.d.ts +2 -0
  160. package/dist/workers/index.d.ts.map +1 -0
  161. package/dist/{controllers/renderer-controller.d.ts → workers/renderer-worker.d.ts} +10 -7
  162. package/dist/workers/renderer-worker.d.ts.map +1 -0
  163. package/package.json +3 -3
  164. package/dist/api/modules/controls-state-api.d.ts.map +0 -1
  165. package/dist/api/modules/index.d.ts.map +0 -1
  166. package/dist/api/modules/mesh-api.d.ts.map +0 -1
  167. package/dist/api/modules/raycast-api.d.ts.map +0 -1
  168. package/dist/api/modules/transform-api.d.ts.map +0 -1
  169. package/dist/api/renderer/camera-api.d.ts.map +0 -1
  170. package/dist/api/renderer/dom-api.d.ts.map +0 -1
  171. package/dist/api/renderer/index.d.ts.map +0 -1
  172. package/dist/api/renderer/scene-api.d.ts.map +0 -1
  173. package/dist/constants/colors.d.ts.map +0 -1
  174. package/dist/constants/figure-geometries.d.ts.map +0 -1
  175. package/dist/constants/index.d.ts.map +0 -1
  176. package/dist/constants/layers.d.ts.map +0 -1
  177. package/dist/constants/messages.d.ts.map +0 -1
  178. package/dist/constants/threshold.d.ts.map +0 -1
  179. package/dist/controllers/index.d.ts +0 -2
  180. package/dist/controllers/index.d.ts.map +0 -1
  181. package/dist/controllers/renderer-controller.d.ts.map +0 -1
  182. package/dist/decorators/index.d.ts.map +0 -1
  183. package/dist/decorators/use-policy.d.ts.map +0 -1
  184. package/dist/decorators/use-validator.d.ts.map +0 -1
  185. package/dist/errors/index.d.ts.map +0 -1
  186. package/dist/errors/policy-error.d.ts.map +0 -1
  187. package/dist/errors/validation-error.d.ts.map +0 -1
  188. package/dist/events/editor-events.d.ts.map +0 -1
  189. package/dist/events/event-bus.d.ts.map +0 -1
  190. package/dist/events/event-topics.d.ts.map +0 -1
  191. package/dist/events/index.d.ts.map +0 -1
  192. package/dist/interfaces/controller/index.d.ts.map +0 -1
  193. package/dist/ioc/container.d.ts +0 -7
  194. package/dist/ioc/container.d.ts.map +0 -1
  195. package/dist/loaders/obj-loader.d.ts.map +0 -1
  196. package/dist/policy/index.d.ts.map +0 -1
  197. package/dist/policy/tool-policy.d.ts.map +0 -1
  198. package/dist/utils/default-renderer-config.d.ts.map +0 -1
  199. package/dist/utils/helpers.d.ts.map +0 -1
  200. package/dist/utils/index.d.ts.map +0 -1
  201. package/dist/validators/index.d.ts.map +0 -1
  202. package/dist/validators/obj-validator.d.ts.map +0 -1
  203. /package/dist/{constants → shared/constants}/colors.d.ts +0 -0
  204. /package/dist/{constants → shared/constants}/figure-geometries.d.ts +0 -0
  205. /package/dist/{constants → shared/constants}/layers.d.ts +0 -0
  206. /package/dist/{constants → shared/constants}/messages.d.ts +0 -0
  207. /package/dist/{constants → shared/constants}/threshold.d.ts +0 -0
  208. /package/dist/{decorators → shared/decorators}/index.d.ts +0 -0
  209. /package/dist/{errors → shared/errors}/index.d.ts +0 -0
  210. /package/dist/{errors → shared/errors}/policy-error.d.ts +0 -0
  211. /package/dist/{errors → shared/errors}/validation-error.d.ts +0 -0
  212. /package/dist/{events → shared/events}/editor-events.d.ts +0 -0
  213. /package/dist/{events → shared/events}/event-bus.d.ts +0 -0
  214. /package/dist/{events → shared/events}/event-topics.d.ts +0 -0
  215. /package/dist/{events → shared/events}/index.d.ts +0 -0
  216. /package/dist/{loaders → shared/loaders}/obj-loader.d.ts +0 -0
  217. /package/dist/{policy → shared/policy}/index.d.ts +0 -0
  218. /package/dist/{utils → shared/utils}/default-renderer-config.d.ts +0 -0
  219. /package/dist/{utils → shared/utils}/helpers.d.ts +0 -0
  220. /package/dist/{utils → shared/utils}/index.d.ts +0 -0
  221. /package/dist/{validators → shared/validators}/index.d.ts +0 -0
@@ -1,3 +1,8 @@
1
+ import { BenchmarkConfig } from '@planara/types';
2
+ import { BenchmarkMetrics } from '@planara/types';
3
+ import { BenchmarkReport } from '@planara/types';
4
+ import { BenchmarkRunResult } from '@planara/types';
5
+ import { BenchmarkTestType } from '@planara/types';
1
6
  import { DisplayMode } from '@planara/types';
2
7
  import { Disposable as Disposable_2 } from 'tsyringe';
3
8
  import { ExportResult } from '@planara/types';
@@ -12,6 +17,65 @@ import { SelectMode } from '@planara/types';
12
17
  import * as THREE from 'three';
13
18
  import { ToolType } from '@planara/types';
14
19
 
20
+ /**
21
+ * Хаб benchmark-тестирования.
22
+ *
23
+ * @remarks
24
+ * Предоставляет публичный API для запуска benchmark-тестов,
25
+ * получения итогового отчета и подписки на live-обновления метрик.
26
+ *
27
+ * @public
28
+ * @class
29
+ */
30
+ export declare class BenchmarkHub {
31
+ private _renderer;
32
+ private readonly _mediator;
33
+ private readonly _store;
34
+ private _worker;
35
+ constructor(_renderer: Renderer, _mediator: IMediator, _store: IMetricsStore, _worker: IWorker);
36
+ /**
37
+ * Запускает benchmark-тестирование.
38
+ *
39
+ * @param config - конфигурация benchmark-тестирования
40
+ *
41
+ * @returns Краткий результат выполнения запрошенных тестов
42
+ *
43
+ * @public
44
+ * @method
45
+ */
46
+ run(config: BenchmarkConfig): BenchmarkRunResult;
47
+ /**
48
+ * Возвращает отчет по успешно выполненным benchmark-тестам.
49
+ *
50
+ * @returns Отчет benchmark-тестирования
51
+ *
52
+ * @public
53
+ * @method
54
+ */
55
+ getReport(): BenchmarkReport;
56
+ /**
57
+ * Регистрирует слушатель обновления live-метрик.
58
+ *
59
+ * @param listener - обработчик обновления метрик
60
+ *
61
+ * @returns Функция отписки от обновлений
62
+ *
63
+ * @public
64
+ * @method
65
+ */
66
+ subscribeMetrics(listener: MetricsListener): () => void;
67
+ resizeRenderer(): void;
68
+ /**
69
+ * Запускает редактор.
70
+ * Вызывается после создания хаба.
71
+ */
72
+ start(): void;
73
+ /**
74
+ * Останавливает редактор.
75
+ */
76
+ stop(): void;
77
+ }
78
+
15
79
  /**
16
80
  * Тип позиции камеры в мире.
17
81
  * @public
@@ -22,6 +86,13 @@ export declare type CameraPosition = {
22
86
  z: number;
23
87
  };
24
88
 
89
+ /**
90
+ * Инициализирует бенчмарк и возвращает хаб.
91
+ * Вызывать один раз при старте (когда есть canvas).
92
+ * @public
93
+ */
94
+ export declare const createBenchmarkHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => BenchmarkHub;
95
+
25
96
  /**
26
97
  * Инициализирует редактор и возвращает хаб.
27
98
  * Вызывать один раз при старте (когда есть canvas).
@@ -63,8 +134,8 @@ export declare class EditorHub implements Disposable_2 {
63
134
  private _mediator;
64
135
  private _store;
65
136
  private _exportStore;
66
- private _controller;
67
- constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _controller: IController);
137
+ private _worker;
138
+ constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _worker: IWorker);
68
139
  setDisplayMode(mode: DisplayMode): IResponse | null;
69
140
  setSelectMode(mode: SelectMode): IResponse | null;
70
141
  setToolMode(mode: ToolType): IResponse | null;
@@ -228,9 +299,17 @@ export declare enum FeatureType {
228
299
  /** Выборка */
229
300
  Select = 2,
230
301
  /** Инструменты */
231
- Tool = 3
302
+ Tool = 3,
303
+ /** Бенчмарк */
304
+ Benchmark = 4
232
305
  }
233
306
 
307
+ /**
308
+ * Возвращает уже созданный хаб, если бенчмарк инициализирован.
309
+ * @public
310
+ */
311
+ export declare const getBenchmarkHub: () => BenchmarkHub;
312
+
234
313
  /**
235
314
  * Возвращает уже созданный хаб, если редактор инициализирован.
236
315
  * @public
@@ -238,7 +317,7 @@ export declare enum FeatureType {
238
317
  export declare const getEditorHub: () => EditorHub;
239
318
 
240
319
  /**
241
- * Возвращает уже созданный хаб, если редактор инициализирован.
320
+ * Возвращает уже созданный хаб, если вьювер инициализирован.
242
321
  * @public
243
322
  */
244
323
  export declare const getViewerHub: () => ViewerHub;
@@ -251,43 +330,6 @@ export declare interface ICommand {
251
330
  payload: unknown[];
252
331
  }
253
332
 
254
- /**
255
- * Интерфейс для контроллера, управляющего жизненным циклом модулей.
256
- *
257
- * @remarks
258
- * Контроллер отвечает за:
259
- * - инициализацию модулей (`IRuntimeModule`)
260
- * - запуск цикла рендеринга
261
- * - обновление модулей каждый кадр (`IUpdatableModule`)
262
- * - рендеринг модулей (`IRenderableModule`)
263
- * - остановку и очистку ресурсов
264
- *
265
- * @public
266
- * @interface
267
- */
268
- export declare interface IController extends Disposable_2 {
269
- /**
270
- * Запускает контроллер.
271
- *
272
- * @remarks
273
- * Инициализирует все модули и запускает цикл рендеринга.
274
- *
275
- * @public
276
- * @method
277
- */
278
- start(): void;
279
- /**
280
- * Останавливает контроллер.
281
- *
282
- * @remarks
283
- * Останавливает цикл рендеринга и освобождает ресурсы.
284
- *
285
- * @public
286
- * @method
287
- */
288
- stop(): void;
289
- }
290
-
291
333
  /**
292
334
  * Интерфейс store для менеджеров и хендлеров, которые позволяют работать с Display фичей,
293
335
  * необходим для корректного взаимодействия между группами фичей.
@@ -363,6 +405,64 @@ export declare interface IMediator extends Disposable_2 {
363
405
  send(command: ICommand): IResponse | null;
364
406
  }
365
407
 
408
+ /**
409
+ * Хранилище метрик benchmark-тестирования.
410
+ *
411
+ * @public
412
+ * @interface
413
+ */
414
+ export declare interface IMetricsStore {
415
+ /**
416
+ * Очищает сохраненные метрики и текущие live-значения.
417
+ *
418
+ * @public
419
+ */
420
+ clear(): void;
421
+ /**
422
+ * Сохраняет метрики успешно выполненного benchmark-теста.
423
+ *
424
+ * @param type - тип benchmark-теста
425
+ * @param metrics - собранные метрики производительности
426
+ *
427
+ * @public
428
+ */
429
+ addMetrics(type: BenchmarkTestType, metrics: BenchmarkMetrics): void;
430
+ /**
431
+ * Обновляет текущие live-метрики.
432
+ *
433
+ * @param metrics - текущие метрики производительности
434
+ *
435
+ * @public
436
+ */
437
+ setCurrentMetrics(metrics: BenchmarkMetrics | null): void;
438
+ /**
439
+ * Возвращает текущие live-метрики.
440
+ *
441
+ * @returns Текущие метрики или `null`, если измерение не выполняется
442
+ *
443
+ * @public
444
+ */
445
+ getCurrentMetrics(): BenchmarkMetrics | null;
446
+ /**
447
+ * Регистрирует слушатель обновления live-метрик.
448
+ *
449
+ * @param listener - обработчик обновления метрик
450
+ *
451
+ * @returns Функция отписки
452
+ *
453
+ * @public
454
+ */
455
+ subscribe(listener: MetricsListener): () => void;
456
+ /**
457
+ * Возвращает отчет по успешно выполненным benchmark-тестам.
458
+ *
459
+ * @returns Отчет benchmark-тестирования
460
+ *
461
+ * @public
462
+ */
463
+ getReport(): BenchmarkReport;
464
+ }
465
+
366
466
  /**
367
467
  * Интерфейс для объектов, которые могут быть отрисованы.
368
468
  *
@@ -528,6 +628,25 @@ export declare interface IRendererDomAccess {
528
628
  getDomElement(): HTMLElement;
529
629
  }
530
630
 
631
+ /**
632
+ * API доступа к метрикам WebGL-рендерера.
633
+ *
634
+ * @remarks
635
+ * Предоставляет только статистику рендеринга без доступа к самому renderer.
636
+ * Используется модулями диагностики и сбора метрик.
637
+ *
638
+ * @public
639
+ * @interface
640
+ */
641
+ export declare interface IRendererInfoAccess {
642
+ /**
643
+ * Возвращает текущую статистику рендерера.
644
+ *
645
+ * @returns Метрики WebGL-рендера за текущий кадр
646
+ */
647
+ getRendererInfo(): RendererInfoMetrics;
648
+ }
649
+
531
650
  /**
532
651
  * Низкоуровневый доступ к сцене рендерера.
533
652
  *
@@ -647,6 +766,46 @@ export declare interface IToolStore {
647
766
  export declare interface ITransformStore extends ISelectStore, IToolStore {
648
767
  }
649
768
 
769
+ /**
770
+ * Интерфейс для воркера, управляющего жизненным циклом модулей.
771
+ *
772
+ * @remarks
773
+ * Контроллер отвечает за:
774
+ * - инициализацию модулей (`IRuntimeModule`)
775
+ * - запуск цикла рендеринга
776
+ * - обновление модулей каждый кадр (`IUpdatableModule`)
777
+ * - рендеринг модулей (`IRenderableModule`)
778
+ * - остановку и очистку ресурсов
779
+ *
780
+ * @public
781
+ * @interface
782
+ */
783
+ export declare interface IWorker extends Disposable_2 {
784
+ /**
785
+ * Запускает воркер.
786
+ *
787
+ * @remarks
788
+ * Инициализирует все модули и запускает цикл рендеринга.
789
+ *
790
+ * @public
791
+ * @method
792
+ */
793
+ start(): void;
794
+ /**
795
+ * Останавливает воркер.
796
+ *
797
+ * @remarks
798
+ * Останавливает цикл рендеринга и освобождает ресурсы.
799
+ *
800
+ * @public
801
+ * @method
802
+ */
803
+ stop(): void;
804
+ }
805
+
806
+ /** @public */
807
+ export declare type MetricsListener = (metrics: BenchmarkMetrics | null) => void;
808
+
650
809
  /** @public */
651
810
  export declare class ObjLoader {
652
811
  /** Позиции вершин */
@@ -693,7 +852,7 @@ export declare class ObjLoader {
693
852
  * @public
694
853
  * @class
695
854
  */
696
- export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable_2 {
855
+ export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRendererInfoAccess, IRenderable, Disposable_2 {
697
856
  private readonly _config;
698
857
  /**
699
858
  * Корневой объект сцены Three.js.
@@ -747,7 +906,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
747
906
  * Вызывается при изменении размеров canvas (например, при ресайзе окна браузера).
748
907
  *
749
908
  * @example
750
- * ```typescript
909
+ * ```ts
751
910
  * window.addEventListener('resize', () => renderer.resize());
752
911
  * ```
753
912
  *
@@ -786,7 +945,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
786
945
  * **Важно:** вызывать метод только один раз.
787
946
  *
788
947
  * @example
789
- * ```typescript
948
+ * ```ts
790
949
  * renderer.loop();
791
950
  * ```
792
951
  *
@@ -799,6 +958,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
799
958
  getCanvas(): HTMLCanvasElement;
800
959
  getDomElement(): HTMLElement;
801
960
  getScene(): THREE.Scene;
961
+ getRendererInfo(): RendererInfoMetrics;
802
962
  /**
803
963
  * Освобождает ресурсы рендерера.
804
964
  *
@@ -812,6 +972,14 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
812
972
  dispose(): Promise<void> | void;
813
973
  }
814
974
 
975
+ /** @public */
976
+ export declare type RendererInfoMetrics = {
977
+ drawCalls: number;
978
+ triangles: number;
979
+ geometries: number;
980
+ textures: number;
981
+ };
982
+
815
983
  /** @public */
816
984
  export declare type SelectedListener = (obj: THREE.Object3D | null) => void;
817
985
 
@@ -825,8 +993,8 @@ export declare type TransformListener = () => void;
825
993
  export declare class ViewerHub implements Disposable_2 {
826
994
  private _renderer;
827
995
  private _mediator;
828
- private _controller;
829
- constructor(_renderer: Renderer, _mediator: IMediator, _controller: IController);
996
+ private _worker;
997
+ constructor(_renderer: Renderer, _mediator: IMediator, _worker: IWorker);
830
998
  addFigure(figure: FigureType): IResponse | null;
831
999
  loadFigure(content: string): IResponse | null;
832
1000
  loadScene(content: string): IResponse | null;