@ccpc/canvas 0.1.3

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 (37) hide show
  1. package/LICENSE +21 -0
  2. package/index.js +1976 -0
  3. package/package.json +16 -0
  4. package/types/canvas/c_canvas.d.ts +82 -0
  5. package/types/canvas/c_canvas.d.ts.map +1 -0
  6. package/types/canvas/i_c_canvas.d.ts +4 -0
  7. package/types/canvas/i_c_canvas.d.ts.map +1 -0
  8. package/types/canvas/work_plane.d.ts +10 -0
  9. package/types/canvas/work_plane.d.ts.map +1 -0
  10. package/types/controller/default_controller.d.ts +26 -0
  11. package/types/controller/default_controller.d.ts.map +1 -0
  12. package/types/controller/fn_key.d.ts +15 -0
  13. package/types/controller/fn_key.d.ts.map +1 -0
  14. package/types/controller/i_keyboard_controller.d.ts +20 -0
  15. package/types/controller/i_keyboard_controller.d.ts.map +1 -0
  16. package/types/controller/i_mouse_controller.d.ts +32 -0
  17. package/types/controller/i_mouse_controller.d.ts.map +1 -0
  18. package/types/controller/i_process_event.d.ts +8 -0
  19. package/types/controller/i_process_event.d.ts.map +1 -0
  20. package/types/controller/keyboard_interactor.d.ts +16 -0
  21. package/types/controller/keyboard_interactor.d.ts.map +1 -0
  22. package/types/controller/mouse_interactor.d.ts +43 -0
  23. package/types/controller/mouse_interactor.d.ts.map +1 -0
  24. package/types/index.d.ts +12 -0
  25. package/types/index.d.ts.map +1 -0
  26. package/types/render/active_selection_op.d.ts +27 -0
  27. package/types/render/active_selection_op.d.ts.map +1 -0
  28. package/types/render/c_renderer.d.ts +76 -0
  29. package/types/render/c_renderer.d.ts.map +1 -0
  30. package/types/render/render_hub.d.ts +32 -0
  31. package/types/render/render_hub.d.ts.map +1 -0
  32. package/types/toolkit/canvas_config.d.ts +11 -0
  33. package/types/toolkit/canvas_config.d.ts.map +1 -0
  34. package/types/toolkit/three_util.d.ts +6 -0
  35. package/types/toolkit/three_util.d.ts.map +1 -0
  36. package/types/types/type_define.d.ts +75 -0
  37. package/types/types/type_define.d.ts.map +1 -0
