babylon.loadingScreen.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. this._loadingDiv = document.createElement("div");
  24. this._loadingDiv.id = "babylonjsLoadingDiv";
  25. this._loadingDiv.style.opacity = "0";
  26. this._loadingDiv.style.transition = "opacity 1.5s ease";
  27. // Loading text
  28. this._loadingTextDiv = document.createElement("div");
  29. this._loadingTextDiv.style.position = "absolute";
  30. this._loadingTextDiv.style.left = "0";
  31. this._loadingTextDiv.style.top = "50%";
  32. this._loadingTextDiv.style.marginTop = "80px";
  33. this._loadingTextDiv.style.width = "100%";
  34. this._loadingTextDiv.style.height = "20px";
  35. this._loadingTextDiv.style.fontFamily = "Arial";
  36. this._loadingTextDiv.style.fontSize = "14px";
  37. this._loadingTextDiv.style.color = "white";
  38. this._loadingTextDiv.style.textAlign = "center";
  39. this._loadingTextDiv.innerHTML = "Loading";
  40. this._loadingDiv.appendChild(this._loadingTextDiv);
  41. //set the predefined text
  42. this._loadingTextDiv.innerHTML = this._loadingText;
  43. // Loading img
  44. var imgBack = new Image();
  45. 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==";
  46. imgBack.style.position = "absolute";
  47. imgBack.style.left = "50%";
  48. imgBack.style.top = "50%";
  49. imgBack.style.marginLeft = "-50px";
  50. imgBack.style.marginTop = "-50px";
  51. imgBack.style.transition = "transform 1.0s ease";
  52. imgBack.style.webkitTransition = "-webkit-transform 1.0s ease";
  53. var deg = 360;
  54. var onTransitionEnd = function () {
  55. deg += 360;
  56. imgBack.style.transform = "rotateZ(" + deg + "deg)";
  57. imgBack.style.webkitTransform = "rotateZ(" + deg + "deg)";
  58. };
  59. imgBack.addEventListener("transitionend", onTransitionEnd);
  60. imgBack.addEventListener("webkitTransitionEnd", onTransitionEnd);
  61. this._loadingDiv.appendChild(imgBack);
  62. // front image
  63. var imgFront = new Image();
  64. imgFront.src = "data:image/png;base64,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";
  65. imgFront.style.position = "absolute";
  66. imgFront.style.left = "50%";
  67. imgFront.style.top = "50%";
  68. imgFront.style.marginLeft = "-50px";
  69. imgFront.style.marginTop = "-50px";
  70. this._loadingDiv.appendChild(imgFront);
  71. this._resizeLoadingUI();
  72. window.addEventListener("resize", this._resizeLoadingUI);
  73. this._loadingDiv.style.backgroundColor = this._loadingDivBackgroundColor;
  74. document.body.appendChild(this._loadingDiv);
  75. setTimeout(function () {
  76. _this._loadingDiv.style.opacity = "1";
  77. imgBack.style.transform = "rotateZ(360deg)";
  78. imgBack.style.webkitTransform = "rotateZ(360deg)";
  79. }, 0);
  80. };
  81. DefaultLoadingScreen.prototype.hideLoadingUI = function () {
  82. var _this = this;
  83. if (!this._loadingDiv) {
  84. return;
  85. }
  86. var onTransitionEnd = function () {
  87. if (!_this._loadingDiv) {
  88. return;
  89. }
  90. document.body.removeChild(_this._loadingDiv);
  91. window.removeEventListener("resize", _this._resizeLoadingUI);
  92. _this._loadingDiv = null;
  93. };
  94. this._loadingDiv.style.opacity = "0";
  95. this._loadingDiv.addEventListener("transitionend", onTransitionEnd);
  96. };
  97. Object.defineProperty(DefaultLoadingScreen.prototype, "loadingUIText", {
  98. set: function (text) {
  99. this._loadingText = text;
  100. if (this._loadingTextDiv) {
  101. this._loadingTextDiv.innerHTML = this._loadingText;
  102. }
  103. },
  104. enumerable: true,
  105. configurable: true
  106. });
  107. Object.defineProperty(DefaultLoadingScreen.prototype, "loadingUIBackgroundColor", {
  108. get: function () {
  109. return this._loadingDivBackgroundColor;
  110. },
  111. set: function (color) {
  112. this._loadingDivBackgroundColor = color;
  113. if (!this._loadingDiv) {
  114. return;
  115. }
  116. this._loadingDiv.style.backgroundColor = this._loadingDivBackgroundColor;
  117. },
  118. enumerable: true,
  119. configurable: true
  120. });
  121. return DefaultLoadingScreen;
  122. })();
  123. BABYLON.DefaultLoadingScreen = DefaultLoadingScreen;
  124. })(BABYLON || (BABYLON = {}));