Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AroriaNetwork
GitHub Repository: AroriaNetwork/3kho-backup
Path: blob/main/projects/missiles/src/fog.js
1835 views
1
2
3
4
MG.fog = (function (){
5
var SHOW_TIME = 2.0;
6
var HIDE_TIME = 4.0;
7
8
var FogState = {
9
FADING_IN: 'fading-in',
10
FADING_OUT: 'fading-out'
11
};
12
13
var mState = FogState.FADING_OUT;
14
15
var mCallback = null;
16
17
var mRootNode;
18
var mVisibility = 1.0;
19
20
return {
21
init: function () {
22
mRootNode = document.getElementById('fog');
23
},
24
25
fadeIn: function (newCallback) {
26
mState = FogState.FADING_IN;
27
mRootNode.setAttribute('visibility', 'visible');
28
mCallback = newCallback;
29
},
30
31
fadeOut: function (callback) {
32
mState = FogState.FADING_OUT;
33
mCallback = callback;
34
},
35
36
update: function (dt) {
37
if (mState === FogState.FADING_OUT) {
38
mVisibility -= dt/HIDE_TIME;
39
40
if (mVisibility < 0) {
41
mVisibility = 0;
42
if (mCallback) {
43
mCallback();
44
mCallback = undefined;
45
}
46
}
47
} else {
48
mVisibility += dt/SHOW_TIME;
49
50
if (mVisibility > 1) {
51
mVisibility = 1;
52
if (mCallback) {
53
mCallback();
54
mCallback = undefined;
55
}
56
}
57
}
58
},
59
60
updateDOM: function () {
61
if (mVisibility < 0) {
62
mRootNode.setAttribute('visibility', 'hidden');
63
} else {
64
mRootNode.setAttribute('visibility', 'visible');
65
mRootNode.setAttribute('opacity', String((0.5 - 0.5*Math.cos(Math.PI*mVisibility))));
66
}
67
}
68
};
69
}());
70
71