@planara/core 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/core/editor-renderer.d.ts +26 -39
  2. package/dist/core/editor-renderer.d.ts.map +1 -1
  3. package/dist/core/preview-renderer.d.ts +1 -1
  4. package/dist/core/preview-renderer.d.ts.map +1 -1
  5. package/dist/core/renderer.d.ts +38 -2
  6. package/dist/core/renderer.d.ts.map +1 -1
  7. package/dist/events/editor-events.d.ts +18 -0
  8. package/dist/events/editor-events.d.ts.map +1 -0
  9. package/dist/events/event-bus.d.ts +17 -0
  10. package/dist/events/event-bus.d.ts.map +1 -0
  11. package/dist/events/event-topics.d.ts +12 -0
  12. package/dist/events/event-topics.d.ts.map +1 -0
  13. package/dist/extensions/mesh-extension.d.ts +12 -0
  14. package/dist/extensions/mesh-extension.d.ts.map +1 -0
  15. package/dist/extensions/orbit-extension.d.ts +1 -1
  16. package/dist/extensions/orbit-extension.d.ts.map +1 -1
  17. package/dist/handlers/display/wireframe-handler.d.ts +6 -6
  18. package/dist/handlers/display/wireframe-handler.d.ts.map +1 -1
  19. package/dist/handlers/select/mesh-select-handler.d.ts +25 -0
  20. package/dist/handlers/select/mesh-select-handler.d.ts.map +1 -0
  21. package/dist/hub/app-hub.d.ts +1 -2
  22. package/dist/hub/app-hub.d.ts.map +1 -1
  23. package/dist/hub/editor-hub.d.ts +12 -4
  24. package/dist/hub/editor-hub.d.ts.map +1 -1
  25. package/dist/index.cjs.js +26 -9
  26. package/dist/index.d.ts +8 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.es.js +1448 -1061
  29. package/dist/index.full.d.ts +150 -51
  30. package/dist/index.public.d.ts +114 -28
  31. package/dist/index.umd.js +26 -9
  32. package/dist/interfaces/{mesh-api.d.ts → api/mesh-api.d.ts} +1 -0
  33. package/dist/interfaces/api/mesh-api.d.ts.map +1 -0
  34. package/dist/interfaces/api/renderer-api.d.ts +27 -0
  35. package/dist/interfaces/api/renderer-api.d.ts.map +1 -0
  36. package/dist/interfaces/{display-handler.d.ts → handler/display-handler.d.ts} +1 -0
  37. package/dist/interfaces/handler/display-handler.d.ts.map +1 -0
  38. package/dist/interfaces/{handler.d.ts → handler/handler.d.ts} +2 -1
  39. package/dist/interfaces/handler/handler.d.ts.map +1 -0
  40. package/dist/interfaces/handler/select-handler.d.ts +13 -0
  41. package/dist/interfaces/handler/select-handler.d.ts.map +1 -0
  42. package/dist/interfaces/manager/display-manager.d.ts +8 -0
  43. package/dist/interfaces/manager/display-manager.d.ts.map +1 -0
  44. package/dist/interfaces/{manager.d.ts → manager/manager.d.ts} +0 -6
  45. package/dist/interfaces/manager/manager.d.ts.map +1 -0
  46. package/dist/interfaces/manager/select-manager.d.ts +8 -0
  47. package/dist/interfaces/manager/select-manager.d.ts.map +1 -0
  48. package/dist/ioc/container.d.ts +3 -2
  49. package/dist/ioc/container.d.ts.map +1 -1
  50. package/dist/loaders/obj-loader.d.ts +6 -6
  51. package/dist/loaders/obj-loader.d.ts.map +1 -1
  52. package/dist/managers/{display-manager.d.ts → display/display-manager.d.ts} +4 -4
  53. package/dist/managers/display/display-manager.d.ts.map +1 -0
  54. package/dist/managers/select/select-manager.d.ts +19 -0
  55. package/dist/managers/select/select-manager.d.ts.map +1 -0
  56. package/dist/types/camera/camera-position.d.ts +10 -0
  57. package/dist/types/camera/camera-position.d.ts.map +1 -0
  58. package/dist/types/event/select-event-type.d.ts +6 -0
  59. package/dist/types/event/select-event-type.d.ts.map +1 -0
  60. package/dist/utils/program-settings.d.ts.map +1 -1
  61. package/dist/utils/renderer-api.d.ts +7 -5
  62. package/dist/utils/renderer-api.d.ts.map +1 -1
  63. package/package.json +3 -2
  64. package/dist/interfaces/display-handler.d.ts.map +0 -1
  65. package/dist/interfaces/handler.d.ts.map +0 -1
  66. package/dist/interfaces/manager.d.ts.map +0 -1
  67. package/dist/interfaces/mesh-api.d.ts.map +0 -1
  68. package/dist/interfaces/renderer-api.d.ts +0 -14
  69. package/dist/interfaces/renderer-api.d.ts.map +0 -1
  70. package/dist/managers/display-manager.d.ts.map +0 -1
