@planara/core 2.7.1 → 3.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 +5 -0
- package/dist/api/modules/controls-state-api.d.ts +23 -0
- package/dist/api/modules/controls-state-api.d.ts.map +1 -0
- package/dist/api/modules/mesh-api.d.ts +30 -0
- package/dist/api/modules/mesh-api.d.ts.map +1 -0
- package/dist/api/modules/raycast-api.d.ts +28 -0
- package/dist/api/modules/raycast-api.d.ts.map +1 -0
- package/dist/api/modules/transform-api.d.ts +33 -0
- package/dist/api/modules/transform-api.d.ts.map +1 -0
- package/dist/api/renderer/camera-api.d.ts +26 -0
- package/dist/api/renderer/camera-api.d.ts.map +1 -0
- package/dist/api/renderer/dom-api.d.ts +24 -0
- package/dist/api/renderer/dom-api.d.ts.map +1 -0
- package/dist/api/renderer/scene-api.d.ts +26 -0
- package/dist/api/renderer/scene-api.d.ts.map +1 -0
- package/dist/constants/colors.d.ts +12 -0
- package/dist/constants/colors.d.ts.map +1 -1
- package/dist/constants/figure-geometries.d.ts +55 -4
- package/dist/constants/figure-geometries.d.ts.map +1 -1
- package/dist/constants/layers.d.ts +12 -0
- package/dist/constants/layers.d.ts.map +1 -1
- package/dist/constants/messages.d.ts +18 -0
- package/dist/constants/messages.d.ts.map +1 -0
- package/dist/constants/threshold.d.ts +42 -2
- package/dist/constants/threshold.d.ts.map +1 -1
- package/dist/controllers/renderer-controller.d.ts +74 -0
- package/dist/controllers/renderer-controller.d.ts.map +1 -0
- package/dist/core/renderer.d.ts +110 -78
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/decorators/use-policy.d.ts +5 -0
- package/dist/decorators/use-policy.d.ts.map +1 -0
- package/dist/errors/policy-error.d.ts +9 -0
- package/dist/errors/policy-error.d.ts.map +1 -0
- package/dist/events/editor-events.d.ts +2 -6
- package/dist/events/editor-events.d.ts.map +1 -1
- package/dist/events/event-bus.d.ts +102 -5
- package/dist/events/event-bus.d.ts.map +1 -1
- package/dist/events/event-topics.d.ts +3 -3
- package/dist/events/event-topics.d.ts.map +1 -1
- package/dist/handlers/display/wireframe-handler.d.ts +3 -1
- package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
- package/dist/handlers/scene/add-figure-scene-handler.d.ts +2 -0
- package/dist/handlers/scene/add-figure-scene-handler.d.ts.map +1 -1
- package/dist/handlers/scene/delete-figure-scene-handler.d.ts +2 -2
- package/dist/handlers/scene/delete-figure-scene-handler.d.ts.map +1 -1
- package/dist/handlers/select/edge-select-handler.d.ts +10 -4
- package/dist/handlers/select/edge-select-handler.d.ts.map +1 -1
- package/dist/handlers/select/face-select-handler.d.ts +65 -6
- package/dist/handlers/select/face-select-handler.d.ts.map +1 -1
- package/dist/handlers/select/mesh-select-handler.d.ts +5 -3
- package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -1
- package/dist/handlers/select/vertex-select-handler.d.ts +10 -4
- package/dist/handlers/select/vertex-select-handler.d.ts.map +1 -1
- package/dist/handlers/tool/base-tool-handler.d.ts +9 -6
- package/dist/handlers/tool/base-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/rotate-tool-handler.d.ts +4 -3
- package/dist/handlers/tool/rotate-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/scale-tool-handler.d.ts +4 -3
- package/dist/handlers/tool/scale-tool-handler.d.ts.map +1 -1
- package/dist/handlers/tool/translate-tool-handler.d.ts +4 -3
- package/dist/handlers/tool/translate-tool-handler.d.ts.map +1 -1
- package/dist/hub/app-hub.d.ts +1 -0
- package/dist/hub/app-hub.d.ts.map +1 -1
- package/dist/hub/editor-hub.d.ts +22 -17
- package/dist/hub/editor-hub.d.ts.map +1 -1
- package/dist/index.cjs.js +2 -2
- package/dist/index.d.ts +15 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +1750 -1378
- package/dist/index.full.d.ts +635 -229
- package/dist/index.public.d.ts +653 -147
- package/dist/index.umd.js +2 -2
- package/dist/interfaces/api/camera-api.d.ts +64 -0
- package/dist/interfaces/api/camera-api.d.ts.map +1 -0
- package/dist/interfaces/api/controls-state-api.d.ts +63 -0
- package/dist/interfaces/api/controls-state-api.d.ts.map +1 -0
- package/dist/interfaces/api/dom-api.d.ts +49 -0
- package/dist/interfaces/api/dom-api.d.ts.map +1 -0
- package/dist/interfaces/api/mesh-api.d.ts +93 -12
- package/dist/interfaces/api/mesh-api.d.ts.map +1 -1
- package/dist/interfaces/api/raycast-api.d.ts +6 -1
- package/dist/interfaces/api/raycast-api.d.ts.map +1 -1
- package/dist/interfaces/api/renderer/renderable.d.ts +45 -0
- package/dist/interfaces/api/renderer/renderable.d.ts.map +1 -0
- package/dist/interfaces/api/renderer/renderer-access.d.ts +34 -0
- package/dist/interfaces/api/renderer/renderer-access.d.ts.map +1 -0
- package/dist/interfaces/api/renderer/renderer-camera-access.d.ts +37 -0
- package/dist/interfaces/api/renderer/renderer-camera-access.d.ts.map +1 -0
- package/dist/interfaces/api/renderer/renderer-dom-access.d.ts +51 -0
- package/dist/interfaces/api/renderer/renderer-dom-access.d.ts.map +1 -0
- package/dist/interfaces/api/renderer/renderer-scene-access.d.ts +45 -0
- package/dist/interfaces/api/renderer/renderer-scene-access.d.ts.map +1 -0
- package/dist/interfaces/api/renderer-api.d.ts +35 -0
- package/dist/interfaces/api/renderer-api.d.ts.map +1 -0
- package/dist/interfaces/api/scene-api.d.ts +66 -26
- package/dist/interfaces/api/scene-api.d.ts.map +1 -1
- package/dist/interfaces/api/transform-api.d.ts +120 -0
- package/dist/interfaces/api/transform-api.d.ts.map +1 -0
- package/dist/interfaces/command/index.d.ts +9 -0
- package/dist/interfaces/command/index.d.ts.map +1 -0
- package/dist/interfaces/controller/controller.d.ts +38 -0
- package/dist/interfaces/controller/controller.d.ts.map +1 -0
- package/dist/interfaces/handler/display-handler.d.ts +9 -1
- package/dist/interfaces/handler/display-handler.d.ts.map +1 -1
- package/dist/interfaces/handler/handler.d.ts +2 -0
- package/dist/interfaces/handler/handler.d.ts.map +1 -1
- package/dist/interfaces/handler/scene-handler.d.ts +1 -0
- package/dist/interfaces/handler/scene-handler.d.ts.map +1 -1
- package/dist/interfaces/handler/select-handler.d.ts +1 -0
- package/dist/interfaces/handler/select-handler.d.ts.map +1 -1
- package/dist/interfaces/handler/tool-handler.d.ts +1 -0
- package/dist/interfaces/handler/tool-handler.d.ts.map +1 -1
- package/dist/interfaces/manager/display-manager.d.ts +3 -1
- package/dist/interfaces/manager/display-manager.d.ts.map +1 -1
- package/dist/interfaces/manager/manager.d.ts +12 -1
- package/dist/interfaces/manager/manager.d.ts.map +1 -1
- package/dist/interfaces/manager/scene-manager.d.ts +3 -1
- package/dist/interfaces/manager/scene-manager.d.ts.map +1 -1
- package/dist/interfaces/manager/select-manager.d.ts +3 -1
- package/dist/interfaces/manager/select-manager.d.ts.map +1 -1
- package/dist/interfaces/manager/tool-manager.d.ts +3 -1
- package/dist/interfaces/manager/tool-manager.d.ts.map +1 -1
- package/dist/interfaces/mediator/index.d.ts +51 -0
- package/dist/interfaces/mediator/index.d.ts.map +1 -0
- package/dist/interfaces/middleware/index.d.ts +50 -0
- package/dist/interfaces/middleware/index.d.ts.map +1 -0
- package/dist/interfaces/module/renderable-module.d.ts +27 -0
- package/dist/interfaces/module/renderable-module.d.ts.map +1 -0
- package/dist/interfaces/module/runtime-module.d.ts +54 -0
- package/dist/interfaces/module/runtime-module.d.ts.map +1 -0
- package/dist/interfaces/module/updatable-module.d.ts +48 -0
- package/dist/interfaces/module/updatable-module.d.ts.map +1 -0
- package/dist/interfaces/policy/index.d.ts +21 -0
- package/dist/interfaces/policy/index.d.ts.map +1 -0
- package/dist/interfaces/response/index.d.ts +22 -0
- package/dist/interfaces/response/index.d.ts.map +1 -0
- package/dist/interfaces/store/display-store.d.ts +21 -0
- package/dist/interfaces/store/display-store.d.ts.map +1 -0
- package/dist/interfaces/store/{editor-store.d.ts → select-store.d.ts} +16 -24
- package/dist/interfaces/store/select-store.d.ts.map +1 -0
- package/dist/interfaces/store/tool-store.d.ts +27 -0
- package/dist/interfaces/store/tool-store.d.ts.map +1 -0
- package/dist/interfaces/store/transform-store.d.ts +11 -0
- package/dist/interfaces/store/transform-store.d.ts.map +1 -0
- package/dist/ioc/container.d.ts.map +1 -1
- package/dist/managers/display/display-manager.d.ts +5 -2
- package/dist/managers/display/display-manager.d.ts.map +1 -1
- package/dist/managers/scene/scene-manager.d.ts +3 -0
- package/dist/managers/scene/scene-manager.d.ts.map +1 -1
- package/dist/managers/select/select-manager.d.ts +5 -2
- package/dist/managers/select/select-manager.d.ts.map +1 -1
- package/dist/managers/tool/tool-manager.d.ts +7 -4
- package/dist/managers/tool/tool-manager.d.ts.map +1 -1
- package/dist/mediator/index.d.ts +14 -0
- package/dist/mediator/index.d.ts.map +1 -0
- package/dist/middlewares/exception-middleware.d.ts +7 -0
- package/dist/middlewares/exception-middleware.d.ts.map +1 -0
- package/dist/modules/controls-module.d.ts +58 -0
- package/dist/modules/controls-module.d.ts.map +1 -0
- package/dist/modules/gizmo-module.d.ts +34 -0
- package/dist/modules/gizmo-module.d.ts.map +1 -0
- package/dist/modules/raycast-module.d.ts +91 -0
- package/dist/modules/raycast-module.d.ts.map +1 -0
- package/dist/modules/scene-module.d.ts +32 -0
- package/dist/modules/scene-module.d.ts.map +1 -0
- package/dist/policy/tool-policy.d.ts +18 -0
- package/dist/policy/tool-policy.d.ts.map +1 -0
- package/dist/store/index.d.ts +4 -14
- package/dist/store/index.d.ts.map +1 -1
- package/dist/types/feature/feature-type.d.ts +16 -0
- package/dist/types/feature/feature-type.d.ts.map +1 -0
- package/dist/types/response/response-type.d.ts +19 -0
- package/dist/types/response/response-type.d.ts.map +1 -0
- package/dist/types/select/face-group.d.ts +24 -0
- package/dist/types/select/face-group.d.ts.map +1 -0
- package/package.json +2 -2
- package/dist/core/editor-renderer.d.ts +0 -79
- package/dist/core/editor-renderer.d.ts.map +0 -1
- package/dist/core/preview-renderer.d.ts +0 -16
- package/dist/core/preview-renderer.d.ts.map +0 -1
- package/dist/interfaces/api/transform-helpers-api.d.ts +0 -26
- package/dist/interfaces/api/transform-helpers-api.d.ts.map +0 -1
- package/dist/interfaces/policy/tool-availability-policy.d.ts +0 -12
- package/dist/interfaces/policy/tool-availability-policy.d.ts.map +0 -1
- package/dist/interfaces/store/editor-store.d.ts.map +0 -1
- package/dist/policy/tool-availability-policy.d.ts +0 -13
- package/dist/policy/tool-availability-policy.d.ts.map +0 -1
- package/dist/types/api/editor-api.d.ts +0 -4
- package/dist/types/api/editor-api.d.ts.map +0 -1
- package/dist/utils/renderer-api.d.ts +0 -43
- package/dist/utils/renderer-api.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|

