babylon.loadingScreen.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. var BABYLON;
  2. (function (BABYLON) {
  3. var DefaultLoadingScreen = (function () {
  4. function DefaultLoadingScreen(_renderingCanvas, _loadingText, _loadingDivBackgroundColor) {
  5. var _this = this;
  6. if (_loadingText === void 0) { _loadingText = ""; }
  7. if (_loadingDivBackgroundColor === void 0) { _loadingDivBackgroundColor = "black"; }
  8. this._renderingCanvas = _renderingCanvas;
  9. this._loadingText = _loadingText;
  10. this._loadingDivBackgroundColor = _loadingDivBackgroundColor;
  11. // Resize
  12. this._resizeLoadingUI = function () {
  13. var canvasRect = _this._renderingCanvas.getBoundingClientRect();
  14. _this._loadingDiv.style.position = "absolute";
  15. _this._loadingDiv.style.left = canvasRect.left + "px";
  16. _this._loadingDiv.style.top = canvasRect.top + "px";
  17. _this._loadingDiv.style.width = canvasRect.width + "px";
  18. _this._loadingDiv.style.height = canvasRect.height + "px";
  19. };
  20. }
  21. DefaultLoadingScreen.prototype.displayLoadingUI = function () {
  22. var _this = this;
  23. if (this._loadingDiv) {
  24. // Do not add a loading screen if there is already one
  25. return;
  26. }
  27. this._loadingDiv = document.createElement("div");
  28. this._loadingDiv.id = "babylonjsLoadingDiv";
  29. this._loadingDiv.style.opacity = "0";
  30. this._loadingDiv.style.transition = "opacity 1.5s ease";
  31. // Loading text
  32. this._loadingTextDiv = document.createElement("div");
  33. this._loadingTextDiv.style.position = "absolute";
  34. this._loadingTextDiv.style.left = "0";
  35. this._loadingTextDiv.style.top = "50%";
  36. this._loadingTextDiv.style.marginTop = "80px";
  37. this._loadingTextDiv.style.width = "100%";
  38. this._loadingTextDiv.style.height = "20px";
  39. this._loadingTextDiv.style.fontFamily = "Arial";
  40. this._loadingTextDiv.style.fontSize = "14px";
  41. this._loadingTextDiv.style.color = "white";
  42. this._loadingTextDiv.style.textAlign = "center";
  43. this._loadingTextDiv.innerHTML = "Loading";
  44. this._loadingDiv.appendChild(this._loadingTextDiv);
  45. //set the predefined text
  46. this._loadingTextDiv.innerHTML = this._loadingText;
  47. // Loading img
  48. var imgBack = new Image();
  49. imgBack.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuM4zml1AAAARbSURBVHhe7Z09aFNRFMc716kuLrq4FdyLq4Wi4CAoRQcR0UJBUBdRiuLSIYMo6CA4FF2sgw6CFAdFUOpSQYcWO4hD26UQCfXrIQrx/JJzw1OSWq3NPeL/B4Fy+0jg/HO+7j3vpUcI8b/Q39+/49ihfWdPHT94Yf/e3Se3bd263f8lus218TPn6vV6Ya8Wi/MzNRNmj18iusX9W1evmP1/EKNEIVG6CMbG6E3bt+fT++pHha8NoHdT72bLE8NDg7tGU64gLLndV4Wc4m8j/pS+vr4tGB/DT16v3Fyr8dvBe/jbit8BL0AES9LX1iPAz+BR/hFiLVCynj95dPzNy6fv3IZ/k4L3948Sq7FzYGBg4vLFGxitabuOFCbWNKGrMnbiUuo18KaV6tIHv6YtvL9/nOgE31jCktmrY7k6+/zhE4yP4Vf7hiNqh/BWWEl8mzDol4p22Lf7cIdvdUMEvv0Y2S9fE5S1hLzpqTsPkiep//gFGPnR3Yl7GL5p/xYFBrTwM+iXio3GqpwDGL5p/xYNIX7XG8Q6IJRgdIzf1KBBgafII7oMidhyQtVFaMA2Bt7il4huQRhaXphbcR2g4RXqBzKAGHiCCwGFVUAj/m/RTRDj29cvn10I0PZ3LghH5f4CL1EFlQmqqXK3jDDKFxmhQ3Yt6oQseUZGKmMnTpsOqc8o1F9kBOMjQlOLeqEeIyOc6JV6jYLJD/+XyIFvnzdgl9aXRQ5I2qZDK1SpospMqaoqON/wZZGDciLnMMiXRS7IF4hhqMTNTdk7CFu+LHLhR7BQqBvPDJUUQqCGvCMATHUgBmhWNgApmdOda9YpM+VwRYfuyyIXDK8hBlilNerLIheMZCKGwlUAyru6GlwOgPUbRxADdJ9FAChxXY864viyyEXqPxhc0M2TAfAbatSdRyHtXymhByEdRnE3ky+JnHAIhSA0h74kckETmHoQbSgGwJrCIRMEPSRIBCRIMAhZaYhaggQhJXUJEoRU9mofKwh+F22dLRRfEjlJM7w6KQwCoQpBOKTyJZETjmwRxKqtGV8SOSkNOGjKPQppBEgDDkFgpxdBVGkFgaYQQXRIFQSObk0P5ZFIpAZRHXsQ0r0hCluBWKkuvVbYCkQaCdL5ehBScudJP4yY+rLISdps1NBDEJKXMMmoSfggWC4ZQRR17oFYXph7hSiquIKQ+hJGTX1J5MYSPD/GVdNzsgLBwZVCVyAQAkF0ohiI/c1fS6tNXq9UfEnkhudmIQolsS+J3Hh/UtNDzQLhj42VKJFInqLwFYiUU5ToA+HdfI0JevUpQUAIn+vSz2lHIuUV/dJOIHhOY/IWVWGBIHQtzs88s9zyWBuTgcBLzGOmeNnfF/QslSDgMeQW85i3DOQxuipxAkCyZ8SIm4Omp+7MMlCB59j6sKZcMoM4iIEoeI2J9AKxrFobZx0v4vYInuHFS4J1GQRCAGaLEYQXfyMML5XSQgghhBBCCCH+cXp6vgNhKpSKX/XdOAAAAABJRU5ErkJggg==";
  50. imgBack.style.position = "absolute";
  51. imgBack.style.left = "50%";
  52. imgBack.style.top = "50%";
  53. imgBack.style.marginLeft = "-50px";
  54. imgBack.style.marginTop = "-50px";
  55. imgBack.style.transition = "transform 1.0s ease";
  56. imgBack.style.webkitTransition = "-webkit-transform 1.0s ease";
  57. var deg = 360;
  58. var onTransitionEnd = function () {
  59. deg += 360;
  60. imgBack.style.transform = "rotateZ(" + deg + "deg)";
  61. imgBack.style.webkitTransform = "rotateZ(" + deg + "deg)";
  62. };
  63. imgBack.addEventListener("transitionend", onTransitionEnd);
  64. imgBack.addEventListener("webkitTransitionEnd", onTransitionEnd);
  65. this._loadingDiv.appendChild(imgBack);
  66. // front image
  67. var imgFront = new Image();
  68. imgFront.src = "data:image/png;base64,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";
  69. imgFront.style.position = "absolute";
  70. imgFront.style.left = "50%";
  71. imgFront.style.top = "50%";
  72. imgFront.style.marginLeft = "-50px";
  73. imgFront.style.marginTop = "-50px";
  74. this._loadingDiv.appendChild(imgFront);
  75. this._resizeLoadingUI();
  76. window.addEventListener("resize", this._resizeLoadingUI);
  77. this._loadingDiv.style.backgroundColor = this._loadingDivBackgroundColor;
  78. document.body.appendChild(this._loadingDiv);
  79. setTimeout(function () {
  80. _this._loadingDiv.style.opacity = "1";
  81. imgBack.style.transform = "rotateZ(360deg)";
  82. imgBack.style.webkitTransform = "rotateZ(360deg)";
  83. }, 0);
  84. };
  85. DefaultLoadingScreen.prototype.hideLoadingUI = function () {
  86. var _this = this;
  87. if (!this._loadingDiv) {
  88. return;
  89. }
  90. var onTransitionEnd = function () {
  91. if (!_this._loadingDiv) {
  92. return;
  93. }
  94. document.body.removeChild(_this._loadingDiv);
  95. window.removeEventListener("resize", _this._resizeLoadingUI);
  96. _this._loadingDiv = null;
  97. };
  98. this._loadingDiv.style.opacity = "0";
  99. this._loadingDiv.addEventListener("transitionend", onTransitionEnd);
  100. };
  101. Object.defineProperty(DefaultLoadingScreen.prototype, "loadingUIText", {
  102. set: function (text) {
  103. this._loadingText = text;
  104. if (this._loadingTextDiv) {
  105. this._loadingTextDiv.innerHTML = this._loadingText;
  106. }
  107. },
  108. enumerable: true,
  109. configurable: true
  110. });
  111. Object.defineProperty(DefaultLoadingScreen.prototype, "loadingUIBackgroundColor", {
  112. get: function () {
  113. return this._loadingDivBackgroundColor;
  114. },
  115. set: function (color) {
  116. this._loadingDivBackgroundColor = color;
  117. if (!this._loadingDiv) {
  118. return;
  119. }
  120. this._loadingDiv.style.backgroundColor = this._loadingDivBackgroundColor;
  121. },
  122. enumerable: true,
  123. configurable: true
  124. });
  125. return DefaultLoadingScreen;
  126. })();
  127. BABYLON.DefaultLoadingScreen = DefaultLoadingScreen;
  128. })(BABYLON || (BABYLON = {}));