package/package.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "@ccpc/canvas",
3
+ "version": "0.1.3",
4
+ "description": "Canvas rendering layer for editor",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./index.js",
8
+ "peerDependencies": {
9
+ "@ccpc/core": "^0.1.6",
10
+ "@ccpc/math": "^0.1.7"
11
+ },
12
+ "dependencies": {
13
+ "three": "^0.181.1",
14
+ "troika-three-text": "^0.52.4"
15
+ }
16
+ }
@@ -0,0 +1,82 @@
1
+ import { GNode, ModelView } from '@ccpc/core';
2
+ import { ICCanvas } from './i_c_canvas';
3
+ import { IProcessEvent } from '../controller/i_process_event';
4
+ import { WorkPlane } from './work_plane';
5
+ import { Ln3, Plane, Vec2, Vec3 } from '@ccpc/math';
6
+ export declare class CCanvas implements ICCanvas {
7
+ /**
8
+ * 画布容器
9
+ */
10
+ private _container;
11
+ private _renderer;
12
+ /**
13
+ * 鼠标事件监听器
14
+ */
15
+ private _mouseInteractor;
16
+ /**
17
+ * 键盘事件监听器
18
+ */
19
+ private _keyboardInteractor;
20
+ constructor(container: HTMLElement, evtProcess: Array<IProcessEvent>);
21
+ get container(): HTMLElement;
22
+ /**
23
+ * 开启事件监听
24
+ */
25
+ startListening(): void;
26
+ /**
27
+ * 停止监听
28
+ */
29
+ stopListening(): void;
30
+ /**
31
+ * 给模型层视图绑定渲染器实例
32
+ */
33
+ resetModelView(modelView: ModelView): void;
34
+ /**
35
+ * 获取当前工作平面
36
+ */
37
+ getWorkPlane(): WorkPlane;
38
+ /**
39
+ * NDC转屏幕坐标
40
+ */
41
+ NDCToScreen(ndcX: number, ndcY: number): Vec2;
42
+ /**
43
+ * 屏幕坐标转NDC
44
+ */
45
+ screenToNDC(screenPos: Vec2): Vec2;
46
+ /**
47
+ * 屏幕坐标投影到世界坐标系中的指定平面上
48
+ * @param screenPos 屏幕坐标
49
+ * @param plane 世界坐标系下的平面
50
+ */
51
+ screenToWorldPlane(screenPos: Vec2, plane: Plane): Vec3;
52
+ /**
53
+ * 屏幕坐标转当前工作平面下的世界坐标
54
+ */
55
+ screenToWorkPlane(screenPos: Vec2): Vec3;
56
+ /**
57
+ * 世界坐标转屏幕坐标
58
+ */
59
+ worldToScreen(worldPos: Vec3): Vec2;
60
+ /**
61
+ * 屏幕坐标转换为指定平面下的二维局部坐标
62
+ * @param screenPos 屏幕坐标
63
+ * @param plane 目标平面
64
+ */
65
+ screenToPlaneLocal(screenPos: Vec2, plane: Plane): Vec2;
66
+ /**
67
+ * 屏幕坐标转换为当前工作平面下的二维局部坐标
68
+ * @param screenPos 屏幕坐标
69
+ */
70
+ screenToWorkPlaneLocal(screenPos: Vec2): Vec2;
71
+ /**
72
+ * 获取当前工作平面下,1世界单位对应多少像素
73
+ */
74
+ pixelsPerUnit(): number;
75
+ /**
76
+ * 生成相机射线
77
+ */
78
+ generateCameraRay(screenPos: Vec2): Ln3;
79
+ pick(screenX: number, screenY: number): GNode[];
80
+ destroy(): void;
81
+ }
82
+ //# sourceMappingURL=c_canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c_canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/c_canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAc,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAI/D,qBAAa,OAAQ,YAAW,QAAQ;IACpC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,SAAS,CAAW;IAE5B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAAiB;IAEzC;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAoB;gBAEnC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;IAOpE,IAAW,SAAS,gBAEnB;IAED;;OAEG;IACI,cAAc;IAKrB;;OAEG;IACI,aAAa;IAKpB;;OAEG;IACI,cAAc,CAAC,SAAS,EAAE,SAAS;IAI1C;;OAEG;IACI,YAAY;IAInB;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI7C;;OAEG;IACI,WAAW,CAAC,SAAS,EAAE,IAAI;IAIlC;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;IAQvD;;OAEG;IACI,iBAAiB,CAAC,SAAS,EAAE,IAAI;IAMxC;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,IAAI;IAKnC;;;;OAIG;IACI,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK;IAKvD;;;OAGG;IACI,sBAAsB,CAAC,SAAS,EAAE,IAAI;IAK7C;;OAEG;IACI,aAAa;IAWpB;;OAEG;IACI,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG;IAIvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE;IAK/C,OAAO;CAGjB"}
@@ -0,0 +1,4 @@
1
+ export interface ICCanvas {
2
+ container: HTMLElement;
3
+ }
4
+ //# sourceMappingURL=i_c_canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i_c_canvas.d.ts","sourceRoot":"","sources":["../../../src/canvas/i_c_canvas.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,WAAW,CAAA;CACzB"}
@@ -0,0 +1,10 @@
1
+ import { Plane } from '@ccpc/math';
2
+ export declare class WorkPlane {
3
+ private _plane;
4
+ constructor();
5
+ constructor(plane: Plane);
6
+ get plane(): Plane;
7
+ set plane(plane: Plane);
8
+ clone(): WorkPlane;
9
+ }
10
+ //# sourceMappingURL=work_plane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work_plane.d.ts","sourceRoot":"","sources":["../../../src/canvas/work_plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,qBAAa,SAAS;IAGlB,OAAO,CAAC,MAAM,CAAO;;gBAGT,KAAK,EAAE,KAAK;IAMxB,IAAW,KAAK,IAIQ,KAAK,CAF5B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,KAAK,EAE5B;IAEM,KAAK;CAKf"}
@@ -0,0 +1,26 @@
1
+ import { IKeyboardEvent, IMouseEvent } from '../types/type_define';
2
+ import { IKeyboardController } from './i_keyboard_controller';
3
+ import { IMouseController } from './i_mouse_controller';
4
+ export declare class DefaultController implements IMouseController, IKeyboardController {
5
+ processKeyboardEvent(event: IKeyboardEvent): boolean;
6
+ processMouseEvent(event: IMouseEvent): boolean;
7
+ onMouseEnter(_evt: IMouseEvent): boolean;
8
+ onMouseMove(_evt: IMouseEvent): boolean;
9
+ onLButtonDown(_evt: IMouseEvent): boolean;
10
+ onLButtonUp(_evt: IMouseEvent): boolean;
11
+ onRClick(_evt: IMouseEvent): boolean;
12
+ onRButtonDown(_evt: IMouseEvent): boolean;
13
+ onRButtonUp(_evt: IMouseEvent): boolean;
14
+ onMButtonDown(_evt: IMouseEvent): boolean;
15
+ onMButtonUp(_evt: IMouseEvent): boolean;
16
+ onWheelForward(_evt: IMouseEvent): boolean;
17
+ onWheelBackward(_evt: IMouseEvent): boolean;
18
+ onClick(_evt: IMouseEvent): boolean;
19
+ onSglClick(_evt: IMouseEvent): boolean;
20
+ onDblClick(_evt: IMouseEvent): boolean;
21
+ onMouseLeave(_evt: IMouseEvent): boolean;
22
+ onKeyDown(_evt: IKeyboardEvent): boolean;
23
+ onKeyUp(_evt: IKeyboardEvent): boolean;
24
+ onKeyPress(_evt: IKeyboardEvent): boolean;
25
+ }
26
+ //# sourceMappingURL=default_controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default_controller.d.ts","sourceRoot":"","sources":["../../../src/controller/default_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,qBAAa,iBAAkB,YAAW,gBAAgB,EAAE,mBAAmB;IACpE,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAapD,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAqC9C,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIxC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIvC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAGzC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIvC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIpC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIzC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIvC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIzC,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIvC,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI1C,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI3C,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAInC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAItC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAItC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAIxC,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAIxC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAItC,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;CAGnD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 事件的fn状态
3
+ */
4
+ export declare class FnKey {
5
+ private _ctrlKey;
6
+ private _altKey;
7
+ private _shiftKey;
8
+ private _metaKey;
9
+ constructor(event: MouseEvent | KeyboardEvent);
10
+ get ctrlKey(): boolean;
11
+ get altKey(): boolean;
12
+ get shiftKey(): boolean;
13
+ get metaKey(): boolean;
14
+ }
15
+ //# sourceMappingURL=fn_key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn_key.d.ts","sourceRoot":"","sources":["../../../src/controller/fn_key.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,KAAK;IACd,OAAO,CAAC,QAAQ,CAAU;IAE1B,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,QAAQ,CAAU;gBAEd,KAAK,EAAE,UAAU,GAAG,aAAa;IAO7C,IAAW,OAAO,YAEjB;IAED,IAAW,MAAM,YAEhB;IAED,IAAW,QAAQ,YAElB;IAED,IAAW,OAAO,YAEjB;CACJ"}
@@ -0,0 +1,20 @@
1
+ import { IKeyboardEvent } from '../types/type_define';
2
+ /**
3
+ * 处理键盘事件接口
4
+ */
5
+ export interface IProcessKeyboardEvent {
6
+ /**
7
+ * 处理键盘事件
8
+ * 返回true则不再向上冒泡
9
+ */
10
+ processKeyboardEvent(event: IKeyboardEvent): boolean;
11
+ }
12
+ /**
13
+ * 键盘事件控制器接口
14
+ */
15
+ export interface IKeyboardController extends IProcessKeyboardEvent {
16
+ onKeyDown(event: IKeyboardEvent): boolean;
17
+ onKeyUp(event: IKeyboardEvent): boolean;
18
+ onKeyPress(event: IKeyboardEvent): boolean;
19
+ }
20
+ //# sourceMappingURL=i_keyboard_controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i_keyboard_controller.d.ts","sourceRoot":"","sources":["../../../src/controller/i_keyboard_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB;IAC9D,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAE1C,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAExC,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;CAC9C"}
@@ -0,0 +1,32 @@
1
+ import { IMouseEvent } from '../types/type_define';
2
+ /**
3
+ * 处理鼠标事件接口
4
+ */
5
+ export interface IProcessMouseEvent {
6
+ /**
7
+ * 处理鼠标事件
8
+ * 若返回true则不在向上冒泡
9
+ */
10
+ processMouseEvent(event: IMouseEvent): boolean;
11
+ }
12
+ /**
13
+ * 鼠标事件控制接口
14
+ */
15
+ export interface IMouseController extends IProcessMouseEvent {
16
+ onMouseEnter(event: IMouseEvent): boolean;
17
+ onMouseMove(event: IMouseEvent): boolean;
18
+ onLButtonDown(event: IMouseEvent): boolean;
19
+ onLButtonUp(event: IMouseEvent): boolean;
20
+ onRClick(event: IMouseEvent): boolean;
21
+ onRButtonDown(event: IMouseEvent): boolean;
22
+ onRButtonUp(event: IMouseEvent): boolean;
23
+ onMButtonDown(event: IMouseEvent): boolean;
24
+ onMButtonUp(event: IMouseEvent): boolean;
25
+ onWheelForward(event: IMouseEvent): boolean;
26
+ onWheelBackward(event: IMouseEvent): boolean;
27
+ onClick(event: IMouseEvent): boolean;
28
+ onSglClick(event: IMouseEvent): boolean;
29
+ onDblClick(event: IMouseEvent): boolean;
30
+ onMouseLeave(event: IMouseEvent): boolean;
31
+ }
32
+ //# sourceMappingURL=i_mouse_controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i_mouse_controller.d.ts","sourceRoot":"","sources":["../../../src/controller/i_mouse_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IACxD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE1C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAEzC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE3C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAEzC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAEtC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE3C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAEzC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE3C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAEzC,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE5C,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAE7C,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAErC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAExC,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAExC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;CAC7C"}
@@ -0,0 +1,8 @@
1
+ import { IProcessKeyboardEvent } from './i_keyboard_controller';
2
+ import { IProcessMouseEvent } from './i_mouse_controller';
3
+ /**
4
+ * 处理键鼠事件的抽象类型
5
+ */
6
+ export interface IProcessEvent extends IProcessMouseEvent, IProcessKeyboardEvent {
7
+ }
8
+ //# sourceMappingURL=i_process_event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i_process_event.d.ts","sourceRoot":"","sources":["../../../src/controller/i_process_event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB,EAAE,qBAAqB;CAE/E"}
@@ -0,0 +1,16 @@
1
+ import { IProcessKeyboardEvent } from './i_keyboard_controller';
2
+ /**
3
+ * 键盘事件监听器
4
+ */
5
+ export declare class KeyboardInteractor {
6
+ /**键盘事件处理器*/
7
+ private _mouseControllers;
8
+ constructor(controllers: Array<IProcessKeyboardEvent>);
9
+ startListening(): void;
10
+ stopListening(): void;
11
+ private _onKeyDown;
12
+ private _onKeyUp;
13
+ private _onKeyPress;
14
+ private _processKeyboardEvent;
15
+ }
16
+ //# sourceMappingURL=keyboard_interactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard_interactor.d.ts","sourceRoot":"","sources":["../../../src/controller/keyboard_interactor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;GAEG;AACH,qBAAa,kBAAkB;IAC3B,YAAY;IACZ,OAAO,CAAC,iBAAiB,CAAoC;gBAEjD,WAAW,EAAE,KAAK,CAAC,qBAAqB,CAAC;IAI9C,cAAc;IAMd,aAAa;IAMpB,OAAO,CAAC,UAAU,CAEjB;IAED,OAAO,CAAC,QAAQ,CAEf;IAED,OAAO,CAAC,WAAW,CAElB;IAED,OAAO,CAAC,qBAAqB;CAchC"}
@@ -0,0 +1,43 @@
1
+ import { ICCanvas } from '../canvas/i_c_canvas';
2
+ import { IProcessMouseEvent } from './i_mouse_controller';
3
+ /**
4
+ * 鼠标事件监听器
5
+ */
6
+ export declare class MouseInteractor {
7
+ /**触发鼠标事件的容器*/
8
+ private _container;
9
+ /**画布*/
10
+ private _canvas;
11
+ /**鼠标事件处理器*/
12
+ private _mouseControllers;
13
+ /**鼠标是否按下*/
14
+ private _mouseDown;
15
+ /**鼠标左键按下位置*/
16
+ private _lMouseDownPos?;
17
+ /**鼠标中键按下位置*/
18
+ private _mMouseDownPos?;
19
+ /**鼠标右键按下位置*/
20
+ private _rMouseDownPos?;
21
+ /**双击判定定时器*/
22
+ private _dblClickTimeout?;
23
+ private _lastLMouseUpPos?;
24
+ /**滚轮滚动中*/
25
+ private _wheeling;
26
+ private _wheelTimer?;
27
+ constructor(canvas: ICCanvas, container: HTMLElement, controllers: Array<IProcessMouseEvent>);
28
+ startListening(): void;
29
+ stopListening(): void;
30
+ private _onMouseDown;
31
+ private _onMouseMove;
32
+ private _onMouseUp;
33
+ private _onMouseWheel;
34
+ private _onContextMenu;
35
+ private _onMouseLeave;
36
+ private _onMouseEnter;
37
+ private _processMouseEvent;
38
+ /**
39
+ * 获取相对于canvas的屏幕坐标
40
+ */
41
+ private _getScreenPos;
42
+ }
43
+ //# sourceMappingURL=mouse_interactor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mouse_interactor.d.ts","sourceRoot":"","sources":["../../../src/controller/mouse_interactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D;;GAEG;AACH,qBAAa,eAAe;IACxB,cAAc;IACd,OAAO,CAAC,UAAU,CAAc;IAEhC,OAAO;IAEP,OAAO,CAAC,OAAO,CAAW;IAE1B,YAAY;IACZ,OAAO,CAAC,iBAAiB,CAAiC;IAE1D,WAAW;IACX,OAAO,CAAC,UAAU,CAAS;IAE3B,aAAa;IACb,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,aAAa;IACb,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,aAAa;IACb,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,YAAY;IACZ,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,OAAO,CAAC,gBAAgB,CAAC,CAAO;IAEhC,UAAU;IACV,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAMrF,cAAc;IAUd,aAAa;IAUpB,OAAO,CAAC,YAAY,CAiBnB;IAED,OAAO,CAAC,YAAY,CAMnB;IAED,OAAO,CAAC,UAAU,CA8CjB;IAED,OAAO,CAAC,aAAa,CA0BpB;IAED,OAAO,CAAC,cAAc,CAErB;IAED,OAAO,CAAC,aAAa,CAGpB;IAED,OAAO,CAAC,aAAa,CAEpB;IAED,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,aAAa;CAMxB"}
@@ -0,0 +1,12 @@
1
+ export { EN_NativeMouseEvent, EN_NativeKeyboardEvent, EN_MouseEvent, EN_KeyboardEvent, type IMouseEvent, type IKeyboardEvent, } from './types/type_define';
2
+ export { CCanvas } from './canvas/c_canvas';
3
+ export { type ICCanvas } from './canvas/i_c_canvas';
4
+ export { DefaultController } from './controller/default_controller';
5
+ export { FnKey } from './controller/fn_key';
6
+ export { type IProcessKeyboardEvent, type IKeyboardController, } from './controller/i_keyboard_controller';
7
+ export { type IProcessMouseEvent, type IMouseController, } from './controller/i_mouse_controller';
8
+ export { type IProcessEvent } from './controller/i_process_event';
9
+ export { KeyboardInteractor } from './controller/keyboard_interactor';
10
+ export { MouseInteractor } from './controller/mouse_interactor';
11
+ export { canvasConfig } from './toolkit/canvas_config';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,GACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EACH,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GAC3B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { GRep } from '@ccpc/core';
2
+ import { Scene } from 'three';
3
+ /**
4
+ * 高亮选中交互操作
5
+ */
6
+ export declare class ActiveSelectionOp {
7
+ private _activeGroup;
8
+ private _selectionGroup;
9
+ constructor(activeScene: Scene);
10
+ clearActive(): void;
11
+ clearSelection(): void;
12
+ drawActives(greps: GRep[]): void;
13
+ drawSelections(greps: GRep[]): void;
14
+ /**
15
+ * GRep转为可渲染Group
16
+ */
17
+ private _buildOverlayGroup;
18
+ /**
19
+ * 根据RenderNode构建渲染对象
20
+ */
21
+ private _buildLeafObject;
22
+ /**
23
+ * 清空渲染组
24
+ */
25
+ private _clearGroup;
26
+ }
27
+ //# sourceMappingURL=active_selection_op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"active_selection_op.d.ts","sourceRoot":"","sources":["../../../src/render/active_selection_op.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,IAAI,EAOP,MAAM,YAAY,CAAA;AAEnB,OAAO,EAUH,KAAK,EACR,MAAM,OAAO,CAAA;AAOd;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,YAAY,CAAc;IAElC,OAAO,CAAC,eAAe,CAAc;gBAEzB,WAAW,EAAE,KAAK;IAKvB,WAAW;IAIX,cAAc;IAId,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;IAUzB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE;IAUnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8FxB;;OAEG;IACH,OAAO,CAAC,WAAW;CAMtB"}
@@ -0,0 +1,76 @@
1
+ import { GNode, GRep, IRender } from '@ccpc/core';
2
+ import { Ln3, Vec2, Vec3 } from '@ccpc/math';
3
+ export declare class CRenderer extends IRender {
4
+ private static readonly PICK_TOLERANCE;
5
+ private _width;
6
+ private _height;
7
+ private _container;
8
+ private _renderer;
9
+ private _scene;
10
+ private _activeScene;
11
+ private _camera;
12
+ private _cameraControls;
13
+ /**
14
+ * 数据转换器
15
+ */
16
+ private _renderHub;
17
+ private _activeSelectionOp;
18
+ /**
19
+ * displayId到Group映射
20
+ */
21
+ private _didToObject;
22
+ private _resizeObserver;
23
+ constructor(_container: HTMLElement);
24
+ /**
25
+ * 修改完场景后,调update才会真正刷新
26
+ */
27
+ updateView(): void;
28
+ updateImmediately(): void;
29
+ /**
30
+ * 根据渲染数据更新显示对象
31
+ */
32
+ private _updateDisplayByRenderData;
33
+ /**
34
+ * 根据显示对象添加GRep
35
+ */
36
+ private _addGrepByDisplay;
37
+ /**
38
+ * 根据显示对象移除GRep
39
+ */
40
+ private _removeGrepByDisplayId;
41
+ render: () => void;
42
+ /**
43
+ * NDC转屏幕坐标
44
+ */
45
+ NDCToScreen(ndcX: number, ndcY: number): Vec2;
46
+ /**
47
+ * 屏幕坐标转NDC
48
+ */
49
+ screenToNDC(screenPos: Vec2): Vec2;
50
+ /**
51
+ * NDC坐标转世界坐标
52
+ */
53
+ NDCToWorld(ndcX: number, ndcY: number): Vec3;
54
+ /**
55
+ * 世界坐标转NDC坐标
56
+ */
57
+ worldToNDC(worldPos: Vec3): Vec2;
58
+ /**
59
+ * 生成相机射线
60
+ */
61
+ generateCameraRay(screenPos: Vec2): Ln3;
62
+ /**
63
+ * 根据屏幕坐标拾取
64
+ */
65
+ pick(screenX: number, screenY: number): GNode[];
66
+ clearActive(): void;
67
+ clearSelection(): void;
68
+ drawSelections(greps: GRep[]): void;
69
+ drawActives(greps: GRep[]): void;
70
+ /**
71
+ * 监听画布大小变化
72
+ */
73
+ protected _onResize(): void;
74
+ destroy(): void;
75
+ }
76
+ //# sourceMappingURL=c_renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c_renderer.d.ts","sourceRoot":"","sources":["../../../src/render/c_renderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmC,KAAK,EAAE,IAAI,EAAyB,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzG,OAAO,EAAS,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAGnD,qBAAa,SAAU,SAAQ,OAAO;IAClC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAE3C,OAAO,CAAC,MAAM,CAAQ;IAEtB,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,SAAS,CAAe;IAEhC,OAAO,CAAC,MAAM,CAAO;IAErB,OAAO,CAAC,YAAY,CAAO;IAE3B,OAAO,CAAC,OAAO,CAAoB;IAEnC,OAAO,CAAC,eAAe,CAAe;IAEtC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAW;IAE7B,OAAO,CAAC,kBAAkB,CAAmB;IAE7C;;OAEG;IACH,OAAO,CAAC,YAAY,CAA2B;IAG/C,OAAO,CAAC,eAAe,CAAgB;gBAE3B,UAAU,EAAE,WAAW;IA0CnC;;OAEG;IACI,UAAU,IAAI,IAAI;IAKlB,iBAAiB,IAAI,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQvB,MAAM,aAgBZ;IAED;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAO7C;;OAEG;IACI,WAAW,CAAC,SAAS,EAAE,IAAI;IAOlC;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAM5C;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,IAAI;IAKhC;;OAEG;IACI,iBAAiB,CAAC,SAAS,EAAE,IAAI;IAWxC;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE;IAoBtC,WAAW,IAAI,IAAI;IAInB,cAAc,IAAI,IAAI;IAI/B,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAInC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAIvC;;OAEG;IAEH,SAAS,CAAC,SAAS;IAgBZ,OAAO;CAKjB"}
@@ -0,0 +1,32 @@
1
+ import { GNode, GRep } from '@ccpc/core';
2
+ import { Group, Object3D } from 'three';
3
+ /**
4
+ * 渲染数据转换、缓存、管理
5
+ */
6
+ export declare class RenderHub {
7
+ /**
8
+ * 渲染对象和GNode的映射
9
+ */
10
+ private _objectGNodeMap;
11
+ /**
12
+ * 添加GRep
13
+ */
14
+ addGrep(grep: GRep): Group<import("three").Object3DEventMap>;
15
+ /**
16
+ * 移除GRep
17
+ */
18
+ removeGRep(_eId: number): void;
19
+ /**
20
+ * 根据渲染对象查GNode
21
+ */
22
+ getGNodesByObject3d(obj: Object3D): GNode | undefined;
23
+ /**
24
+ * 叶子节点拍平
25
+ */
26
+ private _flatLeafRNodes;
27
+ /**
28
+ * 根据叶子 RenderNode 构建对应的 three Object3D
29
+ */
30
+ private _buildLeafObject3d;
31
+ }
32
+ //# sourceMappingURL=render_hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_hub.d.ts","sourceRoot":"","sources":["../../../src/render/render_hub.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,EAAE,IAAI,EAA4E,MAAM,YAAY,CAAA;AAE1I,OAAO,EAA2D,KAAK,EAA2B,QAAQ,EAA0B,MAAM,OAAO,CAAA;AAOjJ;;GAEG;AACH,qBAAa,SAAS;IAElB;;OAEG;IACH,OAAO,CAAC,eAAe,CAA+B;IAEtD;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,IAAI;IAgBzB;;OAEG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM;IAI9B;;OAEG;IACI,mBAAmB,CAAC,GAAG,EAAE,QAAQ;IAUxC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IAEH,OAAO,CAAC,kBAAkB;CAiG7B"}
@@ -0,0 +1,11 @@
1
+ export declare const canvasConfig: {
2
+ common: {
3
+ /**鼠标从mousedown到mouseup的移动容差: 4px*/
4
+ click_to_tolerance: number;
5
+ /**两次点击触发dbclick的间隔: 0.3s*/
6
+ dbl_click_interval: number;
7
+ /**背景色*/
8
+ color_background: number;
9
+ };
10
+ };
11
+ //# sourceMappingURL=canvas_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas_config.d.ts","sourceRoot":"","sources":["../../../src/toolkit/canvas_config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;QAEjB,mCAAmC;;QAGnC,2BAA2B;;QAG3B,QAAQ;;;CAGf,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Matrix4 } from '@ccpc/math';
2
+ import { Matrix4 as ThreeMatrix4 } from 'three';
3
+ export declare class ThreeUtil {
4
+ static mathMatrix4toThreeMatrix4(mat: Matrix4): ThreeMatrix4;
5
+ }
6
+ //# sourceMappingURL=three_util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"three_util.d.ts","sourceRoot":"","sources":["../../../src/toolkit/three_util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAC;AAEhD,qBAAa,SAAS;WACJ,yBAAyB,CAAC,GAAG,EAAE,OAAO;CASvD"}
@@ -0,0 +1,75 @@
1
+ import { Vec2 } from '@ccpc/math';
2
+ import { FnKey } from '../controller/fn_key';
3
+ /**
4
+ * 原生鼠标事件
5
+ */
6
+ export declare enum EN_NativeMouseEvent {
7
+ MOUSE_DOWN = "mousedown",
8
+ MOUSE_MOVE = "mousemove",
9
+ MOUSE_UP = "mouseup",
10
+ WHEEL = "wheel",
11
+ CONTEXT_MENU = "contextmenu",
12
+ MOUSE_LEAVE = "mouseleave",
13
+ MOUSE_ENTER = "mouseenter"
14
+ }
15
+ /**
16
+ * 原生键盘事件
17
+ */
18
+ export declare enum EN_NativeKeyboardEvent {
19
+ KEY_DOWN = "keydown",
20
+ KEY_UP = "keyup",
21
+ KEY_PRESS = "keypress"
22
+ }
23
+ /**
24
+ * 自定义鼠标事件
25
+ */
26
+ export declare enum EN_MouseEvent {
27
+ MOUSE_MOVE = "move",
28
+ L_BUTTON_DOWN = "l_down",
29
+ L_BUTTON_UP = "l_up",
30
+ R_BUTTON_DOWN = "r_down",
31
+ R_BUTTON_UP = "r_up",
32
+ M_BUTTON_DOWN = "m_down",
33
+ M_BUTTON_UP = "m_up",
34
+ WHEEL_FORWARD = "wheel+",
35
+ WHEEL_BACKWARD = "wheel-",
36
+ WHEEL_START = "wheel_start",
37
+ WHEEL_END = "wheel_end",
38
+ /**右键单击*/
39
+ R_CLICK = "r_clk",
40
+ /**立即触发的单击*/
41
+ CLICK = "clk",
42
+ /**延迟触发的单击*/
43
+ SGL_CLICK = "sgl_clk",
44
+ /**双击*/
45
+ DBL_CLICK = "db_clk",
46
+ MOUSE_LEAVE = "mouse_leave",
47
+ MOUSE_ENTER = "mouse_enter"
48
+ }
49
+ /**
50
+ * 自定义键盘事件
51
+ */
52
+ export declare enum EN_KeyboardEvent {
53
+ KEY_DOWN = "down",
54
+ KEY_UP = "up",
55
+ KEY_PRESS = "press"
56
+ }
57
+ /**
58
+ * 鼠标事件参数类型
59
+ */
60
+ export type IMouseEvent = {
61
+ type: EN_MouseEvent;
62
+ domEvent: MouseEvent;
63
+ /**屏幕坐标*/
64
+ pos: Vec2;
65
+ fnKey: FnKey;
66
+ };
67
+ /**
68
+ * 键盘事件参数类型
69
+ */
70
+ export type IKeyboardEvent = {
71
+ type: EN_KeyboardEvent;
72
+ domEvent: KeyboardEvent;
73
+ fnKey: FnKey;
74
+ };
75
+ //# sourceMappingURL=type_define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type_define.d.ts","sourceRoot":"","sources":["../../../src/types/type_define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C;;GAEG;AACH,oBAAY,mBAAmB;IAC3B,UAAU,cAAc;IACxB,UAAU,cAAc;IACxB,QAAQ,YAAY;IACpB,KAAK,UAAU;IACf,YAAY,gBAAgB;IAC5B,WAAW,eAAe;IAC1B,WAAW,eAAe;CAC7B;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAC9B,QAAQ,YAAY;IACpB,MAAM,UAAU;IAChB,SAAS,aAAa;CACzB;AAED;;GAEG;AACH,oBAAY,aAAa;IACrB,UAAU,SAAS;IAEnB,aAAa,WAAW;IACxB,WAAW,SAAS;IAEpB,aAAa,WAAW;IACxB,WAAW,SAAS;IAEpB,aAAa,WAAW;IACxB,WAAW,SAAS;IAEpB,aAAa,WAAW;IACxB,cAAc,WAAW;IACzB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IAEvB,SAAS;IACT,OAAO,UAAU;IACjB,YAAY;IACZ,KAAK,QAAQ;IACb,YAAY;IACZ,SAAS,YAAY;IACrB,OAAO;IACP,SAAS,WAAW;IAEpB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;CAC9B;AAED;;GAEG;AACH,oBAAY,gBAAgB;IACxB,QAAQ,SAAS;IACjB,MAAM,OAAO;IACb,SAAS,UAAU;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS;IACT,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,KAAK,CAAA;CACf,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,KAAK,CAAA;CACf,CAAA"}