|
|
2
2
|

|
|
3
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](http://makeapullrequest.com)
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/@planara/core)
|
|
7
|
+
[](https://www.npmjs.com/package/@planara/core)
|
|
3
8
|
|
|
4
9
|
## Planara Core
|
|
5
10
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IControlsStateApi } from '../../interfaces/api/controls-state-api';
|
|
2
|
+
/**
|
|
3
|
+
* API для получения состояния элементов управления сценой.
|
|
4
|
+
*
|
|
5
|
+
* **Назначение:**
|
|
6
|
+
* - Предоставляет хендлерам и менеджерам унифицированный интерфейс для получения состояния контролов
|
|
7
|
+
* - Скрывает конкретную реализацию {@link ControlsModule}
|
|
8
|
+
*
|
|
9
|
+
* **Используется:**
|
|
10
|
+
* - `RaycasterModule` для проверки, нужно ли обрабатывать события ввода
|
|
11
|
+
* - Другими модулями, которым важно знать состояние контролов
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
* @class
|
|
15
|
+
*/
|
|
16
|
+
export declare class ControlsStateApi implements IControlsStateApi {
|
|
17
|
+
private readonly _controlsModule;
|
|
18
|
+
/** @constructor */
|
|
19
|
+
constructor(_controlsModule: IControlsStateApi);
|
|
20
|
+
isOrbitInteracting(): boolean;
|
|
21
|
+
isTransformDragging(): boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=controls-state-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls-state-api.d.ts","sourceRoot":"","sources":["../../../src/api/modules/controls-state-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAEjF;;;;;;;;;;;;;GAaG;AACH,qBACa,gBAAiB,YAAW,iBAAiB;IAG5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAF5D,mBAAmB;gBAE0B,eAAe,EAAE,iBAAiB;IAGxE,kBAAkB,IAAI,OAAO;IAI7B,mBAAmB,IAAI,OAAO;CAGtC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IMeshApi } from '../../interfaces/api/mesh-api';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
/**
|
|
4
|
+
* API для управления мешами (фигурами) на сцене.
|
|
5
|
+
*
|
|
6
|
+
* **Назначение:**
|
|
7
|
+
* - Предоставляет хендлерам и менеджерам унифицированный интерфейс для работы с мешами
|
|
8
|
+
* - Скрывает конкретную реализацию {@link `SceneModule`}
|
|
9
|
+
*
|
|
10
|
+
* **Используется:**
|
|
11
|
+
* - Хендлерами инструментов ({@link `TranslateToolHandler`}, {@link `RotateToolHandler`} и др.)
|
|
12
|
+
* - Хэндлерами сцены при необходимости получить список мешей
|
|
13
|
+
*
|
|
14
|
+
* @see {@link IMeshApi} - интерфейс, который реализует этот класс
|
|
15
|
+
* @see {@link SceneModule} - реальная реализация операций с мешами
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
* @class
|
|
19
|
+
*/
|
|
20
|
+
export declare class MeshApi implements IMeshApi {
|
|
21
|
+
private readonly _sceneModule;
|
|
22
|
+
/** @constructor */
|
|
23
|
+
constructor(_sceneModule: IMeshApi);
|
|
24
|
+
addMesh(mesh: THREE.Mesh): void;
|
|
25
|
+
addMeshes(meshes: THREE.Mesh[]): void;
|
|
26
|
+
removeMesh(mesh: THREE.Mesh): void;
|
|
27
|
+
removeMeshes(meshes: THREE.Mesh[]): void;
|
|
28
|
+
getMeshes(): THREE.Mesh[];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mesh-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-api.d.ts","sourceRoot":"","sources":["../../../src/api/modules/mesh-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;;;;;;;;;;;;;;GAgBG;AACH,qBACa,OAAQ,YAAW,QAAQ;IAEI,OAAO,CAAC,QAAQ,CAAC,YAAY;IADvE,mBAAmB;gBACwC,YAAY,EAAE,QAAQ;IAE1E,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI;IAI/B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI;IAIrC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI;IAIlC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI;IAIxC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;CAGjC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SelectMode } from '@planara/types';
|
|
2
|
+
import { IRaycastApi } from '../../interfaces/api/raycast-api';
|
|
3
|
+
/**
|
|
4
|
+
* API для управления raycast (выделением геометрии).
|
|
5
|
+
*
|
|
6
|
+
* **Назначение:**
|
|
7
|
+
* - Предоставляет менеджерам и хендлерам унифицированный интерфейс для настройки raycast
|
|
8
|
+
* - Скрывает конкретную реализацию ({@link `RaycastModule`})
|
|
9
|
+
* - Позволяет легко подменить реализацию (например, для тестирования)
|
|
10
|
+
*
|
|
11
|
+
* **Используется:**
|
|
12
|
+
* - {@link `SelectManager`} — для переключения режима выделения при смене инструмента
|
|
13
|
+
* - {@link `MeshSelectHandler`}, {@link `EdgeSelectHandler`}, {@link `VertexSelectHandler`} — для установки режима перед обработкой
|
|
14
|
+
*
|
|
15
|
+
* @see {@link IRaycastApi} - интерфейс, который реализует этот класс
|
|
16
|
+
* @see {@link RaycastModule} - реальная реализация raycast
|
|
17
|
+
* @see {@link SelectManager} - менеджер, использующий этот API
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
* @class
|
|
21
|
+
*/
|
|
22
|
+
export declare class RaycastApi implements IRaycastApi {
|
|
23
|
+
private readonly _raycastModule;
|
|
24
|
+
/** @constructor */
|
|
25
|
+
constructor(_raycastModule: IRaycastApi);
|
|
26
|
+
setRaycastMode(mode: SelectMode): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=raycast-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raycast-api.d.ts","sourceRoot":"","sources":["../../../src/api/modules/raycast-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,UAAW,YAAW,WAAW;IAEA,OAAO,CAAC,QAAQ,CAAC,cAAc;IAD3E,mBAAmB;gBAC0C,cAAc,EAAE,WAAW;IAEjF,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAG9C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ToolType } from '@planara/types';
|
|
2
|
+
import { TransformListener } from '../../types/listener/transform-listener';
|
|
3
|
+
import { ITransformApi } from '../../interfaces/api/transform-api';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
/**
|
|
6
|
+
* API для управления трансформацией объектов (гизмо).
|
|
7
|
+
*
|
|
8
|
+
* **Назначение:**
|
|
9
|
+
* - Предоставляет хендлерам инструментов унифицированный интерфейс для работы с гизмо
|
|
10
|
+
* - Скрывает конкретную реализацию {@link `ControlsModule`}
|
|
11
|
+
*
|
|
12
|
+
* **Используется:**
|
|
13
|
+
* - Хендлерами инструментов:
|
|
14
|
+
* - {@link `TranslateToolHandler`} — перемещение
|
|
15
|
+
* - {@link `RotateToolHandler`} — вращение
|
|
16
|
+
* - {@link `ScaleToolHandler`} — масштабирование
|
|
17
|
+
*
|
|
18
|
+
* @see {@link ITransformApi} - интерфейс, который реализует этот класс
|
|
19
|
+
* @see {@link ControlsModule} - реальная реализация операций трансформации
|
|
20
|
+
*
|
|
21
|
+
* @internal
|
|
22
|
+
* @class
|
|
23
|
+
*/
|
|
24
|
+
export declare class TransformApi implements ITransformApi {
|
|
25
|
+
private readonly _controlsModule;
|
|
26
|
+
/** @constructor */
|
|
27
|
+
constructor(_controlsModule: ITransformApi);
|
|
28
|
+
attachTransform(object: THREE.Object3D): void;
|
|
29
|
+
detachTransform(): void;
|
|
30
|
+
setTransformMode(mode: ToolType): void;
|
|
31
|
+
onTransformChange(callback: TransformListener): () => void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=transform-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-api.d.ts","sourceRoot":"","sources":["../../../src/api/modules/transform-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAIjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAExE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,YAAa,YAAW,aAAa;IAEH,OAAO,CAAC,QAAQ,CAAC,eAAe;IAD7E,mBAAmB;gBAC2C,eAAe,EAAE,aAAa;IAErF,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;IAI7C,eAAe,IAAI,IAAI;IAIvB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAItC,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;CAGlE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ICameraApi } from '../../interfaces/api/camera-api';
|
|
2
|
+
import { IRendererCameraAccess } from '../../interfaces/api/renderer/renderer-camera-access';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
/**
|
|
5
|
+
* Реализация API для управления камерой.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Предоставляет высокоуровневые методы для работы с камерой:
|
|
9
|
+
* - получение экземпляра камеры
|
|
10
|
+
* - включение/выключение слоёв отображения
|
|
11
|
+
*
|
|
12
|
+
* @see {@link ICameraApi} - интерфейс, который реализует этот класс
|
|
13
|
+
* @see {@link IRendererCameraAccess} - низкоуровневый доступ к камере
|
|
14
|
+
* @see {@link Renderer} - рендерер, предоставляющий доступ к камере
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
* @class
|
|
18
|
+
*/
|
|
19
|
+
export declare class CameraApi implements ICameraApi {
|
|
20
|
+
private _cameraAccessApi;
|
|
21
|
+
constructor(_cameraAccessApi: IRendererCameraAccess);
|
|
22
|
+
getCamera(): THREE.Camera;
|
|
23
|
+
enableCameraLayer(layer: number): void;
|
|
24
|
+
disableCameraLayer(layer: number): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=camera-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-api.d.ts","sourceRoot":"","sources":["../../../src/api/renderer/camera-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAElG;;;;;;;;;;;;;;GAcG;AACH,qBACa,SAAU,YAAW,UAAU;IAEP,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,qBAAqB;IAG3E,SAAS,IAAI,KAAK,CAAC,MAAM;IAIzB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IDomApi } from '../../interfaces/api/dom-api';
|
|
2
|
+
import { IRendererDomAccess } from '../../interfaces/api/renderer/renderer-dom-access';
|
|
3
|
+
/**
|
|
4
|
+
* Реализация API для доступа к DOM-элементам рендерера.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Предоставляет доступ к canvas и DOM-элементу рендерера.
|
|
8
|
+
* Используется модулями, которым нужно взаимодействовать с DOM
|
|
9
|
+
* (например, для подписки на события мыши).
|
|
10
|
+
*
|
|
11
|
+
* @see {@link IDomApi} - интерфейс, который реализует этот класс
|
|
12
|
+
* @see {@link IRendererDomAccess} - низкоуровневый доступ к DOM
|
|
13
|
+
* @see {@link Renderer} - рендерер, предоставляющий доступ
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
* @class
|
|
17
|
+
*/
|
|
18
|
+
export declare class DomApi implements IDomApi {
|
|
19
|
+
private _domAccessApi;
|
|
20
|
+
constructor(_domAccessApi: IRendererDomAccess);
|
|
21
|
+
getCanvas(): HTMLCanvasElement;
|
|
22
|
+
getDomElement(): HTMLElement;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=dom-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-api.d.ts","sourceRoot":"","sources":["../../../src/api/renderer/dom-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAE5F;;;;;;;;;;;;;;GAcG;AACH,qBACa,MAAO,YAAW,OAAO;IACa,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,kBAAkB;IAEnF,SAAS,IAAI,iBAAiB;IAI9B,aAAa,IAAI,WAAW;CAGpC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ISceneApi } from '../../interfaces/api/scene-api';
|
|
2
|
+
import { IRendererSceneAccess } from '../../interfaces/api/renderer/renderer-scene-access';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
/**
|
|
5
|
+
* Реализация API для управления сценой.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* Делегирует вызовы к {@link IRendererSceneAccess},
|
|
9
|
+
* что позволяет изолировать логику управления сценой от конкретной реализации рендерера.
|
|
10
|
+
*
|
|
11
|
+
* @see {@link ISceneApi} - интерфейс, который реализует этот класс
|
|
12
|
+
* @see {@link IRendererSceneAccess} - низкоуровневый доступ к сцене
|
|
13
|
+
* @see {@link Renderer} - рендерер, предоставляющий доступ к сцене
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
* @class
|
|
17
|
+
*/
|
|
18
|
+
export declare class SceneApi implements ISceneApi {
|
|
19
|
+
private _sceneAccessApi;
|
|
20
|
+
constructor(_sceneAccessApi: IRendererSceneAccess);
|
|
21
|
+
getScene(): THREE.Scene;
|
|
22
|
+
addToScene(object: THREE.Object3D): void;
|
|
23
|
+
removeFromScene(object: THREE.Object3D): void;
|
|
24
|
+
addObject(object: THREE.Object3D, layer?: number): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=scene-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-api.d.ts","sourceRoot":"","sources":["../../../src/api/renderer/scene-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAEhG;;;;;;;;;;;;;GAaG;AACH,qBACa,QAAS,YAAW,SAAS;IAEN,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,oBAAoB;IAGxE,QAAQ,IAAI,KAAK,CAAC,KAAK;IAIvB,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;IAIxC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;IAI7C,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM;CAWxD"}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* (line.material as THREE.LineBasicMaterial).color.setHex(HOVER_COLOR);
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
* @const
|
|
11
14
|
*/
|
|
12
15
|
export declare const HOVER_COLOR = 16776960;
|
|
13
16
|
/**
|
|
@@ -19,6 +22,9 @@ export declare const HOVER_COLOR = 16776960;
|
|
|
19
22
|
*
|
|
20
23
|
* @example
|
|
21
24
|
* (line.material as THREE.LineBasicMaterial).color.setHex(SELECT_COLOR);
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
* @const
|
|
22
28
|
*/
|
|
23
29
|
export declare const SELECT_COLOR = 16755200;
|
|
24
30
|
/**
|
|
@@ -30,6 +36,9 @@ export declare const SELECT_COLOR = 16755200;
|
|
|
30
36
|
*
|
|
31
37
|
* @example
|
|
32
38
|
* (line.material as THREE.LineBasicMaterial).color.setHex(EDGES_DEFAULT_COLOR);
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
* @const
|
|
33
42
|
*/
|
|
34
43
|
export declare const EDGES_DEFAULT_COLOR = 2236962;
|
|
35
44
|
/**
|
|
@@ -38,6 +47,9 @@ export declare const EDGES_DEFAULT_COLOR = 2236962;
|
|
|
38
47
|
* @remarks
|
|
39
48
|
* Применяется при выключении постоянной подсветки выбранной вершины.
|
|
40
49
|
* Должен визуально отличаться от {@link HOVER_COLOR} и {@link SELECT_COLOR}, чтобы не путать состояния.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
* @const
|
|
41
53
|
*/
|
|
42
54
|
export declare const VERTEX_DEFAULT_COLOR = 2236962;
|
|
43
55
|
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/constants/colors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/constants/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,UAAW,CAAC;AAE5C;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,UAAW,CAAC"}
|
|
@@ -1,12 +1,63 @@
|
|
|
1
1
|
import { FigureType } from '@planara/types';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Фабрики геометрий для стандартных типов фигур.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Каждая фабрика создаёт **новый экземпляр** геометрии при вызове.
|
|
8
|
+
* Это важно для редактирования вершин — изменения в одной геометрии
|
|
9
|
+
* не влияют на другие экземпляры того же типа.
|
|
10
|
+
*
|
|
11
|
+
* Все геометрии создаются с единичными размерами (ширина/высота/глубина = 1
|
|
12
|
+
* или радиус = 0.5).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Создание куба
|
|
17
|
+
* const geometry = BASE_GEOMETRIES[FigureType.Cube]();
|
|
18
|
+
* const mesh = new THREE.Mesh(geometry, BASE_MATERIAL);
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @see {@link FigureType} - типы доступных фигур
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
* @const
|
|
6
25
|
*/
|
|
7
26
|
export declare const BASE_GEOMETRIES: Record<FigureType, () => THREE.BufferGeometry>;
|
|
8
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Базовый материал для фигур.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* Используется для всех стандартных фигур, создаваемых через `addFigure`.
|
|
32
|
+
* Материал переиспользуется между фигурами, так как геометрия и так
|
|
33
|
+
* создаётся заново для каждой фигуры.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Использование с кастомной геометрией
|
|
38
|
+
* const geometry = new THREE.BoxGeometry(2, 2, 2);
|
|
39
|
+
* const mesh = new THREE.Mesh(geometry, BASE_MATERIAL);
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
* @const
|
|
44
|
+
*/
|
|
9
45
|
export declare const BASE_MATERIAL: THREE.MeshStandardMaterial;
|
|
10
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Базовый размер точек для вершин.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* Используется при создании точек вершин для визуализации.
|
|
51
|
+
* Размер задаётся в пикселях.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const points = makeVertexPoints(geometry);
|
|
56
|
+
* points.material.size = BASE_POINT_SIZE;
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
* @const
|
|
61
|
+
*/
|
|
11
62
|
export declare const BASE_POINT_SIZE = 8;
|
|
12
63
|
//# sourceMappingURL=figure-geometries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-geometries.d.ts","sourceRoot":"","sources":["../../src/constants/figure-geometries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"figure-geometries.d.ts","sourceRoot":"","sources":["../../src/constants/figure-geometries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CA8D1E,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa,4BAIxB,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC"}
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* @example
|
|
9
9
|
* camera.layers.enable(MESH_LAYER);
|
|
10
10
|
* raycaster.layers.set(MESH_LAYER);
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
* @const
|
|
11
14
|
*/
|
|
12
15
|
export declare const MESH_LAYER = 0;
|
|
13
16
|
/**
|
|
@@ -21,6 +24,9 @@ export declare const MESH_LAYER = 0;
|
|
|
21
24
|
* camera.layers.enable(LINE_LAYER);
|
|
22
25
|
* raycaster.layers.set(LINE_LAYER);
|
|
23
26
|
* raycaster.params.Line.threshold = 0.03;
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
* @const
|
|
24
30
|
*/
|
|
25
31
|
export declare const LINE_LAYER = 1;
|
|
26
32
|
/**
|
|
@@ -34,6 +40,9 @@ export declare const LINE_LAYER = 1;
|
|
|
34
40
|
* camera.layers.enable(POINT_LAYER);
|
|
35
41
|
* raycaster.layers.set(POINT_LAYER);
|
|
36
42
|
* raycaster.params.Points.threshold = 0.03;
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
* @const
|
|
37
46
|
*/
|
|
38
47
|
export declare const POINT_LAYER = 2;
|
|
39
48
|
/**
|
|
@@ -47,6 +56,9 @@ export declare const POINT_LAYER = 2;
|
|
|
47
56
|
* camera.layers.enable(OVERLAY_LAYER); // камера видит подсветку
|
|
48
57
|
* // Raycaster НЕ видит подсветку:
|
|
49
58
|
* // raycaster.layers.set(...) — без OVERLAY_LAYER
|
|
59
|
+
*
|
|
60
|
+
* @internal
|
|
61
|
+
* @const
|
|
50
62
|
*/
|
|
51
63
|
export declare const OVERLAY_LAYER = 31;
|
|
52
64
|
//# sourceMappingURL=layers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/constants/layers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/constants/layers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,KAAK,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Константы сообщений для политик инструментов.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Используются в `ToolPolicy` и `ToolManager` для унификации сообщений.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
* @constant
|
|
9
|
+
*/
|
|
10
|
+
export declare const TOOL_MESSAGES: {
|
|
11
|
+
/** Сообщение, когда инструмент недоступен в текущем режиме выбора */
|
|
12
|
+
readonly ToolNotAllowed: "This tool cannot be used with current select mode";
|
|
13
|
+
/** Сообщение об успешном выполнении действия */
|
|
14
|
+
readonly Success: "Action executed successfully";
|
|
15
|
+
/** Сообщение, когда инструмент уже выбран */
|
|
16
|
+
readonly NoChange: "Tool already selected";
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/constants/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;IACxB,qEAAqE;;IAGrE,gDAAgD;;IAGhD,6CAA6C;;CAErC,CAAC"}
|
|
@@ -1,5 +1,45 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Порог выделения рёбер (линий) в мировых координатах.
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Определяет, на каком расстоянии (в единицах Three.js) луч может пройти мимо ребра,
|
|
6
|
+
* чтобы оно всё равно считалось выделенным.
|
|
7
|
+
*
|
|
8
|
+
* Значение `0.03` означает, что луч может пройти в 3 сантиметрах от ребра
|
|
9
|
+
* (при единичном масштабе модели) и ребро всё равно будет выделено.
|
|
10
|
+
*
|
|
11
|
+
* Чем больше значение, тем легче выделить ребро, но выше вероятность ложных срабатываний.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Установка порога для raycast
|
|
16
|
+
* raycaster.params.Line.threshold = LINE_THRESHOLD;
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
* @const
|
|
21
|
+
*/
|
|
2
22
|
export declare const LINE_THRESHOLD = 0.03;
|
|
3
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Порог выделения вершин (точек) в пикселях.
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* Определяет, на каком расстоянии (в пикселях) курсор мыши может находиться от точки,
|
|
28
|
+
* чтобы она считалась выделенной.
|
|
29
|
+
*
|
|
30
|
+
* Значение `0.05` означает, что курсор может отстоять от точки на 0.05 пикселя.
|
|
31
|
+
* Фактически это минимальный порог — выделение происходит только при точном попадании.
|
|
32
|
+
*
|
|
33
|
+
* Чем больше значение, тем легче выделить вершину, но выше риск ложных срабатываний.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Установка порога для raycast
|
|
38
|
+
* raycaster.params.Points.threshold = POINTS_THRESHOLD;
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
* @const
|
|
43
|
+
*/
|
|
4
44
|
export declare const POINTS_THRESHOLD = 0.05;
|
|
5
45
|
//# sourceMappingURL=threshold.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/constants/threshold.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"threshold.d.ts","sourceRoot":"","sources":["../../src/constants/threshold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { IController } from '../interfaces/controller/controller';
|
|
2
|
+
import { IRenderable } from '../interfaces/api/renderer/renderable';
|
|
3
|
+
import { IRuntimeModule } from '../interfaces/module/runtime-module';
|
|
4
|
+
import { IRenderableModule } from '../interfaces/module/renderable-module';
|
|
5
|
+
import { IUpdatableModule } from '../interfaces/module/updatable-module';
|
|
6
|
+
/**
|
|
7
|
+
* Контроллер для оркестрации жизненного цикла модулей и цикла рендеринга.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Отвечает за:
|
|
11
|
+
* - инициализацию всех модулей ({@link `IRuntimeModule`}, {@link `IUpdatableModule`}, {@link `IRenderableModule`})
|
|
12
|
+
* - запуск анимационного цикла (`requestAnimationFrame`)
|
|
13
|
+
* - вызов `update()` у модулей перед рендерингом
|
|
14
|
+
* - вызов `render()` у рендерера
|
|
15
|
+
* - вызов `render()` у модулей после рендеринга
|
|
16
|
+
* - остановку цикла и очистку ресурсов
|
|
17
|
+
*
|
|
18
|
+
* @see {@link IController} - интерфейс контроллера
|
|
19
|
+
* @see {@link IRuntimeModule} - модули с инициализацией
|
|
20
|
+
* @see {@link IUpdatableModule} - модули с обновлением каждый кадр
|
|
21
|
+
* @see {@link IRenderableModule} - модули с кастомным рендерингом
|
|
22
|
+
* @see {@link IRenderable} - рендерер
|
|
23
|
+
*
|
|
24
|
+
* @internal
|
|
25
|
+
* @class
|
|
26
|
+
*/
|
|
27
|
+
export declare class RendererController implements IController {
|
|
28
|
+
private _updatable;
|
|
29
|
+
private _renderable;
|
|
30
|
+
private _runtime;
|
|
31
|
+
private _renderer;
|
|
32
|
+
/**
|
|
33
|
+
* ID анимационного цикла (для остановки)
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
* @member
|
|
37
|
+
*/
|
|
38
|
+
private _animationId;
|
|
39
|
+
/**
|
|
40
|
+
* Конструктор контроллера.
|
|
41
|
+
*
|
|
42
|
+
* @param _updatable - модули, требующие обновления каждый кадр
|
|
43
|
+
* @param _renderable - модули, требующие кастомного рендеринга
|
|
44
|
+
* @param _runtime - модули, требующие инициализации
|
|
45
|
+
* @param _renderer - рендерер (должен реализовывать `IRenderable`)
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
48
|
+
* @constructor
|
|
49
|
+
*/
|
|
50
|
+
constructor(_updatable: IUpdatableModule[], _renderable: IRenderableModule[], _runtime: IRuntimeModule[], _renderer: IRenderable);
|
|
51
|
+
start(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Внутренний анимационный цикл.
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* Каждый кадр:
|
|
57
|
+
* 1. Обновляет модули (`update()`)
|
|
58
|
+
* 2. Рендерит сцену
|
|
59
|
+
* 3. Рендерит дополнительные модули (`render()`)
|
|
60
|
+
*
|
|
61
|
+
* @private
|
|
62
|
+
* @method
|
|
63
|
+
*/
|
|
64
|
+
private _loop;
|
|
65
|
+
stop(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Освобождает ресурсы контроллера.
|
|
68
|
+
*
|
|
69
|
+
* @public
|
|
70
|
+
* @method
|
|
71
|
+
*/
|
|
72
|
+
dispose(): Promise<void> | void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=renderer-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer-controller.d.ts","sourceRoot":"","sources":["../../src/controllers/renderer-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,kBAAmB,YAAW,WAAW;IAqBnB,OAAO,CAAC,UAAU;IACjB,OAAO,CAAC,WAAW;IACtB,OAAO,CAAC,QAAQ;IACtB,OAAO,CAAC,SAAS;IAvB1C;;;;;OAKG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C;;;;;;;;;;OAUG;gBAEsC,UAAU,EAAE,gBAAgB,EAAE,EAC7B,WAAW,EAAE,iBAAiB,EAAE,EACnC,QAAQ,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,WAAW;IAGhD,KAAK,IAAI,IAAI;IAOpB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK;IAON,IAAI,IAAI,IAAI;IAOnB;;;;;OAKG;IACI,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;CAGvC"}
|