@@ -1,6 +1,8 @@
1
1
  import { Renderer } from './renderer';
2
- import { Mesh, OGLRenderingContext } from 'ogl';
2
+ import { MeshRenderCallback, Mesh } from 'ogl';
3
3
  import { Figure } from '@planara/types';
4
+ import { EditorMesh } from '../extensions/mesh-extension';
5
+ import { EventBus } from '../events/event-bus';
4
6
  /**
5
7
  * Рендерер для редактора.
6
8
  * Добавляет сетку, оси координат и поддержку Orbit для управления камерой.
@@ -8,48 +10,21 @@ import { Figure } from '@planara/types';
8
10
  * @public
9
11
  */
10
12
  export declare class EditorRenderer extends Renderer {
13
+ private _canvas;
14
+ private _bus;
11
15
  /** Orbit-контроллер для управления камерой */
12
- private orbit;
16
+ private _orbit;
13
17
  /** Raycast для подсветки моделей при наведении */
14
- private raycast;
18
+ private _raycast;
15
19
  /** Курсор мыши для остлеживания наведения на 3D-модель */
16
- private mouse;
20
+ private _mouse;
17
21
  /** Были ли зарегистрированы обработчики событий для мыши */
18
- private isEventListenersAdded;
22
+ private _isEventListenersAdded;
19
23
  /**
20
24
  * Инициализация сцены редактора.
21
25
  * Создает сетку, оси координат и orbit-контроллер.
22
- * @param canvas - HTMLCanvasElement для рендеринга
23
26
  */
24
- constructor(canvas: HTMLCanvasElement);
25
- /**
26
- * Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
27
- *
28
- * @param mesh - Фигура для добавления в сцену.
29
- * @internal
30
- */
31
- addMesh(mesh: Mesh): void;
32
- /**
33
- * Возвращает WebGL контекст рендерера.
34
- *
35
- * @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
36
- * @internal
37
- */
38
- getContext(): OGLRenderingContext;
39
- /**
40
- * Убирает фигуру со сцены
41
- *
42
- * @param mesh - Фигура для удаления со сцены.
43
- * @internal
44
- */
45
- removeMesh(mesh: Mesh): void;
46
- /**
47
- * Возвращает список всех фигур, находящихся в сцене.
48
- *
49
- * @returns Массив текущих фигур.
50
- * @internal
51
- */
52
- getMeshes(): Mesh[];
27
+ constructor(_canvas: HTMLCanvasElement, _bus: EventBus);
53
28
  /**
54
29
  * Обновление состояния рендерера.
55
30
  */
@@ -59,11 +34,15 @@ export declare class EditorRenderer extends Renderer {
59
34
  * Настройка raycast.
60
35
  * @param figure - Данные фигуры: position, normal, uv
61
36
  */
62
- addFigure(figure: Figure): Mesh<import('ogl').Geometry, import('ogl').Program>;
37
+ addFigure(figure: Figure): EditorMesh;
63
38
  /**
64
- * Обновление uniform uHit для конкретной 3D-модели
39
+ * Устанавливает callback, который будет вызываться перед рендером конкретного меша.
40
+ *
41
+ * @param mesh - Меш, для которого нужно задать callback.
42
+ * @param f - Функция обратного вызова, выполняемая перед рендером меша.
43
+ * @internal
65
44
  */
66
- protected updateHitUniform(mesh: Mesh): void;
45
+ setMeshBeforeRender(mesh: Mesh, f: MeshRenderCallback): void;
67
46
  /**
68
47
  * Инициализация обработчиков мыши для raycast
69
48
  */
@@ -71,7 +50,15 @@ export declare class EditorRenderer extends Renderer {
71
50
  /**
72
51
  * Обработчик движения мыши
73
52
  */
74
- private handleMouseMove;
53
+ private _handleMouseMove;
54
+ /**
55
+ * Обработчик клика мыши
56
+ */
57
+ private _handleMouseClick;
58
+ /**
59
+ * Универсальная логика raycast-события
60
+ */
61
+ private _processRaycastEvent;
75
62
  /** Деструктор */
76
63
  destroy(): void;
77
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAgC,KAAK,IAAI,EAAW,KAAK,mBAAmB,EAAE,MAAM,KAAK,CAAC;AAEjG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,QAAQ;IAC1C,8CAA8C;IAC9C,OAAO,CAAC,KAAK,CAAkB;IAE/B,kDAAkD;IAClD,OAAO,CAAC,OAAO,CAAW;IAE1B,0DAA0D;IAC1D,OAAO,CAAC,KAAK,CAAQ;IAErB,4DAA4D;IAC5D,OAAO,CAAC,qBAAqB,CAAW;IAExC;;;;OAIG;gBACgB,MAAM,EAAE,iBAAiB;IAyB5C;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIhC;;;;;OAKG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAInC;;;;;OAKG;IACI,SAAS,IAAI,IAAI,EAAE;IAI1B;;OAEG;IACH,SAAS,CAAC,MAAM;IAKhB;;;;OAIG;IACa,SAAS,CAAC,MAAM,EAAE,MAAM;IA2BxC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAIrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,eAAe,CAkBrB;IAEF,iBAAiB;IACV,OAAO;CAaf"}
1
+ {"version":3,"file":"editor-renderer.d.ts","sourceRoot":"","sources":["../../src/core/editor-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,QAAQ;IAkBtB,OAAO,CAAC,OAAO;IACb,OAAO,CAAC,IAAI;IAlBlC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAkB;IAEhC,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAW;IAE3B,0DAA0D;IAC1D,OAAO,CAAC,MAAM,CAAQ;IAEtB,4DAA4D;IAC5D,OAAO,CAAC,sBAAsB,CAAW;IAEzC;;;OAGG;gBAEyB,OAAO,EAAE,iBAAiB,EACxB,IAAI,EAAE,QAAQ;IA0B5C;;OAEG;IACH,SAAS,CAAC,MAAM;IAKhB;;;;OAIG;IACa,SAAS,CAAC,MAAM,EAAE,MAAM;IAmBxC;;;;;;OAMG;IACI,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,kBAAkB;IAI5D;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAEtB;IAEF;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAEvB;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B,iBAAiB;IACV,OAAO;CAef"}
@@ -7,7 +7,7 @@ import { Renderer } from './renderer';
7
7
  */
8
8
  export declare class PreviewRenderer extends Renderer {
9
9
  /** Orbit-контроллер для управления камерой */
10
- private orbit;
10
+ private _orbit;
11
11
  /**
12
12
  * Инициализация сцены предпросмотра.
13
13
  * @param canvas - HTMLCanvasElement для рендеринга
@@ -1 +1 @@
1
- {"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,KAAK,CAAS;IAEtB;;;OAGG;gBACS,MAAM,EAAE,iBAAiB;IAerC;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
1
+ {"version":3,"file":"preview-renderer.d.ts","sourceRoot":"","sources":["../../src/core/preview-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAS;IAEvB;;;OAGG;gBACS,MAAM,EAAE,iBAAiB;IAerC;;OAEG;IACH,SAAS,CAAC,MAAM;CAIjB"}
@@ -1,5 +1,6 @@
1
- import { Renderer as OGLRenderer, Camera, Transform, Mesh, Geometry, Program } from 'ogl';
1
+ import { Renderer as OGLRenderer, Camera, Transform, Program, OGLRenderingContext, Mesh } from 'ogl';
2
2
  import { Figure } from '@planara/types';
3
+ import { EditorMesh } from '../extensions/mesh-extension';
3
4
  /**
4
5
  * Абстрактный базовый класс рендерера для работы с WebGL через OGL.
5
6
  * Отвечает за инициализацию сцены, камеры и цикла рендеринга.
@@ -43,7 +44,42 @@ export declare abstract class Renderer {
43
44
  * Публичный метод для добавления фигуры.
44
45
  * @param figure - Данные фигуры: position, normal, uv
45
46
  */
46
- addFigure(figure: Figure): Mesh<Geometry, Program>;
47
+ addFigure(figure: Figure): EditorMesh;
48
+ /**
49
+ * Добавляет фигуру в сцену и сохраняет его во внутреннем массиве.
50
+ *
51
+ * @param mesh - Фигура для добавления в сцену.
52
+ * @internal
53
+ */
54
+ addMesh(mesh: Mesh): void;
55
+ /**
56
+ * Возвращает WebGL контекст рендерера.
57
+ *
58
+ * @returns Контекст WebGL (OGLRenderingContext) текущей сцены.
59
+ * @internal
60
+ */
61
+ getContext(): OGLRenderingContext;
62
+ /**
63
+ * Убирает фигуру со сцены
64
+ *
65
+ * @param mesh - Фигура для удаления со сцены.
66
+ * @internal
67
+ */
68
+ removeMesh(mesh: Mesh): void;
69
+ /**
70
+ * Возвращает список всех фигур, находящихся в сцене.
71
+ *
72
+ * @returns Массив текущих фигур.
73
+ * @internal
74
+ */
75
+ getMeshes(): Mesh[];
76
+ /**
77
+ * Возвращает настройку для рендеринга.
78
+ *
79
+ * @returns Program для настройки рендеринга моделей.
80
+ * @internal
81
+ */
82
+ getProgram(): Program;
47
83
  /** Деструктор */
48
84
  destroy(): void;
49
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAI/F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,8BAAsB,QAAQ;IAC5B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC;IAE1B,4BAA4B;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAE3B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEpC,+CAA+C;IAC/C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3B,8BAA8B;IAC9B,SAAS,CAAC,MAAM,EAAG,IAAI,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,aAAa,MAAM,EAAE,iBAAiB;IA4B/C;;OAEG;IACI,MAAM;IAMb;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB;;OAEG;IACI,IAAI;IAMX;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM;IAsB/B,iBAAiB;IACV,OAAO;CAef"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,MAAM,EACN,SAAS,EAET,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,IAAI,EACV,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D;;;;GAIG;AACH,8BAAsB,QAAQ;IAC5B,8BAA8B;IAC9B,SAAS,CAAC,EAAE,EAAG,WAAW,CAAC;IAE3B,4BAA4B;IAC5B,SAAS,CAAC,KAAK,EAAG,SAAS,CAAC;IAE5B,uBAAuB;IACvB,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;IAE1B,uDAAuD;IACvD,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAErC,+CAA+C;IAC/C,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAE5B,8BAA8B;IAC9B,SAAS,CAAC,MAAM,EAAG,IAAI,EAAE,CAAC;IAE1B;;;OAGG;IACH,SAAS,aAAa,MAAM,EAAE,iBAAiB;IA4B/C;;OAEG;IACI,MAAM;IAMb;;OAEG;IACH,SAAS,CAAC,MAAM;IAIhB;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;IAExB;;OAEG;IACI,IAAI;IAMX;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM;IAsB/B;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIhC;;;;;OAKG;IACI,UAAU,IAAI,mBAAmB;IAIxC;;;;;OAKG;IACI,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAInC;;;;;OAKG;IACI,SAAS,IAAI,IAAI,EAAE;IAI1B;;;;;OAKG;IACI,UAAU,IAAI,OAAO;IAI5B,iBAAiB;IACV,OAAO;CAef"}
@@ -0,0 +1,18 @@
1
+ import { Mesh } from 'ogl';
2
+ import { EventTopics } from './event-topics';
3
+ /**
4
+ * Типы событий редактора.
5
+ * Используются в EventEmitter для типизированной публикации и подписки на события.
6
+ * @public
7
+ */
8
+ export type EditorEvents = {
9
+ /** Событие наведения на объект (hover). Payload: объект с mesh или null */
10
+ [EventTopics.SelectHover]: {
11
+ mesh: Mesh;
12
+ } | null;
13
+ /** Событие клика по объекту. Payload: объект с mesh или null */
14
+ [EventTopics.SelectClick]: {
15
+ mesh: Mesh;
16
+ } | null;
17
+ };
18
+ //# sourceMappingURL=editor-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-events.d.ts","sourceRoot":"","sources":["../../src/events/editor-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,2EAA2E;IAC3E,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAEjD,gEAAgE;IAChE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAClD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { EditorEvents } from './editor-events';
2
+ /**
3
+ * Событийная шина редактора с топиками.
4
+ * Используется для publish/subscribe без прямых зависимостей.
5
+ * @public
6
+ */
7
+ export declare class EventBus {
8
+ private _emitter;
9
+ constructor();
10
+ /** Публикация события */
11
+ emit<K extends keyof EditorEvents>(event: K, payload: EditorEvents[K]): void;
12
+ /** Подписка на событие */
13
+ on<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
14
+ /** Отписка от события */
15
+ off<K extends keyof EditorEvents>(event: K, listener: (payload: EditorEvents[K]) => void): void;
16
+ }
17
+ //# sourceMappingURL=event-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;GAIG;AACH,qBACa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAgB;;IAMhC,yBAAyB;IACzB,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5E,0BAA0B;IAC1B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAI9F,yBAAyB;IACzB,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;CAGhG"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Топики событий редактора.
3
+ * Используются для подписки/публикации через EventEmitter.
4
+ * @public
5
+ */
6
+ export declare enum EventTopics {
7
+ /** Событие наведения на объект (hover). Payload: mesh: Mesh | null */
8
+ SelectHover = "select.hover",
9
+ /** Событие клика по объекту. Payload: mesh: Mesh | null */
10
+ SelectClick = "select.click"
11
+ }
12
+ //# sourceMappingURL=event-topics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-topics.d.ts","sourceRoot":"","sources":["../../src/events/event-topics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sEAAsE;IACtE,WAAW,iBAAiB;IAE5B,2DAA2D;IAC3D,WAAW,iBAAiB;CAC7B"}
@@ -0,0 +1,12 @@
1
+ import { Mesh } from 'ogl';
2
+ import { OGLRenderingContext } from 'ogl/types/core/Renderer';
3
+ import { MeshOptions } from 'ogl/types/core/Mesh';
4
+ /**
5
+ * Расширение для Mesh с добавлением поля isHit, необходимого для raycast
6
+ * @public
7
+ */
8
+ export declare class EditorMesh extends Mesh {
9
+ isHit: boolean;
10
+ constructor(gl: OGLRenderingContext, options?: Partial<MeshOptions>);
11
+ }
12
+ //# sourceMappingURL=mesh-extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/mesh-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;GAGG;AACH,qBAAa,UAAW,SAAQ,IAAI;IAC3B,KAAK,EAAG,OAAO,CAAC;gBAEX,EAAE,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;CAKpE"}
@@ -6,7 +6,7 @@ import { Orbit } from 'ogl';
6
6
  export declare class OrbitWithState extends Orbit {
7
7
  /** Используется ли Orbit-controls */
8
8
  isInteracting: boolean;
9
- private readonly element;
9
+ private readonly _element;
10
10
  constructor(object: any, options?: any);
11
11
  /** Очистка новых обработчиков событий */
12
12
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAE5B;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAEb,MAAM,EAAE,GAAG,EAAE,OAAO,GAAE,GAAQ;IAY1C,yCAAyC;IAClC,OAAO;CAMf"}
1
+ {"version":3,"file":"orbit-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/orbit-extension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAE5B;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,qCAAqC;IAC9B,aAAa,EAAE,OAAO,CAAS;IAEtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAEd,MAAM,EAAE,GAAG,EAAE,OAAO,GAAE,GAAQ;IAY1C,yCAAyC;IAClC,OAAO;CAMf"}
@@ -1,4 +1,4 @@
1
- import { IDisplayHandler } from '../../interfaces/display-handler';
1
+ import { IDisplayHandler } from '../../interfaces/handler/display-handler';
2
2
  import { RendererApi } from '../../utils/renderer-api';
3
3
  import { DisplayMode } from '@planara/types';
4
4
  /**
@@ -7,16 +7,16 @@ import { DisplayMode } from '@planara/types';
7
7
  * @internal
8
8
  */
9
9
  export declare class WireframeHandler implements IDisplayHandler {
10
- private api;
10
+ private _api;
11
11
  /** Режим отображения */
12
12
  readonly mode: DisplayMode;
13
13
  /** Wireframe-модели для добавленных на сцену объектов */
14
- private wireMeshes;
14
+ private _wireMeshes;
15
15
  /** Настройки рендеринга для режима wireframe */
16
- private readonly wireMeshProgram;
16
+ private readonly _wireMeshProgram;
17
17
  /** WebGl контекст */
18
- private readonly context;
19
- constructor(api: RendererApi);
18
+ private readonly _context;
19
+ constructor(_api: RendererApi);
20
20
  /**
21
21
  * Применяет wireframe-режим к сцене.
22
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;IAanB,OAAO,CAAC,GAAG;IAZ9C,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,yDAAyD;IACzD,OAAO,CAAC,UAAU,CAAc;IAEhC,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEJ,GAAG,EAAE,WAAW;IAW3D;;OAEG;IACI,MAAM;IAab;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"wireframe-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/display/wireframe-handler.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,qBACa,gBAAiB,YAAW,eAAe;IAanB,OAAO,CAAC,IAAI;IAZ/C,wBAAwB;IACxB,SAAgB,IAAI,EAAE,WAAW,CAAyB;IAE1D,yDAAyD;IACzD,OAAO,CAAC,WAAW,CAAc;IAEjC,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEL,IAAI,EAAE,WAAW;IAW5D;;OAEG;IACI,MAAM;IAab;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -0,0 +1,25 @@
1
+ import { ISelectHandler } from '../../interfaces/handler/select-handler';
2
+ import { SelectMode } from '@planara/types';
3
+ import { RendererApi } from '../../utils/renderer-api';
4
+ import { EditorEvents } from '../../events/editor-events';
5
+ import { EventTopics } from '../../events/event-topics';
6
+ import { SelectEventType } from '../../types/event/select-event-type';
7
+ export declare class MeshSelectHandler implements ISelectHandler {
8
+ private _api;
9
+ /** Режим выборки */
10
+ readonly mode: SelectMode;
11
+ /** Текущая программа для рендеринга фигуры*/
12
+ private readonly _program;
13
+ /** Выбранная фигура */
14
+ private _selectedMesh;
15
+ constructor(_api: RendererApi);
16
+ handle(payload: EditorEvents[EventTopics.SelectHover] | EditorEvents[EventTopics.SelectClick], type: SelectEventType): void;
17
+ /** Обработчик события при наведении курсора мыши на модель */
18
+ private _onHover;
19
+ /** Обработчик события при клике на модель */
20
+ private _onClick;
21
+ /** Выключение подсветки у моделей */
22
+ rollback(): void;
23
+ destroy(): void;
24
+ }
25
+ //# sourceMappingURL=mesh-select-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-select-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/select/mesh-select-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE,qBACa,iBAAkB,YAAW,cAAc;IAUnB,OAAO,CAAC,IAAI;IAT/C,oBAAoB;IACpB,SAAgB,IAAI,EAAE,UAAU,CAAmB;IAEnD,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAEnC,uBAAuB;IACvB,OAAO,CAAC,aAAa,CAAoB;gBAEE,IAAI,EAAE,WAAW;IAQ5D,MAAM,CACJ,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,EACtF,IAAI,EAAE,eAAe,GACpB,IAAI;IAcP,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAEd;IAEF,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAad;IAEF,qCAAqC;IACrC,QAAQ,IAAI,IAAI;IAIhB,OAAO,IAAI,IAAI;CAGhB"}
@@ -1,8 +1,7 @@
1
1
  import { EditorHub } from './editor-hub';
2
- import { Renderer } from '../core/renderer';
3
2
  /**
4
3
  * Создаёт или возвращает готовый экземпляр хаба.
5
4
  * @public
6
5
  */
7
- export declare function createAppHub(renderer: Renderer): EditorHub;
6
+ export declare function createAppHub(canvas: HTMLCanvasElement): EditorHub;
8
7
  //# sourceMappingURL=app-hub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-hub.d.ts","sourceRoot":"","sources":["../../src/hub/app-hub.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAG1D"}
1
+ {"version":3,"file":"app-hub.d.ts","sourceRoot":"","sources":["../../src/hub/app-hub.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAGjE"}
@@ -1,13 +1,21 @@
1
- import { DisplayMode } from '@planara/types';
2
- import { IDisplayManager } from '../interfaces/manager';
1
+ import { DisplayMode, Figure, SelectMode } from '@planara/types';
2
+ import { IDisplayManager } from '../interfaces/manager/display-manager';
3
+ import { ISelectManager } from '../interfaces/manager/select-manager';
4
+ import { EditorRenderer } from '../core/editor-renderer';
3
5
  /**
4
6
  * Хаб для управления редактированием
5
7
  * @public
6
8
  */
7
9
  export declare class EditorHub {
8
- private displayManager;
9
- constructor(displayManager: IDisplayManager);
10
+ private _displayManager;
11
+ private _selectManager;
12
+ private _renderer;
13
+ constructor(_displayManager: IDisplayManager, _selectManager: ISelectManager, _renderer: EditorRenderer);
10
14
  setDisplayMode(mode: DisplayMode): void;
15
+ setSelectMode(mode: SelectMode): void;
16
+ resizeRenderer(): void;
17
+ updateRenderer(): void;
18
+ addFigure(figure: Figure): void;
11
19
  destroy(): void;
12
20
  }
13
21
  //# sourceMappingURL=editor-hub.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;GAGG;AACH,qBACa,SAAS;IACmB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,eAAe;IAE9E,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,OAAO;CAGR"}
1
+ {"version":3,"file":"editor-hub.d.ts","sourceRoot":"","sources":["../../src/hub/editor-hub.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;GAGG;AACH,qBACa,SAAS;IAES,OAAO,CAAC,eAAe;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;gBAFR,eAAe,EAAE,eAAe,EACjC,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,cAAc;IAK7D,cAAc,CAAC,IAAI,EAAE,WAAW;IAIhC,aAAa,CAAC,IAAI,EAAE,UAAU;IAI9B,cAAc;IAId,cAAc;IAId,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO;CAKR"}