@planara/core 3.1.0 → 3.2.1

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 +67 -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 +2028 -1144
  35. package/dist/index.full.d.ts +215 -46
  36. package/dist/index.public.d.ts +215 -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,66 @@ 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 implements Disposable_2 {
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
+ dispose(): Promise<void> | void;
78
+ }
79
+
15
80
  /**
16
81
  * Тип позиции камеры в мире.
17
82
  * @public
@@ -22,6 +87,13 @@ export declare type CameraPosition = {
22
87
  z: number;
23
88
  };
24
89
 
90
+ /**
91
+ * Инициализирует бенчмарк и возвращает хаб.
92
+ * Вызывать один раз при старте (когда есть canvas).
93
+ * @public
94
+ */
95
+ export declare const createBenchmarkHub: (canvas: HTMLCanvasElement, rendererConfig?: RendererConfigInput) => BenchmarkHub;
96
+
25
97
  /**
26
98
  * Инициализирует редактор и возвращает хаб.
27
99
  * Вызывать один раз при старте (когда есть canvas).
@@ -63,8 +135,8 @@ export declare class EditorHub implements Disposable_2 {
63
135
  private _mediator;
64
136
  private _store;
65
137
  private _exportStore;
66
- private _controller;
67
- constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _controller: IController);
138
+ private _worker;
139
+ constructor(_renderer: Renderer, _mediator: IMediator, _store: ITransformStore, _exportStore: IExportStore, _worker: IWorker);
68
140
  setDisplayMode(mode: DisplayMode): IResponse | null;
69
141
  setSelectMode(mode: SelectMode): IResponse | null;
70
142
  setToolMode(mode: ToolType): IResponse | null;
@@ -228,9 +300,17 @@ export declare enum FeatureType {
228
300
  /** Выборка */
229
301
  Select = 2,
230
302
  /** Инструменты */
231
- Tool = 3
303
+ Tool = 3,
304
+ /** Бенчмарк */
305
+ Benchmark = 4
232
306
  }
233
307
 
308
+ /**
309
+ * Возвращает уже созданный хаб, если бенчмарк инициализирован.
310
+ * @public
311
+ */
312
+ export declare const getBenchmarkHub: () => BenchmarkHub;
313
+
234
314
  /**
235
315
  * Возвращает уже созданный хаб, если редактор инициализирован.
236
316
  * @public
@@ -238,7 +318,7 @@ export declare enum FeatureType {
238
318
  export declare const getEditorHub: () => EditorHub;
239
319
 
240
320
  /**
241
- * Возвращает уже созданный хаб, если редактор инициализирован.
321
+ * Возвращает уже созданный хаб, если вьювер инициализирован.
242
322
  * @public
243
323
  */
244
324
  export declare const getViewerHub: () => ViewerHub;
@@ -251,43 +331,6 @@ export declare interface ICommand {
251
331
  payload: unknown[];
252
332
  }
