-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathvrml.min.js
More file actions
96 lines (96 loc) · 46.6 KB
/
vrml.min.js
File metadata and controls
96 lines (96 loc) · 46.6 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
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
var $jscomp={scope:{},checkStringArgs:function(a,e,c){if(null==a)throw new TypeError("The 'this' value for String.prototype."+c+" must not be null or undefined");if(e instanceof RegExp)throw new TypeError("First argument to String.prototype."+c+" must not be a regular expression");return a+""}};
$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,e,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[e]=c.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(a,e,c,h){if(e){c=$jscomp.global;a=a.split(".");for(h=0;h<a.length-1;h++){var k=a[h];k in c||(c[k]={});c=c[k]}a=a[a.length-1];h=c[a];e=e(h);e!=h&&null!=e&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:e})}};
$jscomp.polyfill("String.prototype.repeat",function(a){return a?a:function(a){var e=$jscomp.checkStringArgs(this,null,"repeat");if(0>a||1342177279<a)throw new RangeError("Invalid count value");a|=0;for(var h="";a;)if(a&1&&(h+=e),a>>>=1)e+=e;return h}},"es6-impl","es3");
$jscomp.polyfill("Array.prototype.fill",function(a){return a?a:function(a,c,h){var e=this.length||0;0>c&&(c=Math.max(0,e+c));if(null==h||h>e)h=e;h=Number(h);0>h&&(h=Math.max(0,e+h));for(c=Number(c||0);c<h;c++)this[c]=a;return this}},"es6-impl","es3");
vrmlParser=function(){function a(e,c,h,k){this.message=e;this.expected=c;this.found=h;this.location=k;this.name="SyntaxError";"function"===typeof Error.captureStackTrace&&Error.captureStackTrace(this,a)}(function(a,c){function e(){this.constructor=a}e.prototype=c.prototype;a.prototype=new e})(a,Error);return{SyntaxError:a,parse:function(e){function c(b){var f=T[b],a,d;if(!f){for(a=b-1;!T[a];)a--;f=T[a];for(f={line:f.line,column:f.column,seenCR:f.seenCR};a<b;)d=e.charAt(a),"\n"===d?(f.seenCR||f.line++,
f.column=1,f.seenCR=!1):"\r"===d||"\u2028"===d||"\u2029"===d?(f.line++,f.column=1,f.seenCR=!0):(f.column++,f.seenCR=!1),a++;T[b]=f}return f}function h(b,a){var f=c(b),d=c(a);return{start:{offset:b,line:f.line,column:f.column},end:{offset:a,line:d.line,column:d.column}}}function k(b){d<H||(d>H&&(H=d,ca=[]),ca.push(b))}function m(){var f,a,g;f=d;e.substr(d,15)===ga?(a=ga,d+=15):(a=b,0===p&&k(Pa));if(a!==b){a=[];g=v();g===b&&(g=t(),g===b&&(g=B(),g===b&&(g=z(),g===b&&(g=x()))));for(;g!==b;)a.push(g),
g=v(),g===b&&(g=t(),g===b&&(g=B(),g===b&&(g=z(),g===b&&(g=x()))));a!==b?(A=f,a.nodeDefinitions=U,a.routes=M,f=a):(d=f,f=b)}else d=f,f=b;return f}function v(){var f,a,g,D;a=f=d;g=ha();g!==b?(g=u(),g!==b?(g=l(),g!==b?(D=u(),D!==b?(A=a,a=g):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);if(a!==b)if(e.substr(d,23)===ia?(g=ia,d+=23):(g=b,0===p&&k(Qa)),g!==b)if(g=E(),g!==b){g=[];D=y();D===b&&(D=r());if(D!==b)for(;D!==b;)g.push(D),D=y(),D===b&&(D=r());else g=b;if(g!==b)if(D=ja(),D!==b){A=f;f=a;a=g;g={name:f,
node:"OrientationInterpolator",isDefinition:!0};for(D=0;D<a.length;D++)g[a[D].name]=a[D].value;U[f]=g;g.type="OrientationInterpolator";f=g}else d=f,f=b;else d=f,f=b}else d=f,f=b;else d=f,f=b;else d=f,f=b;return f}function y(){var f,a,g,D,c,h;f=d;a=u();a===b&&(a=null);if(a!==b)if(e.substr(d,8)===ka?(a=ka,d+=8):(a=b,0===p&&k(Ra)),a!==b)if(a=I(),a!==b){g=d;D=[];a=d;c=C();c!==b?(h=G(),h!==b?(h=z(),h===b&&(h=null),h!==b?(A=a,a=c):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);for(;a!==b;)D.push(a),a=d,c=C(),c!==b?(h=
G(),h!==b?(h=z(),h===b&&(h=null),h!==b?(A=a,a=c):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);D!==b?(a=C(),a===b&&(a=null),a!==b?(c=z(),c===b&&(c=null),c!==b?(A=g,g=D,a&&g.push(a)):(d=g,g=b)):(d=g,g=b)):(d=g,g=b);g!==b?(D=Q(),D!==b?(A=f,f=a={name:"keyValue",value:g,type:"KeyValueForOrientationInterpolator"}):(d=f,f=b)):(d=f,f=b)}else d=f,f=b;else d=f,f=b;else d=f,f=b;return f}function t(){var f,a,g;f=d;a=u();a!==b?(a=ha(),a!==b?(a=u(),a!==b?(a=l(),a!==b?(g=u(),g!==b?(g=B(),g!==b?(A=f,g.name=a,g.isDefinition=!0,
U[a]=g,g.type="nodeDefinition",f=g):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b);return f}function B(){var f,a,g,e;f=d;a=u();if(a!==b)if(g=l(),g!==b)if(a=E(),a!==b){a=[];e=t();e===b&&(e=x(),e===b&&(e=r(),e===b&&(e=B(),e===b&&(e=z()))));for(;e!==b;)a.push(e),e=t(),e===b&&(e=x(),e===b&&(e=r(),e===b&&(e=B(),e===b&&(e=z()))));if(a!==b)if(e=ja(),e!==b)for(A=f,f={node:g},g=0;g<a.length;g++)e=a[g],void 0!==e.node?"Switch"===f.node?(void 0===f.choice&&(f.choice=[]),f.choice.push(e)):(void 0===
f.children&&(f.children=[]),f.children.push(e)):void 0!==e.name?(f[e.name]=e.value,void 0!==e.comment&&(void 0===f.comments&&(f.comments={}),void 0===f.comments[e.name]&&(f.comments[e.name]=[]),f.comments[e.name].push(e.comment))):void 0!==e.src?M.push(e):(void 0===f.nodeComments&&(f.nodeComments=[]),f.nodeComments.push(e));else d=f,f=b;else d=f,f=b}else d=f,f=b;else d=f,f=b;else d=f,f=b;return f}function r(){var f,a,g;f=d;a=u();a===b&&(a=null);a!==b?(e.substr(d,11)===la?(a=la,d+=11):(a=b,0===p&&
k(Sa)),a===b&&(e.substr(d,8)===ma?(a=ma,d+=8):(a=b,0===p&&k(Ta)),a===b&&(e.substr(d,16)===na?(a=na,d+=16):(a=b,0===p&&k(Ua)))),a!==b?(g=C(),g!==b?(A=f,f=a={name:a,value:g}):(d=f,f=b)):(d=f,f=b)):(d=f,f=b);if(f===b){var c;f=d;e.substr(d,10)===oa?(a=oa,d+=10):(a=b,0===p&&k(Va));if(a!==b)if(a=u(),a===b&&(a=null),a!==b)if(a=I(),a!==b)if(a=z(),a===b&&(a=null),a!==b)if(a=u(),a===b&&(a=null),a!==b){a=[];g=da();if(g!==b)for(;g!==b;)a.push(g),g=da();else a=b;if(a!==b){var h;g=d;c=[];h=V();if(h!==b)for(;h!==
b;)c.push(h),h=V();else c=b;c!==b?(h=u(),h!==b?(44===e.charCodeAt(d)?(h=R,d++):(h=b,0===p&&k(S)),h===b&&(h=null),h!==b?(h=u(),h!==b?(A=g,g=c):(d=g,g=b)):(d=g,g=b)):(d=g,g=b)):(d=g,g=b);g===b&&(g=null);g!==b?(c=u(),c===b&&(c=null),c!==b?(c=z(),c===b&&(c=null),c!==b?(c=Q(),c!==b?(c=u(),c===b&&(c=null),c!==b?(A=f,f=a,null!==g&&f.push(g),f=a={name:"coordIndex",value:f}):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)}else d=f,f=b}else d=f,f=b;else d=f,f=b;else d=f,f=b;else d=f,f=b;else d=f,f=b;
f===b&&(f=n(),f===b&&(f=d,a=u(),a===b&&(a=null),a!==b?(a=l(),a!==b?(g=u(),g!==b?(g=F(),g!==b?(c=u(),c!==b?(c=z(),c===b&&(c=null),c!==b?(A=f,f={name:a,value:g},null!==c&&(f.comment=c)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)))}return f}function C(){var f,a,g,c,h,r;f=d;a=u();a===b&&(a=null);if(a!==b)if(a=q(),a!==b){g=[];32===e.charCodeAt(d)?(c=K,d++):(c=b,0===p&&k(L));if(c!==b)for(;c!==b;)g.push(c),32===e.charCodeAt(d)?(c=K,d++):(c=b,0===p&&k(L));else g=b;if(g!==b)if(c=q(),
c!==b){h=[];32===e.charCodeAt(d)?(g=K,d++):(g=b,0===p&&k(L));if(g!==b)for(;g!==b;)h.push(g),32===e.charCodeAt(d)?(g=K,d++):(g=b,0===p&&k(L));else h=b;if(h!==b)if(g=q(),g!==b){r=[];32===e.charCodeAt(d)?(h=K,d++):(h=b,0===p&&k(L));if(h!==b)for(;h!==b;)r.push(h),32===e.charCodeAt(d)?(h=K,d++):(h=b,0===p&&k(L));else r=b;r!==b?(h=q(),h!==b?(r=u(),r===b&&(r=null),r!==b?(A=f,f=a={x:a,y:c,z:g,radians:h}):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)}else d=f,f=b;else d=f,f=b}else d=f,f=b;else d=f,f=b}else d=f,f=b;else d=
f,f=b;return f}function n(){var f,a,g,c;f=d;e.substr(d,5)===pa?(a=pa,d+=5):(a=b,0===p&&k(Wa));a===b&&(e.substr(d,6)===qa?(a=qa,d+=6):(a=b,0===p&&k(Xa)));if(a!==b)if(g=u(),g===b&&(g=null),g!==b)if(g=I(),g!==b)if(g=z(),g===b&&(g=null),g!==b)if(g=u(),g===b&&(g=null),g!==b){g=[];c=W();if(c!==b)for(;c!==b;)g.push(c),c=W();else g=b;g!==b?(c=z(),c===b&&(c=null),c!==b?(c=Q(),c!==b?(c=u(),c===b&&(c=null),c!==b?(A=f,f=a={name:a,value:g}):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)}else d=f,f=b;else d=f,f=b;
else d=f,f=b;else d=f,f=b;else d=f,f=b;return f}function l(){var f,a,g,c;p++;f=d;Ya.test(e.charAt(d))?(a=e.charAt(d),d++):(a=b,0===p&&k(Za));if(a!==b){g=[];ra.test(e.charAt(d))?(c=e.charAt(d),d++):(c=b,0===p&&k(sa));if(c!==b)for(;c!==b;)g.push(c),ra.test(e.charAt(d))?(c=e.charAt(d),d++):(c=b,0===p&&k(sa));else g=b;g===b&&(g=null);g!==b?(A=f,f=a+=g?g.join("").trim():""):(d=f,f=b)}else d=f,f=b;p--;f===b&&0===p&&k($a);return f}function F(){var f;p++;var a;e.substr(d,5)===ta?(f=ta,d+=5):(f=b,0===p&&k(ab));
f===b&&(f=d,e.substr(d,5)===ua?(a=ua,d+=5):(a=b,0===p&&k(bb)),a!==b&&(A=f,a=!1),f=a);if(f===b&&(f=W(),f===b&&(f=z()),f===b&&(f=v(),f===b&&(f=da(),f===b&&(e.substr(d,4)===va?(f=va,d+=4):(f=b,0===p&&k(cb)),f===b&&(f=d,e.substr(d,4)===wa?(a=wa,d+=4):(a=b,0===p&&k(db)),a!==b&&(A=f,a=null),f=a),f===b&&(e.substr(d,4)===xa?(f=xa,d+=4):(f=b,0===p&&k(eb)),f===b&&(f=d,e.substr(d,4)===ya?(a=ya,d+=4):(a=b,0===p&&k(fb)),a!==b&&(A=f,a=!0),f=a),f===b&&(f=t(),f===b&&(f=B(),f===b&&(f=W(),f===b&&(f=n(),f===b&&(f=za(),
f===b))))))))))){var g,c;f=d;a=u();a!==b?(a=q(),a!==b?(g=u(),g!==b?(g=q(),g!==b?(c=u(),c!==b?(c=z(),c===b&&(c=null),c!==b?(A=f,f=a={x:a,y:g}):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b);if(f===b&&(f=d,a=u(),a!==b?(a=d,e.substr(d,3)===Aa?(g=Aa,d+=3):(g=b,0===p&&k(gb)),g!==b&&(A=a,g=!0),g!==b?(a=u(),a!==b?(a=l(),a!==b?(A=f,f=U[a],void 0===f?(console.log(a+" not found in nodeDefinitions"),a=f):a="function"===typeof f.clone?f.clone():f,f=a):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=
b),f===b)){var h;p++;a=d;f=I();if(f!==b){f=[];g=z();g===b&&(g=x(),g===b&&(g=d,c=F(),c!==b?(h=u(),h!==b?(h=G(),h===b&&(h=null),h!==b?(A=g,g=c):(d=g,g=b)):(d=g,g=b)):(d=g,g=b)));for(;g!==b;)f.push(g),g=z(),g===b&&(g=x(),g===b&&(g=d,c=F(),c!==b?(h=u(),h!==b?(h=G(),h===b&&(h=null),h!==b?(A=g,g=c):(d=g,g=b)):(d=g,g=b)):(d=g,g=b)));if(f!==b)if(g=Q(),g!==b)for(A=a,a=[],g=0;g<f.length;g++)c=f[g],void 0!==c.src?M.push(c):void 0!==c.comment?(void 0===a.comments&&(a.comments=[]),a.comments.push(c)):a.push(c);
else d=a,a=b;else d=a,a=b}else d=a,a=b;p--;a===b&&0===p&&k(hb);f=a;if(f===b&&(f=q(),f===b&&(f=l(),f===b))){f=d;a=u();if(a!==b)if(a=I(),a!==b)if(a=u(),a!==b)if(a=X(),a!==b){a=d;g=[];Y.test(e.charAt(d))?(c=e.charAt(d),d++):(c=b,0===p&&k(Z));for(;c!==b;)g.push(c),Y.test(e.charAt(d))?(c=e.charAt(d),d++):(c=b,0===p&&k(Z));g!==b?(46===e.charCodeAt(d)?(c=ea,d++):(c=b,0===p&&k(fa)),c!==b?(e.substr(d,3)===Ba?(h=Ba,d+=3):(h=b,0===p&&k(ib)),h===b&&(e.substr(d,4)===Ca?(h=Ca,d+=4):(h=b,0===p&&k(jb)),h===b&&(e.substr(d,
3)===Da?(h=Da,d+=3):(h=b,0===p&&k(kb)),h===b&&(e.substr(d,3)===Ea?(h=Ea,d+=3):(h=b,0===p&&k(lb))))),h!==b?(A=a,a=g+c+h):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);a!==b?(g=X(),g!==b?(g=u(),g!==b?(g=Q(),g!==b?(g=u(),g!==b?(A=f,f=a):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)}else d=f,f=b;else d=f,f=b;else d=f,f=b;else d=f,f=b;if(f===b)if(f=d,a=u(),a!==b)if(a=X(),a!==b){a=[];Y.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&k(Z));for(;g!==b;)a.push(g),Y.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===
p&&k(Z));a!==b?(g=X(),g!==b?(g=u(),g!==b?(A=f,f=a=a.join("")):(d=f,f=b)):(d=f,f=b)):(d=f,f=b)}else d=f,f=b;else d=f,f=b}}}p--;f===b&&0===p&&k(mb);return f}function q(){var a,c,g,h;p++;a=d;c=J();c===b&&(c=null);if(c!==b)if(c=d,g=N(),g!==b?(h=w(),h===b&&(h=null),h!==b?c=g=[g,h]:(d=c,c=b)):(d=c,c=b),c===b&&(c=w()),c!==b){var r,l;c=d;nb.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&k(ob));if(g!==b)if(h=J(),h===b&&(43===e.charCodeAt(d)?(h=pb,d++):(h=b,0===p&&k(qb))),h===b&&(h=null),h!==b){r=[];l=O();
if(l!==b)for(;l!==b;)r.push(l),l=O();else r=b;r!==b?c=g=[g,h,r]:(d=c,c=b)}else d=c,c=b;else d=c,c=b;g=c;g===b&&(g=null);g!==b?(A=a,a=c=parseFloat(e.substring(A,d))):(d=a,a=b)}else d=a,a=b;else d=a,a=b;p--;a===b&&0===p&&k(rb);return a}function w(){var a,c,g,h;a=d;46===e.charCodeAt(d)?(c=ea,d++):(c=b,0===p&&k(fa));if(c!==b){g=[];for(h=O();h!==b;)g.push(h),h=O();g!==b?a=c=[c,g]:(d=a,a=b)}else d=a,a=b;return a}function N(){var a,c,g;a=d;48===e.charCodeAt(d)?(c=sb,d++):(c=b,0===p&&k(tb));c===b&&(ub.test(e.charAt(d))?
(c=e.charAt(d),d++):(c=b,0===p&&k(vb)));if(c!==b){var h,r;g=d;h=[];for(r=O();r!==b;)h.push(r),r=O();h!==b&&(A=g,h=h.join(""));g=h;g!==b?(A=a,a=c+g):(d=a,a=b)}else d=a,a=b;return a}function J(){var a;45===e.charCodeAt(d)?(a=wb,d++):(a=b,0===p&&k(xb));return a}function z(){var a,c,g;a=d;c=u();if(c!==b)if(35===e.charCodeAt(d)?(c=yb,d++):(c=b,0===p&&k(zb)),c!==b){c=[];Fa.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&k(Ga));for(;g!==b;)c.push(g),Fa.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&
k(Ga));c!==b?(g=u(),g!==b?(A=a,a=c={comment:c.join("").trim()}):(d=a,a=b)):(d=a,a=b)}else d=a,a=b;else d=a,a=b;return a}function x(){var a,c,g,h;a=d;c=u();c!==b?(e.substr(d,5)===Ha?(c=Ha,d+=5):(c=b,0===p&&k(Ab)),c!==b?(c=u(),c!==b?(c=P(),c!==b?(g=u(),g!==b?(e.substr(d,2)===Ia?(g=Ia,d+=2):(g=b,0===p&&k(Bb)),g!==b?(g=u(),g!==b?(g=P(),g!==b?(h=u(),h!==b?(A=a,a=c.name,c={source:c,target:g},"undefined"===typeof M[a]&&(M[a]=[]),M[a].push(c),a=c):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=
a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function P(){var a,c,g;a=d;c=l();c!==b?(46===e.charCodeAt(d)?(g=ea,d++):(g=b,0===p&&k(fa)),g!==b?(g=l(),g!==b?(A=a,a=c={name:c,property:g}):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function I(){var a,c,g,h;a=d;c=u();c===b&&(c=null);c!==b?(91===e.charCodeAt(d)?(g=Cb,d++):(g=b,0===p&&k(Db)),g!==b?(h=u(),h===b&&(h=null),h!==b?a=c=[c,g,h]:(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function Q(){var a,c,g,h;a=d;c=u();c===b&&(c=null);c!==b?(93===e.charCodeAt(d)?
(g=Eb,d++):(g=b,0===p&&k(Fb)),g!==b?(h=u(),h===b&&(h=null),h!==b?a=c=[c,g,h]:(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function E(){var a,c,g,h;a=d;c=u();c===b&&(c=null);c!==b?(123===e.charCodeAt(d)?(g=Gb,d++):(g=b,0===p&&k(Hb)),g!==b?(h=u(),h===b&&(h=null),h!==b?a=c=[c,g,h]:(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function ja(){var a,c,g,h;a=d;c=u();c===b&&(c=null);c!==b?(125===e.charCodeAt(d)?(g=Ib,d++):(g=b,0===p&&k(Jb)),g!==b?(h=u(),h===b&&(h=null),h!==b?a=c=[c,g,h]:(d=a,a=b)):(d=a,a=b)):(d=a,
a=b);return a}function G(){var a,c,g,h;a=d;c=u();c===b&&(c=null);c!==b?(44===e.charCodeAt(d)?(g=R,d++):(g=b,0===p&&k(S)),g!==b?(h=u(),h===b&&(h=null),h!==b?a=c=[c,g,h]:(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function u(){var a,c,g;p++;a=d;c=[];Ja.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&k(Ka));for(;g!==b;)c.push(g),Ja.test(e.charAt(d))?(g=e.charAt(d),d++):(g=b,0===p&&k(Ka));c!==b&&(A=a,c=c.join(""));a=c;p--;a===b&&0===p&&k(Kb);return a}function W(){var a,c,g;a=d;c=za();c!==b?(44===e.charCodeAt(d)?
(g=R,d++):(g=b,0===p&&k(S)),g===b&&(g=null),g!==b?(g=u(),g!==b?(g=z(),g===b&&(g=null),g!==b?(A=a,a=c):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function za(){var a,c,g,e,h;a=d;c=u();c===b&&(c=null);c!==b?(c=q(),c!==b?(g=u(),g!==b?(g=q(),g!==b?(e=u(),e!==b?(e=q(),e!==b?(h=u(),h!==b?(h=z(),h===b&&(h=null),h!==b?(A=a,a=c={x:c,y:g,z:e}):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function ha(){var a,c;a=d;c=u();c===b&&(c=null);c!==b?(e.substr(d,
3)===La?(c=La,d+=3):(c=b,0===p&&k(Lb)),c!==b?(c=u(),c===b&&(c=null),c!==b?(A=a,a=!0):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function da(){var a,c,g;a=d;c=[];g=V();if(g!==b)for(;g!==b;)c.push(g),g=V();else c=b;c!==b?(e.substr(d,2)===Ma?(g=Ma,d+=2):(g=b,0===p&&k(Mb)),g!==b?(g=u(),g!==b?(44===e.charCodeAt(d)?(g=R,d++):(g=b,0===p&&k(S)),g===b&&(g=null),g!==b?(g=u(),g!==b?(A=a,a=c):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b)):(d=a,a=b);return a}function V(){var a,c,g,h,r,l;a=d;c=N();if(c!==b){g=d;h=u();
h===b&&(h=null);h!==b?(44===e.charCodeAt(d)?(r=R,d++):(r=b,0===p&&k(S)),r===b&&(r=null),r!==b?(32===e.charCodeAt(d)?(l=K,d++):(l=b,0===p&&k(L)),l===b&&(l=null),l!==b?g=h=[h,r,l]:(d=g,g=b)):(d=g,g=b)):(d=g,g=b);if(g===b)if(g=[],32===e.charCodeAt(d)?(h=K,d++):(h=b,0===p&&k(L)),h!==b)for(;h!==b;)g.push(h),32===e.charCodeAt(d)?(h=K,d++):(h=b,0===p&&k(L));else g=b;g!==b?(A=a,a=c):(d=a,a=b)}else d=a,a=b;return a}function X(){var a;34===e.charCodeAt(d)?(a=Nb,d++):(a=b,0===p&&k(Ob));return a}function O(){var a;
Pb.test(e.charAt(d))?(a=e.charAt(d),d++):(a=b,0===p&&k(Qb));return a}var aa=1<arguments.length?arguments[1]:{},b={},Na={vrml:m},Oa=m,ga="#VRML V2.0 utf8",Pa={type:"literal",value:"#VRML V2.0 utf8",description:'"#VRML V2.0 utf8"'},ia="OrientationInterpolator",Qa={type:"literal",value:"OrientationInterpolator",description:'"OrientationInterpolator"'},ka="keyValue",Ra={type:"literal",value:"keyValue",description:'"keyValue"'},la="orientation",Sa={type:"literal",value:"orientation",description:'"orientation"'},
ma="rotation",Ta={type:"literal",value:"rotation",description:'"rotation"'},na="scaleOrientation",Ua={type:"literal",value:"scaleOrientation",description:'"scaleOrientation"'},K=" ",L={type:"literal",value:" ",description:'" "'},oa="coordIndex",Va={type:"literal",value:"coordIndex",description:'"coordIndex"'},pa="point",Wa={type:"literal",value:"point",description:'"point"'},qa="vector",Xa={type:"literal",value:"vector",description:'"vector"'},$a={type:"other",description:"identifier"},Ya=/^[^0-9\-+ '"#,.[\]{}\r\n\t]/,
Za={type:"class",value:"[^0-9\\-\\+ '\"#\\,\\.\\[\\]\\{\\}\\r\\n\\t]",description:"[^0-9\\-\\+ '\"#\\,\\.\\[\\]\\{\\}\\r\\n\\t]"},ra=/^[^ '"#,.[\]{}\r\n\t]/,sa={type:"class",value:"[^ '\"#\\,\\.\\[\\]\\{\\}\\r\\n\\t]",description:"[^ '\"#\\,\\.\\[\\]\\{\\}\\r\\n\\t]"},hb={type:"other",description:"array"},mb={type:"other",description:"value"},ta="false",ab={type:"literal",value:"false",description:'"false"'},ua="FALSE",bb={type:"literal",value:"FALSE",description:'"FALSE"'},va="null",cb={type:"literal",
value:"null",description:'"null"'},wa="NULL",db={type:"literal",value:"NULL",description:'"NULL"'},xa="true",eb={type:"literal",value:"true",description:'"true"'},ya="TRUE",fb={type:"literal",value:"TRUE",description:'"TRUE"'},rb={type:"other",description:"number"},ea=".",fa={type:"literal",value:".",description:'"."'},ub=/^[1-9]/,vb={type:"class",value:"[1-9]",description:"[1-9]"},nb=/^[eE]/,ob={type:"class",value:"[eE]",description:"[eE]"},wb="-",xb={type:"literal",value:"-",description:'"-"'},
pb="+",qb={type:"literal",value:"+",description:'"+"'},sb="0",tb={type:"literal",value:"0",description:'"0"'},yb="#",zb={type:"literal",value:"#",description:'"#"'},Fa=/^[^\n]/,Ga={type:"class",value:"[^\\n]",description:"[^\\n]"},Ha="ROUTE",Ab={type:"literal",value:"ROUTE",description:'"ROUTE"'},Ia="TO",Bb={type:"literal",value:"TO",description:'"TO"'},Cb="[",Db={type:"literal",value:"[",description:'"["'},Eb="]",Fb={type:"literal",value:"]",description:'"]"'},Gb="{",Hb={type:"literal",value:"{",
description:'"{"'},Ib="}",Jb={type:"literal",value:"}",description:'"}"'},R=",",S={type:"literal",value:",",description:'","'},Kb={type:"other",description:"whitespace"},Ja=/^[ \t\n\r]/,Ka={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},La="DEF",Lb={type:"literal",value:"DEF",description:'"DEF"'},Aa="USE",gb={type:"literal",value:"USE",description:'"USE"'},Ma="-1",Mb={type:"literal",value:"-1",description:'"-1"'},Y=/^[^"]/,Z={type:"class",value:'[^"]',description:'[^"]'},Ba="jpg",ib=
{type:"literal",value:"jpg",description:'"jpg"'},Ca="jpeg",jb={type:"literal",value:"jpeg",description:'"jpeg"'},Da="gif",kb={type:"literal",value:"gif",description:'"gif"'},Ea="wrl",lb={type:"literal",value:"wrl",description:'"wrl"'},Nb='"',Ob={type:"literal",value:'"',description:'"\\""'},Pb=/^[0-9]/,Qb={type:"class",value:"[0-9]",description:"[0-9]"},d=0,A=0,T=[{line:1,column:1,seenCR:!1}],H=0,ca=[],p=0,ba;if("startRule"in aa){if(!(aa.startRule in Na))throw Error("Can't start parsing from rule \""+
aa.startRule+'".');Oa=Na[aa.startRule]}var U={},M={};ba=Oa();if(ba!==b&&d===e.length)return ba;ba!==b&&d<e.length&&k({type:"end",description:"end of input"});throw function(b,c,d,e){function f(a){var b=1;for(a.sort(function(a,b){return a.description<b.description?-1:a.description>b.description?1:0});b<a.length;)a[b-1]===a[b]?a.splice(b,1):b++}function g(a,b){function c(a){function b(a){return a.charCodeAt(0).toString(16).toUpperCase()}return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,
"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(a){return"\\x0"+b(a)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(a){return"\\x"+b(a)}).replace(/[\u0100-\u0FFF]/g,function(a){return"\\u0"+b(a)}).replace(/[\u1000-\uFFFF]/g,function(a){return"\\u"+b(a)})}var d=Array(a.length),f;for(f=0;f<a.length;f++)d[f]=a[f].description;d=1<a.length?d.slice(0,-1).join(", ")+" or "+d[a.length-1]:d[0];f=b?'"'+c(b)+'"':"end of input";
return"Expected "+d+" but "+f+" found."}null!==c&&f(c);return new a(null!==b?b:g(c,d),c,d,e)}(null,ca,H<e.length?e.charAt(H):null,H<e.length?h(H,H+1):h(H,H));}}}();var TWEEN=TWEEN||function(){var a=[];return{getAll:function(){return a},removeAll:function(){a=[]},add:function(e){a.push(e)},remove:function(e){e=a.indexOf(e);-1!==e&&a.splice(e,1)},update:function(e,c){if(0===a.length)return!1;var h=0;for(e=void 0!==e?e:TWEEN.now();h<a.length;)a[h].update(e)||c?h++:a.splice(h,1);return!0}}}();
TWEEN.now="undefined"===typeof window&&"undefined"!==typeof process?function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:"undefined"!==typeof window&&void 0!==window.performance&&void 0!==window.performance.now?window.performance.now.bind(window.performance):void 0!==Date.now?Date.now:function(){return(new Date).getTime()};
TWEEN.Tween=function(a){var e={},c={},h={},k=1E3,m=0,v,y=!1,t=!1,B=0,r=null,C=TWEEN.Easing.Linear.None,n=TWEEN.Interpolation.Linear,l=[],F=null,q=!1,w=null,N=null,J=null;this.to=function(a,e){c=a;void 0!==e&&(k=e);return this};this.start=function(k){TWEEN.add(this);t=!0;q=!1;r=void 0!==k?k:TWEEN.now();r+=B;for(var l in c){if(c[l]instanceof Array){if(0===c[l].length)continue;c[l]=[a[l]].concat(c[l])}void 0!==a[l]&&(e[l]=a[l],!1===e[l]instanceof Array&&(e[l]*=1),h[l]=e[l]||0)}return this};this.stop=
function(){if(!t)return this;TWEEN.remove(this);t=!1;null!==J&&J.call(a,a);this.stopChainedTweens();return this};this.end=function(){this.update(r+k);return this};this.stopChainedTweens=function(){for(var a=0,c=l.length;a<c;a++)l[a].stop()};this.delay=function(a){B=a;return this};this.repeat=function(a){m=a;return this};this.repeatDelay=function(a){v=a;return this};this.yoyo=function(a){y=a;return this};this.easing=function(a){C=a;return this};this.interpolation=function(a){n=a;return this};this.chain=
function(){l=arguments;return this};this.onStart=function(a){F=a;return this};this.onUpdate=function(a){w=a;return this};this.onComplete=function(a){N=a;return this};this.onStop=function(a){J=a;return this};this.update=function(z){var x,t,I;if(z<r)return!0;!1===q&&(null!==F&&F.call(a,a),q=!0);t=(z-r)/k;t=1<t?1:t;I=C(t);for(x in c)if(void 0!==e[x]){var J=e[x]||0,E=c[x];E instanceof Array?a[x]=n(E,I):("string"===typeof E&&(E="+"===E.charAt(0)||"-"===E.charAt(0)?J+parseFloat(E):parseFloat(E)),"number"===
typeof E&&(a[x]=J+(E-J)*I))}null!==w&&w.call(a,I);if(1===t)if(0<m){isFinite(m)&&m--;for(x in h)"string"===typeof c[x]&&(h[x]+=parseFloat(c[x])),y&&(t=h[x],h[x]=c[x],c[x]=t),e[x]=h[x];r=void 0!==v?z+v:z+B}else{null!==N&&N.call(a,a);z=0;for(x=l.length;z<x;z++)l[z].start(r+k);return!1}return!0}};
TWEEN.Easing={Linear:{None:function(a){return a}},Quadratic:{In:function(a){return a*a},Out:function(a){return a*(2-a)},InOut:function(a){return 1>(a*=2)?.5*a*a:-.5*(--a*(a-2)-1)}},Cubic:{In:function(a){return a*a*a},Out:function(a){return--a*a*a+1},InOut:function(a){return 1>(a*=2)?.5*a*a*a:.5*((a-=2)*a*a+2)}},Quartic:{In:function(a){return a*a*a*a},Out:function(a){return 1- --a*a*a*a},InOut:function(a){return 1>(a*=2)?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)}},Quintic:{In:function(a){return a*a*a*a*a},Out:function(a){return--a*
a*a*a*a+1},InOut:function(a){return 1>(a*=2)?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)}},Sinusoidal:{In:function(a){return 1-Math.cos(a*Math.PI/2)},Out:function(a){return Math.sin(a*Math.PI/2)},InOut:function(a){return.5*(1-Math.cos(Math.PI*a))}},Exponential:{In:function(a){return 0===a?0:Math.pow(1024,a-1)},Out:function(a){return 1===a?1:1-Math.pow(2,-10*a)},InOut:function(a){return 0===a?0:1===a?1:1>(a*=2)?.5*Math.pow(1024,a-1):.5*(-Math.pow(2,-10*(a-1))+2)}},Circular:{In:function(a){return 1-Math.sqrt(1-
a*a)},Out:function(a){return Math.sqrt(1- --a*a)},InOut:function(a){return 1>(a*=2)?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)}},Elastic:{In:function(a){return 0===a?0:1===a?1:-Math.pow(2,10*(a-1))*Math.sin(5*(a-1.1)*Math.PI)},Out:function(a){return 0===a?0:1===a?1:Math.pow(2,-10*a)*Math.sin(5*(a-.1)*Math.PI)+1},InOut:function(a){if(0===a)return 0;if(1===a)return 1;a*=2;return 1>a?-.5*Math.pow(2,10*(a-1))*Math.sin(5*(a-1.1)*Math.PI):.5*Math.pow(2,-10*(a-1))*Math.sin(5*(a-1.1)*Math.PI)+
1}},Back:{In:function(a){return a*a*(2.70158*a-1.70158)},Out:function(a){return--a*a*(2.70158*a+1.70158)+1},InOut:function(a){return 1>(a*=2)?.5*a*a*(3.5949095*a-2.5949095):.5*((a-=2)*a*(3.5949095*a+2.5949095)+2)}},Bounce:{In:function(a){return 1-TWEEN.Easing.Bounce.Out(1-a)},Out:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},InOut:function(a){return.5>a?.5*TWEEN.Easing.Bounce.In(2*a):.5*TWEEN.Easing.Bounce.Out(2*
a-1)+.5}}};
TWEEN.Interpolation={Linear:function(a,e){var c=a.length-1,h=c*e,k=Math.floor(h),m=TWEEN.Interpolation.Utils.Linear;return 0>e?m(a[0],a[1],h):1<e?m(a[c],a[c-1],c-h):m(a[k],a[k+1>c?c:k+1],h-k)},Bezier:function(a,e){for(var c=0,h=a.length-1,k=Math.pow,m=TWEEN.Interpolation.Utils.Bernstein,v=0;v<=h;v++)c+=k(1-e,h-v)*k(e,v)*a[v]*m(h,v);return c},CatmullRom:function(a,e){var c=a.length-1,h=c*e,k=Math.floor(h),m=TWEEN.Interpolation.Utils.CatmullRom;return a[0]===a[c]?(0>e&&(k=Math.floor(h=c*(1+e))),m(a[(k-
1+c)%c],a[k],a[(k+1)%c],a[(k+2)%c],h-k)):0>e?a[0]-(m(a[0],a[0],a[1],a[1],-h)-a[0]):1<e?a[c]-(m(a[c],a[c],a[c-1],a[c-1],h-c)-a[c]):m(a[k?k-1:0],a[k],a[c<k+1?c:k+1],a[c<k+2?c:k+2],h-k)},Utils:{Linear:function(a,e,c){return(e-a)*c+a},Bernstein:function(a,e){var c=TWEEN.Interpolation.Utils.Factorial;return c(a)/c(e)/c(a-e)},Factorial:function(){var a=[1];return function(e){var c=1;if(a[e])return a[e];for(var h=e;1<h;h--)c*=h;return a[e]=c}}(),CatmullRom:function(a,e,c,h,k){a=.5*(c-a);h=.5*(h-e);var m=
k*k;return(2*e-2*c+a+h)*k*m+(-3*e+3*c-2*a-h)*m+a*k+e}}};(function(a){"function"===typeof define&&define.amd?define([],function(){return TWEEN}):"undefined"!==typeof module&&"object"===typeof exports?module.exports=TWEEN:void 0!==a&&(a.TWEEN=TWEEN)})(this);/*
Bart McLeod 2016, mcleod@spaceweb.nl
@author Bart McLeod / http://spaceweb.nl/
*/
window.VrmlParser={};VrmlParser.Renderer={};VrmlParser.Renderer.ThreeJs=function(a){this.debug=a?!0:!1};
VrmlParser.Renderer.ThreeJs.prototype={viewpoints:{},debug:!1,REVISION:1,constructor:VrmlParser.Renderer.ThreeJs,log:function(){this.debug&&console.log.apply(console,arguments)},warn:function(){console.warn.apply(console,arguments)},error:function(){console.error.apply(console,arguments)},render:function(a,e,c){var h=this;console.log("VrmlParser.Renderer.ThreeJsRenderer "+this.REVISION);for(var k=function(a){return{r:a.x,g:a.y,b:a.z}},m=function(a,c,e,h,m){var r,l,n;r=m?1:-1;for(var v=["a","b","c",
"d"],t=[],x,F,C,y=0;y<e.length;y++){var E={};E.y=r*Math.cos(e[y])*c;E.x=r*Math.sin(e[y])*c;t.push(E)}for(y=0;y<a.faces.length;y++)for(e=a.faces[y],r=e instanceof THREE.Face3?3:4,E=0;E<r;E++){l=e[v[E]];l=a.vertices[l];for(var B=0;B<h.length;B++)if(F=0===B?m?c:-1*c:t[B-1].y,C=t[B],void 0!==C){if(n=m?l.y<=F&&l.y>C.y:l.y>=F&&l.y<C.y){x=h[B+1];n=h[B];F=Math.abs(l.y-F)/(F-C.y);var G=x;x=F;n=k(n);G=k(G);F=n.r-G.r;C=n.g-G.g;var G=n.b-G.b,u=new THREE.Color;u.r=n.r-x*F;u.g=n.g-x*C;u.b=n.b-x*G;n=u;e.vertexColors[E]=
n}}else void 0===e.vertexColors[E]&&(n=m?h.length-1:0,e.vertexColors[E]=k(h[n]))}},v=function(a){return"undefined"!==typeof this[a]&&null!==this[a]},y=function(a,t){if(void 0===a.node)return!1;var n=new VrmlParser.Renderer.ThreeJs.SmoothEdges(h.debug);a.has=v;var l=new THREE.Object3D,r=!1;switch(a.node){case "Inline":l=!1;(new VrmlParser.Renderer.ThreeJs.VrmlNode.Inline(a,h.debug)).parse(e,h);break;case "Text":l=new VrmlParser.Renderer.ThreeJs.VrmlNode.Text(a,h.debug);l.setMaterial(t);l=l.parse();
break;case "PointLight":l=(new VrmlParser.Renderer.ThreeJs.VrmlNode.PointLight(a,h.debug)).parse();break;case "DirectionalLight":l=!1;(new VrmlParser.Renderer.ThreeJs.VrmlNode.DirectionalLight(a,h.debug)).parse(e,camera);break;case "NavigationInfo":l=!1;(new VrmlParser.Renderer.ThreeJs.VrmlNode.NavigationInfo(a,h.debug)).parse(e,camera,c);break;case "Viewpoint":l=!1;n=a.name?a.name:a.description;h.log("Got a Viewpoint named "+n);var q=new VrmlParser.Renderer.ThreeJs.VrmlNode.Viewpoint(a,h.debug);
h.viewpoints[n]=q.parse(e);break;case "OrientationInterpolator":case "PositionInterpolator":break;case "Switch":l=0<=a.whichChoice&&a.whichChoice<a.choice.length?y(a.choice[a.whichChoice]):!1;break;case "Group":case "Transform":l=new THREE.Group;if(a.has("children"))if(a.children.has=v,a.children.has("node"))r=y(a.children),!1!==r&&l.add(r);else if(a.children.has("length"))for(q=0;q<a.children.length;q++)r=a.children[q],r.has=v,r=y(r),!1!==r&&l.add(r);n={x:0,y:0,z:0};a.has("translation")&&(n=a.translation,
l.position.set(n.x,n.y,n.z));q={x:0,y:0,z:0,radians:0};a.has("rotation")&&(q=a.rotation);if(a.has("scale")){var w=a.scale;l.scale.set(w.x,w.y,w.z)}r=new THREE.Group;a.has("center")||(a.center={x:0,y:0,z:0});w=a.center;r.position.set(n.x+w.x,n.y+w.y,n.z+w.z);l.position.set(0-w.x,0-w.y,0-w.z);r.quaternion.setFromAxisAngle((new THREE.Vector3(q.x,q.y,q.z)).normalize(),q.radians);r.add(l);break;case "Shape":var l=a.has("geometry")&&"IndexedLineSet"===a.geometry.node,B=a.has("geometry")&&"PointSet"===a.geometry.node,
C;a.has("geometry")&&(C=y(a.geometry,t));if(a.has("appearance")){n=a.appearance;n.has=v;if(n.has("material"))if(q=n.material,q.has=v,l)t=new THREE.LineBasicMaterial,q.has("color")&&(w=k(q.color),t.color.setRGB(w.r,w.g,w.b),t.shininess=0);else if(B)q.has("diffuseColor")&&(w=k(q.diffuseColor)),q.has("emissiveColor")&&(w=k(q.emissiveColor)),void 0!==w&&(t=new THREE.ShaderMaterial({vertexShader:"void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\tgl_PointSize = 3.0;\n}",
fragmentShader:"void main() {\n\tgl_FragColor = vec4( "+w.r+", "+w.g+", "+w.b+", 1.0 );\n}"}));else if(t=!q.has("specularColor")||0==q.specularColor.x&&0==q.specularColor.y&&0==q.specularColor.z?new THREE.MeshLambertMaterial:new THREE.MeshPhongMaterial,q.has("diffuseColor")&&(w=k(q.diffuseColor),t.color.setRGB(w.r,w.g,w.b)),q.has("emissiveColor")&&(w=k(q.emissiveColor),t.emissive.setRGB(w.r,w.g,w.b)),q.has("specularColor")&&void 0!==t.specular&&(w=k(q.specularColor),t.specular.setRGB(w.r,w.g,w.b)),
q.has("transparency")&&(t.opacity=Math.abs(1-q.transparency),t.transparent=!0),n.has("texture")){var z=n.texture;z.has=v;z.has("node")&&"ImageTexture"===z.node&&z.has("url")&&z.url&&(n=z.url instanceof Array&&0<z.url.length?z.url[0]:z.url,0<n.length&&(h.log("Loading image: "+n),n=(new THREE.TextureLoader).load(n,function(a){if(void 0!==a.image){var c=a.image.height/a.image.width;C.computeBoundingBox();if(void 0!==C.boundingBox){var e=[2*C.boundingBox.max.x,2*C.boundingBox.max.y,2*C.boundingBox.max.z];
e.sort();var h=e[2],k=e[1],l,q;console.log(e);z.has("repeatS")&&(!1===z.repeatS?l=1:(a.wrapT=THREE.RepeatWrapping,l=8));z.has("repeatT")&&(!1===z.repeatT?q=h/k*c:(a.wrapS=THREE.RepeatWrapping,q=8/h/k*c))}console.log("Repeats:");console.log(l);console.log(q);console.log(c);a.repeat.set(l,q)}}),h.log(n),t.map=n))}a.has("geometry")&&"IndexedFaceSet"===a.geometry.node&&(t.side=THREE.DoubleSide)}l?l=new THREE.Line:B?l=new THREE.Points({size:.01}):C instanceof THREE.Group?(h.log("Geometry is a group, replaces the object!"),
l=C):l=new THREE.Mesh(C,t);break;case "Background":l=!1;n=2E4;q=new THREE.SphereGeometry(n,20,20);w=new THREE.MeshBasicMaterial({fog:!1,side:THREE.BackSide});1<a.skyColor.length?(m(q,n,a.skyAngle,a.skyColor,!0),w.vertexColors=THREE.VertexColors):(n=k(a.skyColor[0]),w.color.setRGB(n.r,n.g,n.b));n=new THREE.Mesh(q,w);n.userData.originalVrmlNode=a;e.add(n);a.has("groundColor")&&(n=12E3,q=new THREE.SphereGeometry(n,20,20,0,2*Math.PI,.5*Math.PI,1.5*Math.PI),w=new THREE.MeshBasicMaterial({fog:!1,side:THREE.BackSide,
vertexColors:THREE.VertexColors}),m(q,n,a.groundAngle,a.groundColor,!1),n=new THREE.Mesh(q,w),n.userData.originalVrmlNode=a,n.receiveShadow=!0,e.add(n));break;case "Box":w=a.size;l=new THREE.BoxGeometry(w.x,w.y,w.z);break;case "Cylinder":l=new THREE.CylinderGeometry(a.radius,a.radius,a.height,36);n.smooth(l);break;case "Cone":l=a.has("bottom")?!1===a.bottom:!1;q=1;a.has("side")&&!1===a.side&&(q=0);var w=a.has("bottomRadius")?a.bottomRadius:1,x=a.has("height")?a.height:1,l=new THREE.ConeGeometry(w,
x,36,q,l);n.smooth(l);break;case "Sphere":l=new THREE.SphereGeometry(a.radius);n.smooth(l);break;case "IndexedFaceSet":l=(new VrmlParser.Renderer.ThreeJs.VrmlNode.IndexedFaceSet(a,h.debug)).parse();break;case "IndexedLineSet":l=new THREE.Geometry;n=[];if(a.has("coord"))for(q=0,w=a.coord.point.length;q<w;q++)x=a.coord.point[q],x=new THREE.Vector3(x.x,x.y,x.z),n.push(x);if(a.has("coordIndex")){q=0;for(w=a.coordIndex.length;q<w;q++)for(indexes=a.coordIndex[q],x=0;x<indexes.length;x++){var P=n[indexes[x]];
l.vertices.push(new THREE.Vector3(P.x,P.y,P.z))}l.computeBoundingSphere()}break;case "PointSet":l=new THREE.Geometry;if(a.has("coord"))for(q=0,w=a.coord.point.length;q<w;q++)x=a.coord.point[q],x=new THREE.Vector3(x.x,x.y,x.z),l.vertices.push(x);l.computeBoundingSphere();break;case "TimeSensor":break;case "TouchSensor":h.debug&&(l=new THREE.Mesh,l.geometry=new THREE.CubeGeometry(.1,.1,.1),l.material=new THREE.MeshNormalMaterial,l.material.color=new THREE.Color(.5,.5,.5));break;default:l=!1}!1!==l&&
(void 0!==l.userData&&(l.userData.originalVrmlNode=a),""===l.name&&(a.has("name")?l.name=a.name:a.has("node")&&(l.name=a.node)),l.castShadow=!B,l.receiveShadow=!B);return!1!==r?(r.name="surrounding_"+l.name,r):l},t=0;t<a.length;t++){var B=y(a[t]);!1!==B&&e.add(B)}e.userData.routes=a.routes;h.log(e)}};VrmlParser.Renderer.ThreeJs.Analyzer=function(a){this.debug=a};VrmlParser.Renderer.ThreeJs.Analyzer.prototype.labelVertices=function(a){for(var e=a.geometry,c,h={},k=0;k<e.vertices.length;k++){var m=this.makeTextSprite(" "+k+" ",{fontsize:14,backgroundColor:{r:255,g:100,b:100,a:1}}),v=e.vertices[k];c=v.x+"_"+v.y+"_"+v.z;h[c]=h[c]+1||0;h[c]=0;m.position.set(.5+v.x+.2*h[c],v.y,v.z);a.add(m)}};
VrmlParser.Renderer.ThreeJs.Analyzer.prototype.labelFaces=function(a){a=a.geometry;for(var e=0;e<a.faces.length;e++){var c=a.faces[e],h=this.makeTextSprite(" ["+c.a+", "+c.b+", "+c.c+"] ",{fontsize:16,backgroundColor:{r:100,g:100,b:255,a:1}}),k=new THREE.Vector3;k.add(a.vertices[c.a]);k.add(a.vertices[c.b]);k.add(a.vertices[c.c]);k.divideScalar(3);h.position.set(k.x+1,k.y,k.z);scene.add(h)}};
VrmlParser.Renderer.ThreeJs.Analyzer.prototype.roundRect=function(a,e,c,h,k,m){a.beginPath();a.moveTo(e+m,c);a.lineTo(e+h-m,c);a.quadraticCurveTo(e+h,c,e+h,c+m);a.lineTo(e+h,c+k-m);a.quadraticCurveTo(e+h,c+k,e+h-m,c+k);a.lineTo(e+m,c+k);a.quadraticCurveTo(e,c+k,e,c+k-m);a.lineTo(e,c+m);a.quadraticCurveTo(e,c,e+m,c);a.closePath();a.fill();a.stroke()};
VrmlParser.Renderer.ThreeJs.Analyzer.prototype.makeTextSprite=function(a,e){void 0===e&&(e={});var c=e.hasOwnProperty("fontface")?e.fontface:"Arial",h=e.hasOwnProperty("fontsize")?e.fontsize:18,k=e.hasOwnProperty("borderThickness")?e.borderThickness:4,m=e.hasOwnProperty("borderColor")?e.borderColor:{r:0,g:0,b:0,a:1},v=e.hasOwnProperty("backgroundColor")?e.backgroundColor:{r:255,g:255,b:255,a:1},y=document.createElement("canvas"),t=y.getContext("2d");t.font="Bold "+h+"px "+c;c=t.measureText(a).width;
t.fillStyle="rgba("+v.r+","+v.g+","+v.b+","+v.a+")";t.strokeStyle="rgba("+m.r+","+m.g+","+m.b+","+m.a+")";t.lineWidth=k;this.roundRect(t,k/2,k/2,c+k,1.4*h+k,6);t.fillStyle="rgba(0, 0, 0, 1.0)";t.fillText(a,k,h+k);h=new THREE.Texture(y);h.needsUpdate=!0;h=new THREE.SpriteMaterial({map:h});return new THREE.Sprite(h)};VrmlParser.Renderer.ThreeJs.Animation=function(a){this.debug=a?!0:!1;this.animations={}};
VrmlParser.Renderer.ThreeJs.Animation.prototype={sensorRegistry:{},buildSensorRegistry:function(a){function e(a,c){void 0===k[c]&&(k[c]={});if(void 0===a.children)return!1;for(var n=0;n<a.children.length;n++){var l=a.children[n],m;"undefined"!==typeof l.userData.originalVrmlNode&&c===l.userData.originalVrmlNode.node&&!1!==l.userData.originalVrmlNode.enabled&&(m=l.name,h.log(c+": "+m),k[c][m]=l);void 0!==l.children&&e(l,c)}}function c(a,e){if(void 0!==a.parent&&void 0!==a.parent.children)for(var k=
0;k<a.parent.children.length;k++){var l=a.parent.children[k];if(void 0!==l.children)for(var m=0;m<l.children.length;m++)c(l.children[m],e);void 0!==l.geometry&&void 0!==l.geometry.name&&l.name&&l.userData.originalVrmlNode.node!==y&&(void 0===h.sensorRegistry[y][e]&&(h.sensorRegistry[y][e]=[]),h.sensorRegistry[y][e].push(l))}}var h=this;this.log("building sensor registry");for(var k=[],m=["TouchSensor"],v=0;v<m.length;v++){var y=m[v];void 0===this.sensorRegistry[y]&&(this.sensorRegistry[y]=[]);e(a,
y);this.log("Found the following sensors of type "+y+":");this.log(k[y]);for(var t in k[y]){var B=k[y][t];c(B,B.name)}}this.log(this.sensorRegistry);this.log("DONE building sensor registry")},update:function(a){for(var e in this.animations)if(this.animations.hasOwnProperty(e))(0,this.animations[e])(a)},addAnimation:function(a,e){this.animations[a]=e},removeAnimation:function(a){if(void 0===this.animations[a])return this.log("Animation "+a+" cannot be removed (missing)"),!1;this.log("Deleting animation "+
a);delete this.animations[a];return!0},log:function(a,e){this.debug&&(void 0!==e&&console.log(e+":"),console.log(a))},init:function(a,e){function c(a,c){var e=[],k;for(k in h.sensorRegistry[c])for(var m=0;m<h.sensorRegistry[c][k].length;m++)h.sensorRegistry[c][k][m]===a&&e.push(k);return e}projector=new THREE.Projector;var h=this;e.domElement.addEventListener("mousedown",function(k){function m(a){var c=[];if("undefined"===typeof a)return c;var e=scene.userData.routes;if("undefined"===typeof e[a.target.name])return a;
a=e[a.target.name];for(e=0;e<a.length;e++){var k=m(a[e]);c.push(k)}h.log(c,"targetRoutes from private method");return c}function v(a){a=scene.userData.routes[a];h.log(a,"routes");return a}function y(a){for(var c=m(a),e=0;e<c.length;e++){for(var k=c[e],l=2,n=scene.getObjectByName(a.target.name).userData.originalVrmlNode.cycleInterval;"function"===typeof k.pop;){k=k.pop();++l;if(3<l){h.log("Event routing chains of more than 3 routes are not supported in the current version. Skipping "+r+"...");return}if("undefined"===
typeof k){h.log("no target route found for "+r);return}}l=scene.getObjectByName(k.source.name).userData.originalVrmlNode;if(void 0===VrmlParser.Renderer.ThreeJs.VrmlNode[l.node]){h.log(l.node+" is not yet supported");break}n=new VrmlParser.Renderer.ThreeJs.VrmlNode[l.node](l,n,h.debug);h.log(n,l.node);k=scene.getObjectByName("surrounding_"+k.target.name);l=function(a){return function(){return h.removeAnimation(a)}}(r);k=n.getCallback(k,l);h.log("Adding animation for "+r);h.addAnimation(r,k)}}var t=
void 0==k.offsetX?k.layerX:k.offsetX;k=void 0==k.offsetY?k.layerY:k.offsetY;var B=new THREE.Vector3;B.set(t/e.domElement.width*2-1,2*-(k/e.domElement.height)+1,.5);B.unproject(a);t=(new THREE.Raycaster(a.position,B.sub(a.position).normalize())).intersectObjects(scene.children,!0);if(t.length)for(t=c(t[0].object,"TouchSensor"),k=0;k<t.length;k++)for(var r=t[k],B=v(r),C=0;C<B.length;C++){var n=B[C];h.log(n,"rootRoute");y(n)}},!1)}};VrmlParser.Renderer.ThreeJs.SmoothEdges=function(a){this.debug=a;this.log=function(a){this.debug&&console.log(a)}};VrmlParser.Renderer.ThreeJs.SmoothEdges.prototype._calcNormal=function(a,e,c){a=a.filter(function(a){return a.angleTo(e)<c});return 0===a.length?[]:a.reduce(function(a,c){return a.clone().add(c)}).normalize()};
VrmlParser.Renderer.ThreeJs.SmoothEdges.prototype.smooth=function(a,e){var c=this;e=e||.5;a.computeFaceNormals();var h=a.vertices.map(function(){return[]});a.faces.map(function(a){h[a.a].push(a.normal);h[a.b].push(a.normal);h[a.c].push(a.normal)});a.faces.map(function(a){a.vertexNormals[0]=c._calcNormal(h[a.a],a.normal,e);a.vertexNormals[1]=c._calcNormal(h[a.b],a.normal,e);a.vertexNormals[2]=c._calcNormal(h[a.c],a.normal,e)});0<a.faces.length&&(a.normalsNeedUpdate=!0)};VrmlParser.Renderer.ThreeJs.VrmlNode=function(a,e){this.debug=e;this.node=a;this.node.has=function(a){return"undefined"!==typeof this[a]&&null!==this[a]};this.log=function(a){this.debug&&console.log(a)}};VrmlParser.Renderer.ThreeJs.VrmlNode.DirectionalLight=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments)};
VrmlParser.Renderer.ThreeJs.VrmlNode.DirectionalLight.prototype.parse=function(a,e){var c;this.node.has("color")&&(c=this.node.color,c=new THREE.Color(c.x,c.y,c.z));c=new THREE.DirectionalLight(c?c:11184810);if(this.node.has("direction")){var h=this.node.direction;c.position.set(-h.x,-h.y,-h.z)}this.node.has("on")&&(c.enabled=this.node.on);this.node.has("intensity")&&(c.intensity=this.node.intensity);e.add(c);e.add(c.target)};VrmlParser.Renderer.ThreeJs.VrmlNode.IndexedFaceSet=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments)};
VrmlParser.Renderer.ThreeJs.VrmlNode.IndexedFaceSet.prototype.parse=function(){var a=new VrmlParser.Renderer.ThreeJs.SmoothEdges(this.debug),e=this.node;object=new THREE.Geometry;var c,h,k,m;e.has("texCoord")&&(k=e.texCoord.point);if(e.has("coord"))for(k||(k=e.coord.point),c=0,h=e.coord.point.length;c<h;c++)m=e.coord.point[c],m=new THREE.Vector3(m.x,m.y,m.z),object.vertices.push(m);if(e.has("coordIndex"))for(var v=0,y=e.coordIndex.length;v<y;v++)for(c=e.coordIndex[v],h=e.has("texCoordIndex")?e.texCoordIndex[v]:
c,m=0;3<=c.length&&m<c.length-2;){var t=new THREE.Face3(c[0],c[m+(e.ccw?1:2)],c[m+(e.ccw?2:1)],null);this.log(t);k&&h&&object.faceVertexUvs[0].push([new THREE.Vector2(k[h[0]].x,k[h[0]].y),new THREE.Vector2(k[h[m+(e.ccw?1:2)]].x,k[h[m+(e.ccw?1:2)]].y),new THREE.Vector2(k[h[m+(e.ccw?2:1)]].x,k[h[m+(e.ccw?2:1)]].y)]);m++;object.faces.push(t)}e=e.has("creaseAngle")?e.creaseAngle:!1;!1!==e?a.smooth(object,e):object.computeFaceNormals();object.computeBoundingSphere();return object};VrmlParser.Renderer.ThreeJs.VrmlNode.Inline=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments)};VrmlParser.Renderer.ThreeJs.VrmlNode.Inline.prototype.parse=function(a,e){var c=this.node;if(c.has("url"))for(var c="object"===typeof c.url?c.url:[c.url],h=new THREE.FileLoader,k=function(c){c=vrmlParser.parse(c);e.render(c,a)},m=0;m<c.length;m++)h.load(c[m],k)};VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator=function(a,e,c){this.originalNode=a;VrmlParser.Renderer.ThreeJs.VrmlNode.call(this,a,c);this.key=a.key;this.keyValue=a.keyValue;this.index=1;this.finish=this.tweenObj=this.target=null;this.cycleInterval=e};VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype.finish=function(){};VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype.getDuration=function(){return 1E3*(this.key[this.index]-this.key[this.index-1])*this.cycleInterval};
VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype.complete=function(){this.index++;this.index>=this.keyValue.length?this.finish()&&this.log('Interpolator "'+this.originalNode.name+'" finished at index '+this.index):this.tween()};VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype.tween=function(){};VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype.getCallback=function(a,e){var c=this;this.target=a;this.finish=e;this.tween();return function(a){c.tweenObj.update(+new Date)}};VrmlParser.Renderer.ThreeJs.VrmlNode.NavigationInfo=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments);this.controls=null};
VrmlParser.Renderer.ThreeJs.VrmlNode.NavigationInfo.prototype.parse=function(a,e,c){this.log("From NavigationInfo");a=void 0!==this.node.speed?this.node.speed:1;if(void 0!==this.node.type)switch(this.node.type.toLowerCase()){case "fly":this.log("fly!"),controls=new THREE.FlyControls(camera,c.domElement),controls.movementSpeed=a}else this.log("orbit!"),controls=new THREE.OrbitControls(camera,c.domElement),controls.movementSpeed=a};VrmlParser.Renderer.ThreeJs.VrmlNode.OrientationInterpolator=function(a,e,c){VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.call(this,a,e,c)};VrmlParser.Renderer.ThreeJs.VrmlNode.OrientationInterpolator.prototype=Object.create(VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype);
VrmlParser.Renderer.ThreeJs.VrmlNode.OrientationInterpolator.prototype.tween=function(){var a=this,e=this.keyValue[this.index],c=e.radians;this.log("Animating from "+(void 0!==this.target.quaternion?this.target.quaternion.w:this.target.rotation.w)+" to "+c);var h=new THREE.Quaternion,e=new THREE.Vector3(e.x,e.y,e.z);h.setFromAxisAngle(e,c);c=this.getDuration();this.tweenObj=(new TWEEN.Tween(this.target.quaternion)).to(h,c).start(+new Date).onComplete(function(){a.complete()})};VrmlParser.Renderer.ThreeJs.VrmlNode.PointLight=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments)};VrmlParser.Renderer.ThreeJs.VrmlNode.PointLight.prototype.parse=function(a,e){var c;this.node.has("color")&&(c=this.node.color,c=new THREE.Color(c.x,c.y,c.z));c=new THREE.PointLight(c?c:11184810);this.node.has("on")&&(c.enabled=this.node.on);this.node.has("radius")&&(c.distance=this.node.radius);this.node.has("intensity")&&(c.intensity=this.node.intensity);return c};VrmlParser.Renderer.ThreeJs.VrmlNode.PositionInterpolator=function(a,e,c){VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.call(this,a,e,c)};VrmlParser.Renderer.ThreeJs.VrmlNode.PositionInterpolator.prototype=Object.create(VrmlParser.Renderer.ThreeJs.VrmlNode.Interpolator.prototype);
VrmlParser.Renderer.ThreeJs.VrmlNode.PositionInterpolator.prototype.tween=function(){var a=this,e=this.getPosition();this.log(this.key);var c=this.getDuration();this.log(c);this.tweenObj=(new TWEEN.Tween(this.target.position)).to(e,c).start(+new Date).onComplete(function(){a.complete()})};VrmlParser.Renderer.ThreeJs.VrmlNode.PositionInterpolator.prototype.getPosition=function(){var a=this.keyValue[this.index];return new THREE.Vector3(a.x,a.y,a.z)};VrmlParser.Renderer.ThreeJs.VrmlNode.Text=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments);this.material=null};VrmlParser.Renderer.ThreeJs.VrmlNode.Text.prototype.setMaterial=function(a){this.material=a};
VrmlParser.Renderer.ThreeJs.VrmlNode.Text.prototype.parse=function(a,e){var c=new THREE.Group,h=new THREE.FontLoader,k=this.node,m=!0,v=k.fontStyle?k.fontStyle:!1;v&&void 0!==v.topToBottom&&!1===v.topToBottom&&(m=!1);var y=!0;v&&void 0!==v.leftToRight&&!v.leftToRight&&(y=!1);var t=v.size?v.size:1,B,r=v.spacing?v.spacing:1,C=0,n=this;h.load(VrmlParser.Renderer.ThreeJs.VrmlNode.Text.fontsDir+"/helvetiker_regular.typeface.json",function(a){for(var e=0;e<k.string.length;e++){var h=k.string[e];!1===y&&
(h=h.split("").reverse().join(""));B=m?(k.string.length-e)*t:e*t;B*=r;h=new THREE.TextGeometry(h,{font:a,size:t,height:0,curveSegments:12,bevelEnabled:!1,bevelThickness:0,bevelSize:0,bevelSegments:0});h.computeBoundingBox();h.computeFaceNormals();h=new THREE.Mesh(h,n.material);h.position.set(0,B,0);c.add(h);h=(new THREE.Box3).setFromObject(h).getSize().x;C<h&&(C=h)}if(!1===y)for(a=0;a<c.children.length;a++)e=c.children[a],h=(new THREE.Box3).setFromObject(e).getSize().x,e.position.setX(C-h)});return c};VrmlParser.Renderer.ThreeJs.VrmlNode.Viewpoint=function(a,e){VrmlParser.Renderer.ThreeJs.VrmlNode.apply(this,arguments)};VrmlParser.Renderer.ThreeJs.VrmlNode.Viewpoint.prototype.parse=function(a){var e=this.node,c=e.name?e.name:e.description;return{getCamera:function(){return{name:c,position:e.position,orientation:e.orientation,fov:Math.round(180/Math.PI*e.fieldOfView),aspect:window.innerWidth/window.innerHeight,near:.01,far:1E5}}}};