@benjos/create-boilerplate 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/template-vanilla/.prettierignore +6 -0
- package/template-vanilla/.prettierrc +10 -0
- package/template-vanilla/assets_source/.gitkeep +0 -0
- package/template-vanilla/eslint.config.js +126 -0
- package/template-vanilla/index.html +17 -0
- package/template-vanilla/package-lock.json +3743 -0
- package/template-vanilla/package.json +38 -0
- package/template-vanilla/public/assets/fonts/LICENSE +13 -0
- package/template-vanilla/public/assets/fonts/template.typeface.json +1 -0
- package/template-vanilla/public/assets/hdrs/template.hdr +0 -0
- package/template-vanilla/public/assets/icons/benjosLogoBlack.svg +5 -0
- package/template-vanilla/public/assets/loaders/draco/README.md +32 -0
- package/template-vanilla/public/assets/loaders/draco/draco_decoder.js +34 -0
- package/template-vanilla/public/assets/loaders/draco/draco_decoder.wasm +0 -0
- package/template-vanilla/public/assets/loaders/draco/draco_encoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/draco_wasm_wrapper.js +117 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_encoder.js +33 -0
- package/template-vanilla/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/template-vanilla/public/assets/models/template.glb +0 -0
- package/template-vanilla/public/assets/textures/template.jpg +0 -0
- package/template-vanilla/readme.md +13 -0
- package/template-vanilla/src/experiences/Experience.ts +15 -0
- package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +60 -0
- package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +28 -0
- package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +28 -0
- package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +109 -0
- package/template-vanilla/src/experiences/commands/InitCommand.ts +48 -0
- package/template-vanilla/src/experiences/constants/doms/DomEvent.ts +100 -0
- package/template-vanilla/src/experiences/constants/doms/KeyboardConstant.ts +250 -0
- package/template-vanilla/src/experiences/constants/experiences/AnimationId.ts +3 -0
- package/template-vanilla/src/experiences/constants/experiences/AssetId.ts +8 -0
- package/template-vanilla/src/experiences/constants/experiences/AssetType.ts +8 -0
- package/template-vanilla/src/experiences/constants/experiences/CameraId.ts +7 -0
- package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +6 -0
- package/template-vanilla/src/experiences/constants/experiences/Object3dId.ts +3 -0
- package/template-vanilla/src/experiences/constants/experiences/ViewId.ts +15 -0
- package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +13 -0
- package/template-vanilla/src/experiences/engines/threes/MainThree.ts +171 -0
- package/template-vanilla/src/experiences/managers/DebugManager.ts +78 -0
- package/template-vanilla/src/experiences/managers/KeyboardManager.ts +65 -0
- package/template-vanilla/src/experiences/managers/LoaderManager.ts +79 -0
- package/template-vanilla/src/experiences/managers/MouseManager.ts +100 -0
- package/template-vanilla/src/experiences/managers/ResizeManager.ts +53 -0
- package/template-vanilla/src/experiences/managers/TickerManager.ts +86 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +279 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +43 -0
- package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +23 -0
- package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +48 -0
- package/template-vanilla/src/experiences/proxies/ViewProxy.ts +30 -0
- package/template-vanilla/src/experiences/proxies/bases/PoolProxyBase.ts +61 -0
- package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +22 -0
- package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +74 -0
- package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +29 -0
- package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderFragmentShader.glsl +6 -0
- package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderVertexShader.glsl +3 -0
- package/template-vanilla/src/experiences/styles/abstracts/_import.scss +5 -0
- package/template-vanilla/src/experiences/styles/abstracts/functions.scss +3 -0
- package/template-vanilla/src/experiences/styles/abstracts/mixins.scss +0 -0
- package/template-vanilla/src/experiences/styles/abstracts/variables.scss +7 -0
- package/template-vanilla/src/experiences/styles/commons/fonts.scss +10 -0
- package/template-vanilla/src/experiences/styles/commons/main.scss +84 -0
- package/template-vanilla/src/experiences/styles/commons/texts.scss +1 -0
- package/template-vanilla/src/experiences/styles/style.scss +7 -0
- package/template-vanilla/src/experiences/styles/views/loader.scss +72 -0
- package/template-vanilla/src/experiences/tools/Action.ts +23 -0
- package/template-vanilla/src/experiences/tools/Point.ts +56 -0
- package/template-vanilla/src/experiences/types/global.d.ts +9 -0
- package/template-vanilla/src/experiences/utils/AssetUtils.ts +6 -0
- package/template-vanilla/src/experiences/utils/DomUtils.ts +28 -0
- package/template-vanilla/src/experiences/views/bases/ViewBase.ts +25 -0
- package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +41 -0
- package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +34 -0
- package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +57 -0
- package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +26 -0
- package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +41 -0
- package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +52 -0
- package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +51 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +77 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +62 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +65 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +31 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +9 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +67 -0
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +48 -0
- package/template-vanilla/src/main.ts +3 -0
- package/template-vanilla/tsconfig.json +24 -0
- package/template-vanilla/vite.config.ts +15 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
export const KeyboardConstant = {
|
|
2
|
+
Keys: {
|
|
3
|
+
Backspace: 'Backspace',
|
|
4
|
+
Tab: 'Tab',
|
|
5
|
+
Enter: 'Enter',
|
|
6
|
+
Shift: 'Shift',
|
|
7
|
+
Control: 'Control',
|
|
8
|
+
Alt: 'Alt',
|
|
9
|
+
Pause: 'Pause',
|
|
10
|
+
CapsLock: 'CapsLock',
|
|
11
|
+
Escape: 'Escape',
|
|
12
|
+
Space: '',
|
|
13
|
+
PageUp: 'PageUp',
|
|
14
|
+
PageDown: 'PageDown',
|
|
15
|
+
End: 'End',
|
|
16
|
+
Home: 'Home',
|
|
17
|
+
ArrowLeft: 'ArrowLeft',
|
|
18
|
+
ArrowUp: 'ArrowUp',
|
|
19
|
+
ArrowRight: 'ArrowRight',
|
|
20
|
+
ArrowDown: 'ArrowDown',
|
|
21
|
+
PrintScreen: 'PrintScreen',
|
|
22
|
+
Insert: 'Insert',
|
|
23
|
+
Delete: 'Delete',
|
|
24
|
+
Digit0: '0',
|
|
25
|
+
Digit1: '1',
|
|
26
|
+
Digit2: '2',
|
|
27
|
+
Digit3: '3',
|
|
28
|
+
Digit4: '4',
|
|
29
|
+
Digit5: '5',
|
|
30
|
+
Digit6: '6',
|
|
31
|
+
Digit7: '7',
|
|
32
|
+
Digit8: '8',
|
|
33
|
+
Digit9: '9',
|
|
34
|
+
A: 'A',
|
|
35
|
+
B: 'B',
|
|
36
|
+
C: 'C',
|
|
37
|
+
D: 'D',
|
|
38
|
+
E: 'E',
|
|
39
|
+
F: 'F',
|
|
40
|
+
G: 'G',
|
|
41
|
+
H: 'H',
|
|
42
|
+
I: 'I',
|
|
43
|
+
J: 'J',
|
|
44
|
+
K: 'K',
|
|
45
|
+
L: 'L',
|
|
46
|
+
M: 'M',
|
|
47
|
+
N: 'N',
|
|
48
|
+
O: 'O',
|
|
49
|
+
P: 'P',
|
|
50
|
+
Q: 'Q',
|
|
51
|
+
R: 'R',
|
|
52
|
+
S: 'S',
|
|
53
|
+
T: 'T',
|
|
54
|
+
U: 'U',
|
|
55
|
+
V: 'V',
|
|
56
|
+
W: 'W',
|
|
57
|
+
X: 'X',
|
|
58
|
+
Y: 'Y',
|
|
59
|
+
Z: 'Z',
|
|
60
|
+
a: 'a',
|
|
61
|
+
b: 'b',
|
|
62
|
+
c: 'c',
|
|
63
|
+
d: 'd',
|
|
64
|
+
e: 'e',
|
|
65
|
+
f: 'f',
|
|
66
|
+
g: 'g',
|
|
67
|
+
h: 'h',
|
|
68
|
+
i: 'i',
|
|
69
|
+
j: 'j',
|
|
70
|
+
k: 'k',
|
|
71
|
+
l: 'l',
|
|
72
|
+
m: 'm',
|
|
73
|
+
n: 'n',
|
|
74
|
+
o: 'o',
|
|
75
|
+
p: 'p',
|
|
76
|
+
q: 'q',
|
|
77
|
+
r: 'r',
|
|
78
|
+
s: 's',
|
|
79
|
+
t: 't',
|
|
80
|
+
u: 'u',
|
|
81
|
+
v: 'v',
|
|
82
|
+
w: 'w',
|
|
83
|
+
x: 'x',
|
|
84
|
+
y: 'y',
|
|
85
|
+
z: 'z',
|
|
86
|
+
Meta: 'Meta',
|
|
87
|
+
ContextMenu: 'ContextMenu',
|
|
88
|
+
AudioVolumeMute: 'AudioVolumeMute',
|
|
89
|
+
AudioVolumeDown: 'AudioVolumeDown',
|
|
90
|
+
AudioVolumeUp: 'AudioVolumeUp',
|
|
91
|
+
F1: 'F1',
|
|
92
|
+
F2: 'F2',
|
|
93
|
+
F3: 'F3',
|
|
94
|
+
F4: 'F4',
|
|
95
|
+
F5: 'F5',
|
|
96
|
+
F6: 'F6',
|
|
97
|
+
F7: 'F7',
|
|
98
|
+
F8: 'F8',
|
|
99
|
+
F9: 'F9',
|
|
100
|
+
F10: 'F10',
|
|
101
|
+
F11: 'F11',
|
|
102
|
+
F12: 'F12',
|
|
103
|
+
NumLock: 'NumLock',
|
|
104
|
+
ScrollLock: 'ScrollLock',
|
|
105
|
+
Semicolon: ';',
|
|
106
|
+
Equal: ':',
|
|
107
|
+
Comma: ',',
|
|
108
|
+
Minus: '-',
|
|
109
|
+
Period: '.',
|
|
110
|
+
Slash: '/',
|
|
111
|
+
Backquote: '`',
|
|
112
|
+
BracketLeft: '[',
|
|
113
|
+
Backslash: '\\',
|
|
114
|
+
BracketRight: ']',
|
|
115
|
+
Quote: "'",
|
|
116
|
+
Tilde: '~',
|
|
117
|
+
Exclamation: '!',
|
|
118
|
+
At: '@',
|
|
119
|
+
Sharp: '#',
|
|
120
|
+
Dollar: '$',
|
|
121
|
+
Percent: '%',
|
|
122
|
+
Caret: '^',
|
|
123
|
+
Ampersand: '&',
|
|
124
|
+
Asterisk: '*',
|
|
125
|
+
ParenthesisLeft: '(',
|
|
126
|
+
ParenthesisRight: ')',
|
|
127
|
+
Underscore: '_',
|
|
128
|
+
Plus: '+',
|
|
129
|
+
OpenBrace: '{',
|
|
130
|
+
CloseBrace: '}',
|
|
131
|
+
Pipe: '|',
|
|
132
|
+
Colon: ':',
|
|
133
|
+
Quote2: '"',
|
|
134
|
+
AngleBracketLeft: '<',
|
|
135
|
+
AngleBracketRight: '>',
|
|
136
|
+
QuestionMark: '?',
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
Codes: {
|
|
140
|
+
Backspace: 'Backspace',
|
|
141
|
+
Tab: 'Tab',
|
|
142
|
+
Enter: 'Enter',
|
|
143
|
+
ShiftLeft: 'ShiftLeft',
|
|
144
|
+
ShiftRight: 'ShiftRight',
|
|
145
|
+
ControlLeft: 'ControlLeft',
|
|
146
|
+
ControlRight: 'ControlRight',
|
|
147
|
+
AltLeft: 'AltLeft',
|
|
148
|
+
AltRight: 'AltRight',
|
|
149
|
+
Pause: 'Pause',
|
|
150
|
+
CapsLock: 'CapsLock',
|
|
151
|
+
Escape: 'Escape',
|
|
152
|
+
Space: 'Space',
|
|
153
|
+
PageUp: 'PageUp',
|
|
154
|
+
PageDown: 'PageDown',
|
|
155
|
+
End: 'End',
|
|
156
|
+
Home: 'Home',
|
|
157
|
+
ArrowLeft: 'ArrowLeft',
|
|
158
|
+
ArrowUp: 'ArrowUp',
|
|
159
|
+
ArrowRight: 'ArrowRight',
|
|
160
|
+
ArrowDown: 'ArrowDown',
|
|
161
|
+
PrintScreen: 'PrintScreen',
|
|
162
|
+
Insert: 'Insert',
|
|
163
|
+
Delete: 'Delete',
|
|
164
|
+
Digit0: 'Digit0',
|
|
165
|
+
Digit1: 'Digit1',
|
|
166
|
+
Digit2: 'Digit2',
|
|
167
|
+
Digit3: 'Digit3',
|
|
168
|
+
Digit4: 'Digit4',
|
|
169
|
+
Digit5: 'Digit5',
|
|
170
|
+
Digit6: 'Digit6',
|
|
171
|
+
Digit7: 'Digit7',
|
|
172
|
+
Digit8: 'Digit8',
|
|
173
|
+
Digit9: 'Digit9',
|
|
174
|
+
AudioVolumeMute: 'AudioVolumeMute',
|
|
175
|
+
AudioVolumeDown: 'AudioVolumeDown',
|
|
176
|
+
AudioVolumeUp: 'AudioVolumeUp',
|
|
177
|
+
KeyA: 'KeyA',
|
|
178
|
+
KeyB: 'KeyB',
|
|
179
|
+
KeyC: 'KeyC',
|
|
180
|
+
KeyD: 'KeyD',
|
|
181
|
+
KeyE: 'KeyE',
|
|
182
|
+
KeyF: 'KeyF',
|
|
183
|
+
KeyG: 'KeyG',
|
|
184
|
+
KeyH: 'KeyH',
|
|
185
|
+
KeyI: 'KeyI',
|
|
186
|
+
KeyJ: 'KeyJ',
|
|
187
|
+
KeyK: 'KeyK',
|
|
188
|
+
KeyL: 'KeyL',
|
|
189
|
+
KeyM: 'KeyM',
|
|
190
|
+
KeyN: 'KeyN',
|
|
191
|
+
KeyO: 'KeyO',
|
|
192
|
+
KeyP: 'KeyP',
|
|
193
|
+
KeyQ: 'KeyQ',
|
|
194
|
+
KeyR: 'KeyR',
|
|
195
|
+
KeyS: 'KeyS',
|
|
196
|
+
KeyT: 'KeyT',
|
|
197
|
+
KeyU: 'KeyU',
|
|
198
|
+
KeyV: 'KeyV',
|
|
199
|
+
KeyW: 'KeyW',
|
|
200
|
+
KeyX: 'KeyX',
|
|
201
|
+
KeyY: 'KeyY',
|
|
202
|
+
KeyZ: 'KeyZ',
|
|
203
|
+
MetaLeft: 'MetaLeft',
|
|
204
|
+
MetaRight: 'MetaRight',
|
|
205
|
+
ContextMenu: 'ContextMenu',
|
|
206
|
+
Numpad0: 'Numpad0',
|
|
207
|
+
Numpad1: 'Numpad1',
|
|
208
|
+
Numpad2: 'Numpad2',
|
|
209
|
+
Numpad3: 'Numpad3',
|
|
210
|
+
Numpad4: 'Numpad4',
|
|
211
|
+
Numpad5: 'Numpad5',
|
|
212
|
+
Numpad6: 'Numpad6',
|
|
213
|
+
Numpad7: 'Numpad7',
|
|
214
|
+
Numpad8: 'Numpad8',
|
|
215
|
+
Numpad9: 'Numpad9',
|
|
216
|
+
NumpadMultiply: 'NumpadMultiply',
|
|
217
|
+
NumpadAdd: 'NumpadAdd',
|
|
218
|
+
NumpadSubtract: 'NumpadSubtract',
|
|
219
|
+
NumpadDecimal: 'NumpadDecimal',
|
|
220
|
+
NumpadDivide: 'NumpadDivide',
|
|
221
|
+
NumpadEnter: 'NumpadEnter',
|
|
222
|
+
F1: 'F1',
|
|
223
|
+
F2: 'F2',
|
|
224
|
+
F3: 'F3',
|
|
225
|
+
F4: 'F4',
|
|
226
|
+
F5: 'F5',
|
|
227
|
+
F6: 'F6',
|
|
228
|
+
F7: 'F7',
|
|
229
|
+
F8: 'F8',
|
|
230
|
+
F9: 'F9',
|
|
231
|
+
F10: 'F10',
|
|
232
|
+
F11: 'F11',
|
|
233
|
+
F12: 'F12',
|
|
234
|
+
NumLock: 'NumLock',
|
|
235
|
+
ScrollLock: 'ScrollLock',
|
|
236
|
+
Semicolon: 'Semicolon',
|
|
237
|
+
Equal: 'Equal',
|
|
238
|
+
Comma: 'Comma',
|
|
239
|
+
Minus: 'Minus',
|
|
240
|
+
Period: 'Period',
|
|
241
|
+
Slash: 'Slash',
|
|
242
|
+
Backquote: 'Backquote',
|
|
243
|
+
BracketLeft: 'BracketLeft',
|
|
244
|
+
Backslash: 'Backslash',
|
|
245
|
+
BracketRight: 'BracketRight',
|
|
246
|
+
Quote: 'Quote',
|
|
247
|
+
},
|
|
248
|
+
} as const;
|
|
249
|
+
|
|
250
|
+
export type KeyboardConstant = (typeof KeyboardConstant)[keyof typeof KeyboardConstant];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const AssetId = {
|
|
2
|
+
THREE_TEXTURE_TEMPLATE: 'THREE_TEXTURE_TEMPLATE',
|
|
3
|
+
THREE_HDR_TEMPLATE: 'THREE_HDR_TEMPLATE',
|
|
4
|
+
THREE_GLTF_TEMPLATE: 'THREE_GLTF_TEMPLATE',
|
|
5
|
+
THREE_FONT_TEMPLATE: 'THREE_FONT_TEMPLATE',
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
export type AssetId = (typeof AssetId)[keyof typeof AssetId];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const HTMLViewId = {
|
|
2
|
+
HTML_LOADER: 'HTML_LOADER',
|
|
3
|
+
} as const;
|
|
4
|
+
|
|
5
|
+
const ThreeViewId = {
|
|
6
|
+
THREE_LOADER: 'THREE_LOADER',
|
|
7
|
+
THREE_WORLD: 'THREE_WORLD',
|
|
8
|
+
} as const;
|
|
9
|
+
|
|
10
|
+
export const ViewId = {
|
|
11
|
+
...HTMLViewId,
|
|
12
|
+
...ThreeViewId,
|
|
13
|
+
} as const;
|
|
14
|
+
|
|
15
|
+
export type ViewId = (typeof ViewId)[keyof typeof ViewId];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ViewId } from '../../constants/experiences/ViewId';
|
|
2
|
+
import ViewProxy from '../../proxies/ViewProxy';
|
|
3
|
+
import LoaderHTMLView from '../../views/htmls/loaders/LoaderHTMLView';
|
|
4
|
+
|
|
5
|
+
export default class MainHTML {
|
|
6
|
+
public static Init(): void {
|
|
7
|
+
MainHTML._GenerateViews();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
private static _GenerateViews(): void {
|
|
11
|
+
ViewProxy.Add(ViewId.HTML_LOADER, LoaderHTMLView);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { MeshStandardMaterial, Scene } from 'three';
|
|
2
|
+
import type ThreeCameraControllerBase from '../../cameras/threes/bases/ThreeCameraControllerBase';
|
|
3
|
+
import DebugThreeCameraController from '../../cameras/threes/DebugThreeCameraController';
|
|
4
|
+
import LoaderThreeCameraController from '../../cameras/threes/LoaderThreeCameraController';
|
|
5
|
+
import MainThreeCameraController from '../../cameras/threes/MainThreeCameraController';
|
|
6
|
+
import { KeyboardConstant } from '../../constants/doms/KeyboardConstant';
|
|
7
|
+
import { CameraId } from '../../constants/experiences/CameraId';
|
|
8
|
+
import { ViewId } from '../../constants/experiences/ViewId';
|
|
9
|
+
import DebugManager from '../../managers/DebugManager';
|
|
10
|
+
import { KeyboardManager } from '../../managers/KeyboardManager';
|
|
11
|
+
import { ResizeManager } from '../../managers/ResizeManager';
|
|
12
|
+
import ThreeCameraControllerManager from '../../managers/threes/ThreeCameraControllerManager';
|
|
13
|
+
import TickerManager from '../../managers/TickerManager';
|
|
14
|
+
import ViewProxy from '../../proxies/ViewProxy';
|
|
15
|
+
import WebGLRendererBase from '../../renderers/threes/bases/WebGLRendererBase';
|
|
16
|
+
import LoaderRenderer from '../../renderers/threes/LoaderRenderer';
|
|
17
|
+
import Renderer from '../../renderers/threes/Renderer';
|
|
18
|
+
import DomUtils from '../../utils/DomUtils';
|
|
19
|
+
import LoaderThreeView from '../../views/threes/loaders/LoaderThreeView';
|
|
20
|
+
import WorldThreeView from '../../views/threes/worlds/WorldThreeView';
|
|
21
|
+
|
|
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
|
+
//
|
|
34
|
+
private static readonly _DEBUG_WIREFRAME_MATERIAL_COLOR: number = 0x3f79f3;
|
|
35
|
+
private static readonly _TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS: string[] = [
|
|
36
|
+
KeyboardConstant.Codes.ShiftLeft,
|
|
37
|
+
KeyboardConstant.Codes.KeyC,
|
|
38
|
+
];
|
|
39
|
+
private static readonly _TOGGLE_WIREFRAME_KEYS: string[] = [
|
|
40
|
+
KeyboardConstant.Codes.ShiftLeft,
|
|
41
|
+
KeyboardConstant.Codes.KeyW,
|
|
42
|
+
];
|
|
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
|
+
|
|
52
|
+
MainThree._GenerateScenes();
|
|
53
|
+
MainThree._GenerateCameras();
|
|
54
|
+
MainThree._GenerateRenderers();
|
|
55
|
+
|
|
56
|
+
MainThree._OnResize();
|
|
57
|
+
ResizeManager.OnResize.add(MainThree._OnResize);
|
|
58
|
+
|
|
59
|
+
MainThree._GenerateViews();
|
|
60
|
+
|
|
61
|
+
if (DebugManager.IsActive) {
|
|
62
|
+
window.experience = MainThree;
|
|
63
|
+
KeyboardManager.OnKeyUp.add(MainThree._OnKeyUp);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private static _GenerateScenes(): void {
|
|
68
|
+
MainThree._Scene = new Scene();
|
|
69
|
+
MainThree._LoaderScene = new Scene();
|
|
70
|
+
|
|
71
|
+
if (DebugManager.IsActive) {
|
|
72
|
+
MainThree._DebugWireframeMaterial = new MeshStandardMaterial({
|
|
73
|
+
wireframe: true,
|
|
74
|
+
color: MainThree._DEBUG_WIREFRAME_MATERIAL_COLOR,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
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);
|
|
88
|
+
|
|
89
|
+
if (DebugManager.IsActive) {
|
|
90
|
+
ThreeCameraControllerManager.Add(new DebugThreeCameraController());
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
ThreeCameraControllerManager.OnActiveThreeCameraControllerChange.add(MainThree._OnActiveCameraControllerChange);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
private static _GenerateRenderers(): void {
|
|
97
|
+
MainThree._Renderer = new Renderer(MainThree.Scene, MainThree._CameraController.camera, { antialias: true });
|
|
98
|
+
MainThree._DomElementContainer.appendChild(MainThree._Renderer.domElement);
|
|
99
|
+
|
|
100
|
+
MainThree._LoaderRenderer = new LoaderRenderer(
|
|
101
|
+
MainThree.LoaderScene,
|
|
102
|
+
ThreeCameraControllerManager.Get(CameraId.THREE_LOADER).camera
|
|
103
|
+
);
|
|
104
|
+
MainThree._LoaderDomElementContainer.appendChild(MainThree._LoaderRenderer.domElement);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private static _OnActiveCameraControllerChange = (): void => {
|
|
108
|
+
MainThree._CameraController = ThreeCameraControllerManager.ActiveThreeCameraController;
|
|
109
|
+
MainThree._Renderer.setCamera(MainThree._CameraController.camera);
|
|
110
|
+
MainThree._OnResize();
|
|
111
|
+
};
|
|
112
|
+
|
|
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
|
|
120
|
+
);
|
|
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;
|
|
125
|
+
} else {
|
|
126
|
+
MainThree._Scene.overrideMaterial = null;
|
|
127
|
+
MainThree._LoaderScene.overrideMaterial = null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
};
|
|
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
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import GUI from 'lil-gui';
|
|
2
|
+
import { ThreePerf } from 'three-perf';
|
|
3
|
+
import { KeyboardConstant } from '../constants/doms/KeyboardConstant';
|
|
4
|
+
import MainThree from '../engines/threes/MainThree';
|
|
5
|
+
import { KeyboardManager } from './KeyboardManager';
|
|
6
|
+
|
|
7
|
+
export default class DebugManager {
|
|
8
|
+
private static _Gui: GUI;
|
|
9
|
+
private static _ThreePerf: ThreePerf;
|
|
10
|
+
|
|
11
|
+
//#region Constants
|
|
12
|
+
//
|
|
13
|
+
private static readonly _IS_ACTIVE_STRING: string = '#debug';
|
|
14
|
+
private static readonly _GUI_WIDTH: number = 300;
|
|
15
|
+
private static readonly _GUI_TITLE: string = 'Debug Panel';
|
|
16
|
+
private static readonly _THREE_PERF_ANCHOR_X: 'left' | 'right' = 'left';
|
|
17
|
+
private static readonly _THREE_PERF_ANCHOR_Y: 'top' | 'bottom' = 'bottom';
|
|
18
|
+
private static readonly _TOGGLE_HIDDEN_KEYS: string[] = [
|
|
19
|
+
KeyboardConstant.Codes.ShiftLeft,
|
|
20
|
+
KeyboardConstant.Codes.KeyH,
|
|
21
|
+
];
|
|
22
|
+
//
|
|
23
|
+
//#endregion
|
|
24
|
+
|
|
25
|
+
public static Init(): void {
|
|
26
|
+
if (DebugManager.IsActive) {
|
|
27
|
+
DebugManager._InitGui();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private static _InitGui(): void {
|
|
32
|
+
DebugManager._Gui = new GUI({
|
|
33
|
+
width: DebugManager._GUI_WIDTH,
|
|
34
|
+
title: DebugManager._GUI_TITLE,
|
|
35
|
+
closeFolders: true,
|
|
36
|
+
});
|
|
37
|
+
DebugManager._Gui.close();
|
|
38
|
+
KeyboardManager.OnKeyUp.remove(DebugManager._OnKeyUp);
|
|
39
|
+
KeyboardManager.OnKeyUp.add(DebugManager._OnKeyUp);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private static _InitThreePerf = (): void => {
|
|
43
|
+
DebugManager._ThreePerf = new ThreePerf({
|
|
44
|
+
anchorX: DebugManager._THREE_PERF_ANCHOR_X,
|
|
45
|
+
anchorY: DebugManager._THREE_PERF_ANCHOR_Y,
|
|
46
|
+
domElement: document.body,
|
|
47
|
+
renderer: MainThree.Renderer,
|
|
48
|
+
showGraph: false,
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
public static BeginThreePerf(): void {
|
|
53
|
+
if (!DebugManager._ThreePerf) DebugManager._InitThreePerf();
|
|
54
|
+
DebugManager._ThreePerf.begin();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public static EndThreePerf(): void {
|
|
58
|
+
DebugManager._ThreePerf.end();
|
|
59
|
+
}
|
|
60
|
+
|
|
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;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
//#region Getters
|
|
69
|
+
//
|
|
70
|
+
public static get IsActive(): boolean {
|
|
71
|
+
return window.location.hash === DebugManager._IS_ACTIVE_STRING;
|
|
72
|
+
}
|
|
73
|
+
public static get Gui(): GUI {
|
|
74
|
+
return DebugManager._Gui;
|
|
75
|
+
}
|
|
76
|
+
//
|
|
77
|
+
//#endregion
|
|
78
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { DomEvent } from '../constants/doms/DomEvent';
|
|
2
|
+
import Action from '../tools/Action';
|
|
3
|
+
|
|
4
|
+
export class KeyboardManager {
|
|
5
|
+
private static readonly _KeyDownsMap = new Map<string, boolean>();
|
|
6
|
+
private static readonly _CodeDownsMap = new Map<string, boolean>();
|
|
7
|
+
|
|
8
|
+
public static readonly OnKeyDown = new Action<[KeyboardEvent]>();
|
|
9
|
+
public static readonly OnKeyUp = new Action<[KeyboardEvent]>();
|
|
10
|
+
|
|
11
|
+
public static Init(): void {
|
|
12
|
+
KeyboardManager._KeyDownsMap.clear();
|
|
13
|
+
KeyboardManager._CodeDownsMap.clear();
|
|
14
|
+
KeyboardManager._AddCallbacks();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
private static _AddCallbacks(): void {
|
|
18
|
+
KeyboardManager._RemoveCallbacks();
|
|
19
|
+
window.addEventListener(DomEvent.KEY_DOWN, KeyboardManager._OnKeyDown);
|
|
20
|
+
window.addEventListener(DomEvent.KEY_UP, KeyboardManager._OnKeyUp);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private static _RemoveCallbacks(): void {
|
|
24
|
+
window.removeEventListener(DomEvent.KEY_DOWN, KeyboardManager._OnKeyDown);
|
|
25
|
+
window.removeEventListener(DomEvent.KEY_UP, KeyboardManager._OnKeyUp);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private static readonly _OnKeyDown = (e: KeyboardEvent): void => {
|
|
29
|
+
KeyboardManager._KeyDownsMap.set(e.key, true);
|
|
30
|
+
KeyboardManager._CodeDownsMap.set(e.code, true);
|
|
31
|
+
KeyboardManager.OnKeyDown.execute(e);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
private static readonly _OnKeyUp = (e: KeyboardEvent): void => {
|
|
35
|
+
KeyboardManager.OnKeyUp.execute(e);
|
|
36
|
+
KeyboardManager._KeyDownsMap.set(e.key, false);
|
|
37
|
+
KeyboardManager._CodeDownsMap.set(e.code, false);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
public static IsKeyDown(name: string): boolean {
|
|
41
|
+
if (!KeyboardManager.IsAvailableForControl()) return false;
|
|
42
|
+
if (KeyboardManager._CodeDownsMap.get(name)) return true;
|
|
43
|
+
if (KeyboardManager._KeyDownsMap.get(name)) return true;
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static IsAnyKeyDown(names: string[]): boolean {
|
|
48
|
+
if (!KeyboardManager.IsAvailableForControl()) return false;
|
|
49
|
+
return names.some((name) => KeyboardManager.IsKeyDown(name));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public static AreAllKeysDown(names: string[]): boolean {
|
|
53
|
+
if (!KeyboardManager.IsAvailableForControl()) return false;
|
|
54
|
+
return names.every((name) => KeyboardManager.IsKeyDown(name));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
public static IsAvailableForControl(): boolean {
|
|
58
|
+
const active: HTMLElement = document.activeElement as HTMLElement;
|
|
59
|
+
return !(
|
|
60
|
+
active instanceof HTMLInputElement ||
|
|
61
|
+
active instanceof HTMLTextAreaElement ||
|
|
62
|
+
active?.isContentEditable
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|