index.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /// <reference path="../../babylon.js" />
  2. if (BABYLON.Engine.isSupported()) {
  3. var canvas = document.getElementById("renderCanvas");
  4. var engine = new BABYLON.Engine(canvas, true);
  5. var divFps = document.getElementById("fps");
  6. var htmlInput = document.getElementById("files");
  7. var btnFullScreen = document.getElementById("btnFullscreen");
  8. var btnDownArrow = document.getElementById("btnDownArrow");
  9. var perffooter = document.getElementById("perf");
  10. var btnPerf = document.getElementById("btnPerf");
  11. var miscCounters = document.getElementById("miscCounters");
  12. var help01 = document.getElementById("help01");
  13. var help02 = document.getElementById("help02");
  14. var loadingText = document.getElementById("loadingText");
  15. var filesInput;
  16. var currentHelpCounter;
  17. var currentScene;
  18. var enableDebugLayer = false;
  19. currentHelpCounter = localStorage.getItem("helpcounter");
  20. BABYLON.Engine.ShadersRepository = "/src/Shaders/";
  21. if (!currentHelpCounter) currentHelpCounter = 0;
  22. // Resize
  23. window.addEventListener("resize", function () {
  24. engine.resize();
  25. });
  26. var sceneLoaded = function (sceneFile, babylonScene) {
  27. function displayDebugLayerAndLogs() {
  28. currentScene.debugLayer._displayLogs = true;
  29. enableDebugLayer = true;
  30. currentScene.debugLayer.show();
  31. };
  32. function hideDebugLayerAndLogs() {
  33. currentScene.debugLayer._displayLogs = false;
  34. enableDebugLayer = false;
  35. currentScene.debugLayer.hide();
  36. };
  37. if (enableDebugLayer) {
  38. hideDebugLayerAndLogs();
  39. }
  40. currentScene = babylonScene;
  41. document.title = "BabylonJS - " + sceneFile.name;
  42. // Fix for IE, otherwise it will change the default filter for files selection after first use
  43. htmlInput.value = "";
  44. // In case of error during loading, meshes will be empty and clearColor is set to red
  45. if (currentScene.meshes.length === 0 && currentScene.clearColor.r === 1 && currentScene.clearColor.g === 0 && currentScene.clearColor.b === 0) {
  46. document.getElementById("logo").className = "";
  47. canvas.style.opacity = 0;
  48. displayDebugLayerAndLogs();
  49. }
  50. else {
  51. if (BABYLON.Tools.errorsCount > 0) {
  52. displayDebugLayerAndLogs();
  53. }
  54. document.getElementById("logo").className = "hidden";
  55. canvas.style.opacity = 1;
  56. if (currentScene.activeCamera.keysUp) {
  57. currentScene.activeCamera.keysUp.push(90); // Z
  58. currentScene.activeCamera.keysUp.push(87); // W
  59. currentScene.activeCamera.keysDown.push(83); // S
  60. currentScene.activeCamera.keysLeft.push(65); // A
  61. currentScene.activeCamera.keysLeft.push(81); // Q
  62. currentScene.activeCamera.keysRight.push(69); // E
  63. currentScene.activeCamera.keysRight.push(68); // D
  64. }
  65. }
  66. };
  67. filesInput = new BABYLON.FilesInput(engine, null, canvas, sceneLoaded);
  68. filesInput.monitorElementForDragNDrop(canvas);
  69. window.addEventListener("keydown", function (evt) {
  70. // Press R to reload
  71. if (evt.keyCode === 82) {
  72. filesInput.reload();
  73. }
  74. });
  75. htmlInput.addEventListener('change', function (event) {
  76. filesInput.loadFiles(event);
  77. }, false);
  78. btnFullScreen.addEventListener('click', function () {
  79. engine.switchFullscreen(true);
  80. }, false);
  81. btnPerf.addEventListener('click', function () {
  82. if (currentScene) {
  83. if (!enableDebugLayer) {
  84. currentScene.debugLayer.show();
  85. enableDebugLayer = true;
  86. } else {
  87. currentScene.debugLayer.hide();
  88. enableDebugLayer = false;
  89. }
  90. }
  91. }, false);
  92. // The help tips will be displayed only 5 times
  93. if (currentHelpCounter < 5) {
  94. help01.className = "help shown";
  95. setTimeout(function () {
  96. help01.className = "help";
  97. help02.className = "help2 shown";
  98. setTimeout(function () {
  99. help02.className = "help2";
  100. localStorage.setItem("helpcounter", currentHelpCounter + 1);
  101. }, 5000);
  102. }, 5000);
  103. }
  104. }