forked from ghuynh95/BraveAR
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCSS3DArgonHUD.js
120 lines (106 loc) · 3.23 KB
/
CSS3DArgonHUD.js
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/**
* @author mrdoob / http://mrdoob.com/
* @author blairmacintyre / http://blairmacintyre.me/
*/
THREE.CSS3DArgonHUD = function () {
console.log( 'THREE.CSS3DArgonHUD', THREE.REVISION );
var _viewPortWidth = 0;
var _viewPortHeight = 0;
var _viewWidth = [1, 1];
var _viewHeight = [1, 1];
var _viewX = [0, 0];
var _viewY = [0, 0];
var _visible = [false, false];
var domElement = document.createElement( 'div' );
domElement.style.width = '0px';
domElement.style.height = '0px';
this.domElement = domElement;
this.domElement.style.pointerEvents = 'none';
var hudElements = [];
this.hudElements = hudElements;
hudElements[0] = document.createElement( 'div' );
hudElements[0].style.display = 'none'; // start hidden
hudElements[0].style.position = 'absolute';
hudElements[0].style.overflow = 'hidden';
hudElements[0].style.pointerEvents = 'none';
hudElements[0].style.bottom = '0px';
hudElements[0].style.left = '0px';
hudElements[0].style.width = '1px';
hudElements[0].style.height = '1px';
domElement.appendChild( hudElements[0] );
hudElements[1] = document.createElement( 'div' );
hudElements[1].style.display = 'none'; // start hidden
hudElements[1].style.position = 'absolute';
hudElements[1].style.overflow = 'hidden';
hudElements[1].style.pointerEvents = 'none';
hudElements[1].style.bottom = '0px';
hudElements[1].style.left = '0px';
hudElements[1].style.width = '1px';
hudElements[1].style.height = '1px';
domElement.appendChild( hudElements[1] );
this.appendChild = function (element, element2) {
if (!element2) {
element2 = element.cloneNode( true );
}
this.hudElements[0].appendChild(element);
this.hudElements[1].appendChild(element2);
}
this.setViewport = function ( x, y, width, height, side ) {
if (_viewX[side] != x) {
hudElements[side].style.left = x + 'px';
_viewX[side] = x;
}
if (_viewY[side] != y) {
hudElements[side].style.bottom = y + 'px';
_viewY[side] = y;
}
if (_viewWidth[side] != width) {
hudElements[side].style.width = width + 'px';
_viewWidth[side] = width;
}
if (_viewHeight[side] != height) {
hudElements[side].style.height = height + 'px';
_viewHeight[side] = height;
}
}
this.showViewport = function (side) {
if (!_visible[side]) {
hudElements[side].style.display = 'inline-block';
_visible[side] = true;
}
}
this.hideViewport = function (side) {
if (_visible[side]) {
hudElements[side].style.display = 'none';
_visible[side] = false;
}
}
this.setSize = function ( width, height ) {
// size of overall DOM
if (_viewPortWidth != width) {
domElement.style.width = width + 'px';
_viewPortWidth = width;
}
if (_viewPortHeight != height) {
domElement.style.height = height + 'px';
_viewPortHeight = height;
}
/*
* do not reset the subviews.
*/
// default viewports for left and right eyes.
//hudElements[0].style.display = 'none';
//hudElements[1].style.display = 'none';
};
this.render = function ( side ) {
if (!_visible[side]) {
hudElements[side].style.display = 'inline-block';
_visible[side] = true;
}
// the only way I can think to actually hide the
// second eye when not in stereo mode
if (side == 0 && _viewPortWidth == _viewWidth[0]) {
this.hideViewport(1);
}
};
};