@benjos/create-boilerplate 1.3.5 → 1.4.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 (59) hide show
  1. package/package.json +1 -1
  2. package/template-react/package-lock.json +2 -2
  3. package/template-react/package.json +1 -1
  4. package/template-react/src/App.css +21 -21
  5. package/template-react/src/App.tsx +5 -9
  6. package/template-react/src/index.css +42 -42
  7. package/template-react/src/main.tsx +8 -8
  8. package/template-vanilla/index.html +23 -14
  9. package/template-vanilla/package-lock.json +8 -6
  10. package/template-vanilla/package.json +2 -2
  11. package/template-vanilla/src/experiences/Experience.ts +13 -11
  12. package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +12 -17
  13. package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +7 -10
  14. package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +6 -10
  15. package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +19 -38
  16. package/template-vanilla/src/experiences/commands/InitCommand.ts +30 -33
  17. package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +10 -7
  18. package/template-vanilla/src/experiences/engines/threes/LoaderThree.ts +39 -0
  19. package/template-vanilla/src/experiences/engines/threes/MainThree.ts +46 -121
  20. package/template-vanilla/src/experiences/engines/threes/bases/ThreeBase.ts +90 -0
  21. package/template-vanilla/src/experiences/managers/DebugManager.ts +30 -32
  22. package/template-vanilla/src/experiences/managers/LoaderManager.ts +53 -45
  23. package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +94 -109
  24. package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +22 -19
  25. package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +11 -13
  26. package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +0 -4
  27. package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +0 -4
  28. package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +5 -9
  29. package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +3 -3
  30. package/template-vanilla/src/experiences/styles/commons/main.scss +6 -6
  31. package/template-vanilla/src/experiences/styles/style.scss +1 -1
  32. package/template-vanilla/src/experiences/styles/views/loader.scss +7 -6
  33. package/template-vanilla/src/experiences/types/cameraTypes.ts +37 -0
  34. package/template-vanilla/src/experiences/types/global.d.ts +3 -4
  35. package/template-vanilla/src/experiences/types/shaders.d.ts +4 -0
  36. package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +13 -33
  37. package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +27 -18
  38. package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +17 -18
  39. package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +11 -15
  40. package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +15 -12
  41. package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +9 -17
  42. package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +12 -16
  43. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +11 -9
  44. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +11 -9
  45. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +2 -6
  46. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +5 -1
  47. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +5 -9
  48. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +18 -4
  49. package/template-vanilla/src/main.ts +1 -1
  50. package/template-vanilla/tsconfig.json +17 -0
  51. package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +0 -6
  52. package/template-vanilla/src/experiences/managers/KeyboardManager.ts +0 -65
  53. package/template-vanilla/src/experiences/managers/MouseManager.ts +0 -100
  54. package/template-vanilla/src/experiences/managers/ResizeManager.ts +0 -53
  55. package/template-vanilla/src/experiences/managers/TickerManager.ts +0 -86
  56. package/template-vanilla/src/experiences/proxies/ViewProxy.ts +0 -45
  57. package/template-vanilla/src/experiences/views/bases/ViewBase.ts +0 -36
  58. package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +0 -57
  59. /package/template-vanilla/src/experiences/{constants/experiences/AssetType.ts → types/assetTypes.ts} +0 -0
@@ -1,53 +1,50 @@
1
- import { AssetUtils } from '@benjos/cookware';
1
+ import { AssetUtils, DomKeyboardManager, DomPointerManager, DomResizeManager, TickerManager } from '@benjos/cookware';
2
2
  import { AssetId } from '../constants/experiences/AssetId';
3
3
  import DebugManager from '../managers/DebugManager';
4
- import { KeyboardManager } from '../managers/KeyboardManager';
5
4
  import LoaderManager from '../managers/LoaderManager';
6
- import MouseManager from '../managers/MouseManager';
7
- import { ResizeManager } from '../managers/ResizeManager';
8
5
  import ThreeAssetsManager from '../managers/threes/ThreeAssetsManager';
9
6
  import ThreeCameraControllerManager from '../managers/threes/ThreeCameraControllerManager';
10
7
  import ThreeRaycasterManager from '../managers/threes/ThreeRaycasterManager';