253
333
 
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
334
  /**
292
335
  * Интерфейс store для менеджеров и хендлеров, которые позволяют работать с Display фичей,
293
336
  * необходим для корректного взаимодействия между группами фичей.
@@ -363,6 +406,64 @@ export declare interface IMediator extends Disposable_2 {
363
406
  send(command: ICommand): IResponse | null;
364
407
  }
365
408
 
409
+ /**
410
+ * Хранилище метрик benchmark-тестирования.
411
+ *
412
+ * @public
413
+ * @interface
414
+ */
415
+ export declare interface IMetricsStore {
416
+ /**
417
+ * Очищает сохраненные метрики и текущие live-значения.
418
+ *
419
+ * @public
420
+ */
421
+ clear(): void;
422
+ /**
423
+ * Сохраняет метрики успешно выполненного benchmark-теста.
424
+ *
425
+ * @param type - тип benchmark-теста
426
+ * @param metrics - собранные метрики производительности
427
+ *
428
+ * @public
429
+ */
430
+ addMetrics(type: BenchmarkTestType, metrics: BenchmarkMetrics): void;
431
+ /**
432
+ * Обновляет текущие live-метрики.
433
+ *
434
+ * @param metrics - текущие метрики производительности
435
+ *
436
+ * @public
437
+ */
438
+ setCurrentMetrics(metrics: BenchmarkMetrics | null): void;
439
+ /**
440
+ * Возвращает текущие live-метрики.
441
+ *
442
+ * @returns Текущие метрики или `null`, если измерение не выполняется
443
+ *
444
+ * @public
445
+ */
446
+ getCurrentMetrics(): BenchmarkMetrics | null;
447
+ /**
448
+ * Регистрирует слушатель обновления live-метрик.
449
+ *
450
+ * @param listener - обработчик обновления метрик
451
+ *
452
+ * @returns Функция отписки
453
+ *
454
+ * @public
455
+ */
456
+ subscribe(listener: MetricsListener): () => void;
457
+ /**
458
+ * Возвращает отчет по успешно выполненным benchmark-тестам.
459
+ *
460
+ * @returns Отчет benchmark-тестирования
461
+ *
462
+ * @public
463
+ */
464
+ getReport(): BenchmarkReport;
465
+ }
466
+
366
467
  /**
367
468
  * Интерфейс для объектов, которые могут быть отрисованы.
368
469
  *
@@ -528,6 +629,25 @@ export declare interface IRendererDomAccess {
528
629
  getDomElement(): HTMLElement;
529
630
  }
530
631
 
632
+ /**
633
+ * API доступа к метрикам WebGL-рендерера.
634
+ *
635
+ * @remarks
636
+ * Предоставляет только статистику рендеринга без доступа к самому renderer.
637
+ * Используется модулями диагностики и сбора метрик.
638
+ *
639
+ * @public
640
+ * @interface
641
+ */
642
+ export declare interface IRendererInfoAccess {
643
+ /**
644
+ * Возвращает текущую статистику рендерера.
645
+ *
646
+ * @returns Метрики WebGL-рендера за текущий кадр
647
+ */
648
+ getRendererInfo(): RendererInfoMetrics;
649
+ }
650
+
531
651
  /**
532
652
  * Низкоуровневый доступ к сцене рендерера.
533
653
  *
@@ -647,6 +767,46 @@ export declare interface IToolStore {
647
767
  export declare interface ITransformStore extends ISelectStore, IToolStore {
648
768
  }
649
769
 
770
+ /**
771
+ * Интерфейс для воркера, управляющего жизненным циклом модулей.
772
+ *
773
+ * @remarks
774
+ * Контроллер отвечает за:
775
+ * - инициализацию модулей (`IRuntimeModule`)
776
+ * - запуск цикла рендеринга
777
+ * - обновление модулей каждый кадр (`IUpdatableModule`)
778
+ * - рендеринг модулей (`IRenderableModule`)
779
+ * - остановку и очистку ресурсов
780
+ *
781
+ * @public
782
+ * @interface
783
+ */
784
+ export declare interface IWorker extends Disposable_2 {
785
+ /**
786
+ * Запускает воркер.
787
+ *
788
+ * @remarks
789
+ * Инициализирует все модули и запускает цикл рендеринга.
790
+ *
791
+ * @public
792
+ * @method
793
+ */
794
+ start(): void;
795
+ /**
796
+ * Останавливает воркер.
797
+ *
798
+ * @remarks
799
+ * Останавливает цикл рендеринга и освобождает ресурсы.
800
+ *
801
+ * @public
802
+ * @method
803
+ */
804
+ stop(): void;
805
+ }
806
+
807
+ /** @public */
808
+ export declare type MetricsListener = (metrics: BenchmarkMetrics | null) => void;
809
+
650
810
  /** @public */
651
811
  export declare class ObjLoader {
652
812
  /** Позиции вершин */
@@ -693,7 +853,7 @@ export declare class ObjLoader {
693
853
  * @public
694
854
  * @class
695
855
  */
696
- export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRenderable, Disposable_2 {
856
+ export declare class Renderer implements IRendererAccess, IRendererCameraAccess, IRendererDomAccess, IRendererSceneAccess, IRendererInfoAccess, IRenderable, Disposable_2 {
697
857
  private readonly _config;
698
858
  /**
699
859
  * Корневой объект сцены Three.js.
@@ -747,7 +907,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
747
907
  * Вызывается при изменении размеров canvas (например, при ресайзе окна браузера).
748
908
  *
749
909
  * @example
750
- * ```typescript
910
+ * ```ts
751
911
  * window.addEventListener('resize', () => renderer.resize());
752
912
  * ```
753
913
  *
@@ -786,7 +946,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
786
946
  * **Важно:** вызывать метод только один раз.
787
947
  *
788
948
  * @example
789
- * ```typescript
949
+ * ```ts
790
950
  * renderer.loop();
791
951
  * ```
792
952
  *
@@ -799,6 +959,7 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
799
959
  getCanvas(): HTMLCanvasElement;
800
960
  getDomElement(): HTMLElement;
801
961
  getScene(): THREE.Scene;
962
+ getRendererInfo(): RendererInfoMetrics;
802
963
  /**
803
964
  * Освобождает ресурсы рендерера.
804
965
  *
@@ -812,6 +973,14 @@ export declare class Renderer implements IRendererAccess, IRendererCameraAccess,
812
973
  dispose(): Promise<void> | void;
813
974
  }
814
975
 
976
+ /** @public */
977
+ export declare type RendererInfoMetrics = {
978
+ drawCalls: number;
979
+ triangles: number;
980
+ geometries: number;
981
+ textures: number;
982
+ };
983
+
815
984
  /** @public */
816
985
  export declare type SelectedListener = (obj: THREE.Object3D | null) => void;
817
986
 
@@ -825,8 +994,8 @@ export declare type TransformListener = () => void;
825
994
  export declare class ViewerHub implements Disposable_2 {
826
995
  private _renderer;
827
996
  private _mediator;
828
- private _controller;
829
- constructor(_renderer: Renderer, _mediator: IMediator, _controller: IController);
997
+ private _worker;
998
+ constructor(_renderer: Renderer, _mediator: IMediator, _worker: IWorker);
830
999
  addFigure(figure: FigureType): IResponse | null;
831
1000
  loadFigure(content: string): IResponse | null;
832
1001
  loadScene(content: string): IResponse | null;