-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSceneController.jsx
More file actions
71 lines (51 loc) · 1.3 KB
/
SceneController.jsx
File metadata and controls
71 lines (51 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import TWEEN from '@tweenjs/tween.js';
export default class SceneController {
sBegin = new Scene();
scenes = {
"begin": this.sBegin
}
initialize = () => {
this.phaseBegin();
}
phaseBegin = () => {
let bgFadeIn = {opacity: 0};
let inputFadeIn = {opacity: 0};
let twBgFadeIn = new TWEEN.Tween(this.bgFadeIn, this.phaseBegin).to({opacity: 1}, 3000);
let twInputFadeIn = new TWEEN.Tween(this.inputFadeIn, this.phaseBegin).to({opacity: 1}, 8000);
twBgFadeIn.chain(this.twInputFadeIn);
this.sBegin.addTween(bgFadeIn, twBgFadeIn);
this.sBegin.addTween(inputFadeIn, twInputFadeIn);
}
getScene = (phase) => {
return this.scenes[phase];
}
startScene = (phase) => {
this.getScene(phase).start();
}
updateScene = (phase) => {
this.getScene(phase).update();
}
}
export class Scene {
group = new TWEEN.Group();
tweens = [];
elements = [];
startingTween = undefined;
addTween(element, tween) {
if (this.startingTween === undefined) {
this.startingTween = tween;
}
this.elements.push(element);
this.tweens.push(tween);
this.group.add(tween);
}
getElement= (phase) => {
return this.elements[phase];
}
start = () => {
this.startingTween.start();
}
update = (phase) => {
this.group.update();
}
}