11
- import TickerManager from '../managers/TickerManager';
12
- import ViewProxy from '../proxies/ViewProxy';
13
8
 
14
- export default class InitCommand {
15
- public static Init(): void {
16
- InitCommand._InitUtils();
17
- InitCommand._InitProxies();
18
- InitCommand._InitManagers();
19
- InitCommand._InitCommon();
20
- InitCommand._InitThree();
9
+ class InitCommand {
10
+ public init(): void {
11
+ this._initUtils();
12
+ this._initProxies();
13
+ this._initManagers();
14
+ this._initCommon();
15
+ this._initThree();
21
16
  }
22
17
 
23
- private static _InitUtils(): void {
24
- AssetUtils.init();
18
+ private _initUtils(): void {
19
+ AssetUtils.Init();
25
20
  }
26
21
 
27
- private static _InitProxies(): void {
28
- ViewProxy.Init();
22
+ private _initProxies(): void {
23
+ //
29
24
  }
30
25
 
31
- private static _InitManagers(): void {
32
- TickerManager.Init();
33
- KeyboardManager.Init();
34
- MouseManager.Init();
35
- ThreeAssetsManager.Init();
36
- ThreeCameraControllerManager.Init();
37
- ResizeManager.Init();
38
- DebugManager.Init();
39
- ThreeRaycasterManager.Init();
40
- LoaderManager.Init();
26
+ private _initManagers(): void {
27
+ TickerManager.init();
28
+ DomKeyboardManager.init();
29
+ DomPointerManager.init();
30
+ ThreeAssetsManager.init();
31
+ ThreeCameraControllerManager.init();
32
+ DomResizeManager.init();
33
+ DebugManager.init();
34
+ ThreeRaycasterManager.init();
35
+ LoaderManager.init();
41
36
  }
42
37
 
43
- private static _InitCommon(): void {
38
+ private _initCommon(): void {
44
39
  //
45
40
  }
46
41
 
47
- private static _InitThree(): void {
48
- ThreeAssetsManager.AddHDR(AssetId.THREE_HDR_TEMPLATE, AssetUtils.getPath('hdrs/template.hdr'));
49
- ThreeAssetsManager.AddModel(AssetId.THREE_GLTF_TEMPLATE, AssetUtils.getPath('models/template.glb'));
50
- ThreeAssetsManager.AddTexture(AssetId.THREE_TEXTURE_TEMPLATE, AssetUtils.getPath('textures/template.jpg'));
51
- ThreeAssetsManager.AddFont(AssetId.THREE_FONT_TEMPLATE, AssetUtils.getPath('fonts/template.typeface.json'));
42
+ private _initThree(): void {
43
+ ThreeAssetsManager.addHDR(AssetId.THREE_HDR_TEMPLATE, AssetUtils.GetPath('hdrs/template.hdr'));
44
+ ThreeAssetsManager.addModel(AssetId.THREE_GLTF_TEMPLATE, AssetUtils.GetPath('models/template.glb'));
45
+ ThreeAssetsManager.addTexture(AssetId.THREE_TEXTURE_TEMPLATE, AssetUtils.GetPath('textures/template.jpg'));
46
+ ThreeAssetsManager.addFont(AssetId.THREE_FONT_TEMPLATE, AssetUtils.GetPath('fonts/template.typeface.json'));
52
47
  }
53
48
  }
49
+
50
+ export default new InitCommand();
@@ -1,13 +1,16 @@
1
- import { ViewId } from '../../constants/experiences/ViewId';
2
- import ViewProxy from '../../proxies/ViewProxy';
1
+ import HTMLViewBase from '../../views/htmls/bases/HTMLViewBase';
3
2
  import LoaderHTMLView from '../../views/htmls/loaders/LoaderHTMLView';
4
3
 
5
- export default class MainHTML {
6
- public static Init(): void {
7
- MainHTML._GenerateViews();
4
+ class MainHTML {
5
+ private _views: HTMLViewBase[] = [];
6
+
7
+ public init(): void {
8
+ this._generateViews();
8
9
  }
9
10
 
10
- private static _GenerateViews(): void {
11
- ViewProxy.Add(ViewId.HTML_LOADER, LoaderHTMLView);
11
+ private _generateViews(): void {
12
+ this._views.push(new LoaderHTMLView());
12
13
  }
13
14
  }
15
+
16
+ export default new MainHTML();
@@ -0,0 +1,39 @@
1
+ import { DomUtils } from '@benjos/cookware';
2
+ import { Scene } from 'three';
3
+ import LoaderThreeCameraController from '../../cameras/threes/LoaderThreeCameraController';
4
+ import { CameraId } from '../../constants/experiences/CameraId';
5
+ import ThreeCameraControllerManager from '../../managers/threes/ThreeCameraControllerManager';
6
+ import LoaderRenderer from '../../renderers/threes/LoaderRenderer';
7
+ import LoaderThreeView from '../../views/threes/loaders/LoaderThreeView';
8
+ import ThreeBase from './bases/ThreeBase';
9
+
10
+ class LoaderThree extends ThreeBase {
11
+ constructor() {
12
+ super(DomUtils.GetLoader());
13
+ }
14
+
15
+ protected override _generateScenes(): void {
16
+ this._scene = new Scene();
17
+ }
18
+
19
+ protected override _generateCameras(): void {
20
+ ThreeCameraControllerManager.add(new LoaderThreeCameraController());
21
+ this._cameraController = ThreeCameraControllerManager.get(CameraId.THREE_LOADER);
22
+ }
23
+
24
+ protected override _generateRenderers(): void {
25
+ this._renderer = new LoaderRenderer(
26
+ this._scene,
27
+ ThreeCameraControllerManager.get(CameraId.THREE_LOADER).camera
28
+ );
29
+ this._domElementContainer.appendChild(this._renderer.domElement);
30
+ }
31
+
32
+ protected override _generateViews(): void {
33
+ const loaderThreeView = new LoaderThreeView();
34
+ this._views.push(loaderThreeView);
35
+ this._setCurrentView(loaderThreeView);
36
+ }
37
+ }
38
+
39
+ export default new LoaderThree();
@@ -1,36 +1,16 @@
1
- import { DomUtils } from '@benjos/cookware';
1
+ import { DomKeyboardManager, DomUtils } from '@benjos/cookware';
2
2
  import { KeyboardConstant } from '@benjos/spices';
3
3
  import { MeshStandardMaterial, Scene } from 'three';
4
- import type ThreeCameraControllerBase from '../../cameras/threes/bases/ThreeCameraControllerBase';
5
4
  import DebugThreeCameraController from '../../cameras/threes/DebugThreeCameraController';
6
- import LoaderThreeCameraController from '../../cameras/threes/LoaderThreeCameraController';
7
5
  import MainThreeCameraController from '../../cameras/threes/MainThreeCameraController';
8
6
  import { CameraId } from '../../constants/experiences/CameraId';
9
- import { ViewId } from '../../constants/experiences/ViewId';
10
7
  import DebugManager from '../../managers/DebugManager';
11
- import { KeyboardManager } from '../../managers/KeyboardManager';
12
- import { ResizeManager } from '../../managers/ResizeManager';
13
8
  import ThreeCameraControllerManager from '../../managers/threes/ThreeCameraControllerManager';
14
- import TickerManager from '../../managers/TickerManager';
15
- import ViewProxy from '../../proxies/ViewProxy';
16
- import WebGLRendererBase from '../../renderers/threes/bases/WebGLRendererBase';
17
- import LoaderRenderer from '../../renderers/threes/LoaderRenderer';
18
9
  import Renderer from '../../renderers/threes/Renderer';
19
- import LoaderThreeView from '../../views/threes/loaders/LoaderThreeView';
20
10
  import WorldThreeView from '../../views/threes/worlds/WorldThreeView';
11
+ import ThreeBase from './bases/ThreeBase';
21
12
 
22
- export default class MainThree {
23
- private static _DomElementContainer: HTMLElement;
24
- private static _LoaderDomElementContainer: HTMLElement;
25
- private static _Scene: Scene;
26
- private static _LoaderScene: Scene;
27
- private static _CameraController: ThreeCameraControllerBase;
28
- private static _Renderer: Renderer;
29
- private static _LoaderRenderer: WebGLRendererBase;
30
- private static _DebugWireframeMaterial: MeshStandardMaterial;
31
-
32
- //#region Constants
33
- //
13
+ class MainThree extends ThreeBase {
34
14
  private static readonly _DEBUG_WIREFRAME_MATERIAL_COLOR: number = 0x3f79f3;
35
15
  private static readonly _TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS: string[] = [
36
16
  KeyboardConstant.CODES.SHIFT_LEFT,
@@ -40,132 +20,77 @@ export default class MainThree {
40
20
  KeyboardConstant.CODES.SHIFT_LEFT,
41
21
  KeyboardConstant.CODES.KEY_W,
42
22
  ];
43
- //
44
- //#endregion
45
-
46
- public static Init(): void {
47
- TickerManager.Add(MainThree.Update);
48
-
49
- MainThree._DomElementContainer = DomUtils.getApp();
50
- MainThree._LoaderDomElementContainer = DomUtils.getLoader();
51
23
 
52
- MainThree._GenerateScenes();
53
- MainThree._GenerateCameras();
54
- MainThree._GenerateRenderers();
24
+ declare private _debugWireframeMaterial: MeshStandardMaterial;
55
25
 
56
- MainThree._OnResize();
57
- ResizeManager.OnResize.add(MainThree._OnResize);
26
+ constructor() {
27
+ super(DomUtils.GetApp());
28
+ }
58
29
 
59
- MainThree._GenerateViews();
30
+ public override init(): void {
31
+ super.init();
60
32
 
61
- if (DebugManager.IsActive) {
62
- window.experience = MainThree;
63
- KeyboardManager.OnKeyUp.add(MainThree._OnKeyUp);
33
+ if (DebugManager.isActive) {
34
+ window.mainThree = this;
35
+ DomKeyboardManager.onKeyDown.add(this._onKeyDown);
64
36
  }
65
37
  }
66
38
 
67
- private static _GenerateScenes(): void {
68
- MainThree._Scene = new Scene();
69
- MainThree._LoaderScene = new Scene();
39
+ protected override _generateScenes(): void {
40
+ this._scene = new Scene();
70
41
 
71
- if (DebugManager.IsActive) {
72
- MainThree._DebugWireframeMaterial = new MeshStandardMaterial({
42
+ if (DebugManager.isActive) {
43
+ this._debugWireframeMaterial = new MeshStandardMaterial({
73
44
  wireframe: true,
74
45
  color: MainThree._DEBUG_WIREFRAME_MATERIAL_COLOR,
75
46
  });
76
47
  }
77
48
  }
78
49
 
79
- private static _GenerateViews(): void {
80
- ViewProxy.Add(ViewId.THREE_LOADER, LoaderThreeView);
81
- ViewProxy.Add(ViewId.THREE_WORLD, WorldThreeView);
82
- }
83
-
84
- private static _GenerateCameras(): void {
85
- ThreeCameraControllerManager.Add(new MainThreeCameraController(), true);
86
- ThreeCameraControllerManager.Add(new LoaderThreeCameraController());
87
- MainThree._CameraController = ThreeCameraControllerManager.Get(CameraId.THREE_MAIN);
50
+ protected override _generateCameras(): void {
51
+ ThreeCameraControllerManager.add(new MainThreeCameraController(), true);
52
+ this._cameraController = ThreeCameraControllerManager.get(CameraId.THREE_MAIN);
88
53
 
89
- if (DebugManager.IsActive) {
90
- ThreeCameraControllerManager.Add(new DebugThreeCameraController());
54
+ if (DebugManager.isActive) {
55
+ ThreeCameraControllerManager.add(new DebugThreeCameraController());
91
56
  }
92
57
 
93
- ThreeCameraControllerManager.OnActiveThreeCameraControllerChange.add(MainThree._OnActiveCameraControllerChange);
58
+ ThreeCameraControllerManager.onActiveThreeCameraControllerChange.add(this._onActiveCameraControllerChange);
94
59
  }
95
60
 
96
- private static _GenerateRenderers(): void {
97
- MainThree._Renderer = new Renderer(MainThree.Scene, MainThree._CameraController.camera, { antialias: true });
98
- MainThree._DomElementContainer.appendChild(MainThree._Renderer.domElement);
61
+ protected override _generateRenderers(): void {
62
+ this._renderer = new Renderer(this._scene, this._cameraController.camera, { antialias: true });
63
+ this._domElementContainer.appendChild(this._renderer.domElement);
64
+ }
99
65
 
100
- MainThree._LoaderRenderer = new LoaderRenderer(
101
- MainThree.LoaderScene,
102
- ThreeCameraControllerManager.Get(CameraId.THREE_LOADER).camera
103
- );
104
- MainThree._LoaderDomElementContainer.appendChild(MainThree._LoaderRenderer.domElement);
66
+ protected override _generateViews(): void {
67
+ const worldThreeView = new WorldThreeView();
68
+ this._views.push(worldThreeView);
69
+ this._setCurrentView(worldThreeView);
105
70
  }
106
71
 
107
- private static _OnActiveCameraControllerChange = (): void => {
108
- MainThree._CameraController = ThreeCameraControllerManager.ActiveThreeCameraController;
109
- MainThree._Renderer.setCamera(MainThree._CameraController.camera);
110
- MainThree._OnResize();
72
+ private _onActiveCameraControllerChange = (): void => {
73
+ this._cameraController = ThreeCameraControllerManager.activeThreeCameraController;
74
+ this._renderer.setCamera(this._cameraController.camera);
75
+ this._onResize();
111
76
  };
112
77
 
113
- private static readonly _OnKeyUp = (_e: KeyboardEvent): void => {
114
- if (DebugManager.IsActive) {
115
- if (KeyboardManager.AreAllKeysDown(MainThree._TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS)) {
116
- ThreeCameraControllerManager.SetActiveCamera(
117
- MainThree._CameraController.cameraId === CameraId.THREE_MAIN
118
- ? CameraId.THREE_DEBUG
119
- : CameraId.THREE_MAIN
78
+ private readonly _onKeyDown = (_e: KeyboardEvent): void => {
79
+ if (DebugManager.isActive) {
80
+ if (DomKeyboardManager.areAllKeysDown(MainThree._TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS)) {
81
+ ThreeCameraControllerManager.setActiveCamera(
82
+ this._cameraController.cameraId === CameraId.THREE_MAIN ? CameraId.THREE_DEBUG : CameraId.THREE_MAIN
120
83
  );
121
- } else if (KeyboardManager.AreAllKeysDown(MainThree._TOGGLE_WIREFRAME_KEYS)) {
122
- if (MainThree._Scene.overrideMaterial === null) {
123
- MainThree._Scene.overrideMaterial = MainThree._DebugWireframeMaterial;
124
- MainThree._LoaderScene.overrideMaterial = MainThree._DebugWireframeMaterial;
84
+ } else if (DomKeyboardManager.areAllKeysDown(MainThree._TOGGLE_WIREFRAME_KEYS)) {
85
+ if (this._scene.overrideMaterial === null) {
86
+ this._scene.overrideMaterial = this._debugWireframeMaterial;
125
87
  } else {
126
- MainThree._Scene.overrideMaterial = null;
127
- MainThree._LoaderScene.overrideMaterial = null;
88
+ this._scene.overrideMaterial = null;
128
89
  }
129
90
  }
130
91
  }
131
92
  };
132
-
133
- private static _OnResize = (): void => {
134
- MainThree._Renderer.domElement.width = window.innerWidth;
135
- MainThree._Renderer.domElement.height = window.innerHeight;
136
-
137
- MainThree._LoaderRenderer.domElement.width = window.innerWidth;
138
- MainThree._LoaderRenderer.domElement.height = window.innerHeight;
139
-
140
- MainThree._CameraController.resize();
141
- MainThree._Renderer.resize();
142
- MainThree._LoaderRenderer.resize();
143
- };
144
-
145
- public static Update = (dt: number): void => {
146
- MainThree._CameraController.update(dt);
147
- if (ViewProxy.Has(ViewId.THREE_WORLD)) ViewProxy.GetById<WorldThreeView>(ViewId.THREE_WORLD).update(dt);
148
- MainThree._Renderer.update(dt);
149
- MainThree._LoaderRenderer.update(dt);
150
- };
151
-
152
- //#region Getters
153
- //
154
- public static get DomElementContainer(): HTMLElement {
155
- return this._DomElementContainer;
156
- }
157
- public static get Scene(): Scene {
158
- return this._Scene;
159
- }
160
- public static get LoaderScene(): Scene {
161
- return this._LoaderScene;
162
- }
163
- public static get Renderer(): WebGLRendererBase {
164
- return this._Renderer;
165
- }
166
- public static get CameraController(): ThreeCameraControllerBase {
167
- return this._CameraController;
168
- }
169
- //
170
- //#endregion
171
93
  }
94
+
95
+ export type { MainThree };
96
+ export default new MainThree();
@@ -0,0 +1,90 @@
1
+ import { DomResizeManager, TickerManager } from '@benjos/cookware';
2
+ import { Scene } from 'three';
3
+ import ThreeCameraControllerBase from '../../../cameras/threes/bases/ThreeCameraControllerBase';
4
+ import WebGLRendererBase from '../../../renderers/threes/bases/WebGLRendererBase';
5
+ import ThreeViewBase from '../../../views/threes/bases/ThreeViewBase';
6
+
7
+ export default abstract class ThreeBase {
8
+ declare protected _domElementContainer: HTMLElement;
9
+ declare protected _scene: Scene;
10
+ declare protected _cameraController: ThreeCameraControllerBase;
11
+ declare protected _renderer: WebGLRendererBase;
12
+ protected readonly _views: ThreeViewBase[];
13
+ declare protected _currentView: ThreeViewBase;
14
+
15
+ constructor(domElementContainer: HTMLElement) {
16
+ this._domElementContainer = domElementContainer;
17
+ this._views = [];
18
+ }
19
+
20
+ public init(): void {
21
+ TickerManager.add(this._update);
22
+
23
+ this._generateScenes();
24
+ this._generateCameras();
25
+ this._generateRenderers();
26
+ this._generateViews();
27
+
28
+ this._onResize();
29
+ DomResizeManager.onResize.add(this._onResize);
30
+ }
31
+
32
+ protected _generateScenes(): void {
33
+ //
34
+ }
35
+
36
+ protected _generateCameras(): void {
37
+ //
38
+ }
39
+
40
+ protected _generateRenderers(): void {
41
+ //
42
+ }
43
+
44
+ protected _generateViews(): void {
45
+ //
46
+ }
47
+
48
+ protected _setCurrentView(view: ThreeViewBase): void {
49
+ if (this._currentView === view) return;
50
+ if (this._currentView) this._removeOldView(this._currentView);
51
+ this._currentView = view;
52
+ this.scene.add(this._currentView);
53
+ }
54
+
55
+ private _removeOldView(view: ThreeViewBase): void {
56
+ this.scene.remove(view);
57
+ view.dispose();
58
+ }
59
+
60
+ protected _onResize = (): void => {
61
+ this._renderer.domElement.width = window.innerWidth;
62
+ this._renderer.domElement.height = window.innerHeight;
63
+
64
+ this._cameraController.resize();
65
+ this._renderer.resize();
66
+ };
67
+
68
+ private _update = (dt: number): void => {
69
+ this._cameraController.update(dt);
70
+ this._currentView.update(dt);
71
+ this._renderer.update(dt);
72
+ };
73
+
74
+ //#region Getters
75
+ //
76
+ public get domElementContainer(): HTMLElement {
77
+ return this._domElementContainer;
78
+ }
79
+ public get scene(): Scene {
80
+ return this._scene;
81
+ }
82
+ public get renderer(): WebGLRendererBase {
83
+ return this._renderer;
84
+ }
85
+ public get cameraController(): ThreeCameraControllerBase {
86
+ return this._cameraController;
87
+ }
88
+ //
89
+ //#endregion
90
+ }
@@ -1,15 +1,10 @@
1
+ import { DomKeyboardManager } from '@benjos/cookware';
1
2
  import { KeyboardConstant } from '@benjos/spices';
2
3
  import GUI from 'lil-gui';
3
4
  import { ThreePerf } from 'three-perf';
4
5
  import MainThree from '../engines/threes/MainThree';
5
- import { KeyboardManager } from './KeyboardManager';
6
6
 
7
- export default class DebugManager {
8
- private static _Gui: GUI;
9
- private static _ThreePerf: ThreePerf;
10
-
11
- //#region Constants
12
- //
7
+ class DebugManager {
13
8
  private static readonly _IS_ACTIVE_STRING: string = '#debug';
14
9
  private static readonly _GUI_WIDTH: number = 300;
15
10
  private static readonly _GUI_TITLE: string = 'Debug Panel';
@@ -19,60 +14,63 @@ export default class DebugManager {
19
14
  KeyboardConstant.CODES.SHIFT_LEFT,
20
15
  KeyboardConstant.CODES.KEY_H,
21
16
  ];
22
- //
23
- //#endregion
24
17
 
25
- public static Init(): void {
26
- if (DebugManager.IsActive) {
27
- DebugManager._InitGui();
18
+ declare private _gui: GUI;
19
+ declare private _threePerf: ThreePerf;
20
+
21
+ public init(): void {
22
+ if (this.isActive) {
23
+ this._initGui();
28
24
  }
29
25
  }
30
26
 
31
- private static _InitGui(): void {
32
- DebugManager._Gui = new GUI({
27
+ private _initGui(): void {
28
+ this._gui = new GUI({
33
29
  width: DebugManager._GUI_WIDTH,
34
30
  title: DebugManager._GUI_TITLE,
35
31
  closeFolders: true,
36
32
  });
37
- DebugManager._Gui.close();
38
- KeyboardManager.OnKeyUp.remove(DebugManager._OnKeyUp);
39
- KeyboardManager.OnKeyUp.add(DebugManager._OnKeyUp);
33
+ this._gui.close();
34
+ DomKeyboardManager.onKeyDown.remove(this._onKeyDown);
35
+ DomKeyboardManager.onKeyDown.add(this._onKeyDown);
40
36
  }
41
37
 
42
- private static _InitThreePerf = (): void => {
43
- DebugManager._ThreePerf = new ThreePerf({
38
+ private _initThreePerf = (): void => {
39
+ this._threePerf = new ThreePerf({
44
40
  anchorX: DebugManager._THREE_PERF_ANCHOR_X,
45
41
  anchorY: DebugManager._THREE_PERF_ANCHOR_Y,
46
42
  domElement: document.body,
47
- renderer: MainThree.Renderer,
43
+ renderer: MainThree.renderer,
48
44
  showGraph: false,
49
45
  });
50
46
  };
51
47
 
52
- public static BeginThreePerf(): void {
53
- if (!DebugManager._ThreePerf) DebugManager._InitThreePerf();
54
- DebugManager._ThreePerf.begin();
48
+ public beginThreePerf(): void {
49
+ if (!this._threePerf) this._initThreePerf();
50
+ this._threePerf.begin();
55
51
  }
56
52
 
57
- public static EndThreePerf(): void {
58
- DebugManager._ThreePerf.end();
53
+ public endThreePerf(): void {
54
+ this._threePerf.end();
59
55
  }
60
56
 
61
- private static readonly _OnKeyUp = (_e: KeyboardEvent): void => {
62
- if (KeyboardManager.AreAllKeysDown(DebugManager._TOGGLE_HIDDEN_KEYS)) {
63
- DebugManager._Gui.show(DebugManager._Gui._hidden);
64
- DebugManager._ThreePerf.visible = !DebugManager._ThreePerf.visible;
57
+ private readonly _onKeyDown = (_e: KeyboardEvent): void => {
58
+ if (DomKeyboardManager.areAllKeysDown(DebugManager._TOGGLE_HIDDEN_KEYS)) {
59
+ this._gui.show(this._gui._hidden);
60
+ this._threePerf.visible = !this._threePerf.visible;
65
61
  }
66
62
  };
67
63
 
68
64
  //#region Getters
69
65
  //
70
- public static get IsActive(): boolean {
66
+ public get isActive(): boolean {
71
67
  return window.location.hash === DebugManager._IS_ACTIVE_STRING;
72
68
  }
73
- public static get Gui(): GUI {
74
- return DebugManager._Gui;
69
+ public get gui(): GUI {
70
+ return this._gui;
75
71
  }
76
72
  //
77
73
  //#endregion
78
74
  }
75
+
76
+ export default new DebugManager();