index.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. /// <reference path="../../dist/preview release/babylon.d.ts"/>
  2. /// <reference path="../../dist/preview release/canvas2D/babylon.canvas2D.d.ts"/>
  3. var Test = (function () {
  4. function Test(canvasId) {
  5. var _this = this;
  6. var canvas = document.getElementById(canvasId);
  7. this.engine = new BABYLON.Engine(canvas, true);
  8. BABYLONDEVTOOLS.Loader.debugShortcut(this.engine);
  9. this.scene = null;
  10. window.addEventListener("resize", function () {
  11. _this.engine.resize();
  12. });
  13. this._run();
  14. }
  15. Test.prototype._run = function () {
  16. var _this = this;
  17. this._initScene();
  18. this.scene.debugLayer.show({ popup: false, initialTab: 4 });
  19. this.scene.executeWhenReady(function () {
  20. _this._initGame();
  21. _this.engine.runRenderLoop(function () {
  22. _this.scene.render();
  23. });
  24. });
  25. };
  26. Test.prototype._initScene = function () {
  27. var scene = new BABYLON.Scene(this.engine);
  28. var canvas = scene.getEngine().getRenderingCanvas();
  29. var light = new BABYLON.HemisphericLight("hemi", new BABYLON.Vector3(0, 1, 0), scene);
  30. var camera = new BABYLON.ArcRotateCamera("Camera", Math.PI / 2, 1.0, 110, new BABYLON.Vector3(0, -20, 0), scene);
  31. camera.attachControl(canvas, true);
  32. var camera1 = new BABYLON.ArcRotateCamera("Camera1", 1.58, 1.2, 110, BABYLON.Vector3.Zero(), scene);
  33. var camera2 = new BABYLON.ArcRotateCamera("Camera2", Math.PI / 3, .8, 40, BABYLON.Vector3.Zero(), scene);
  34. var camera3 = new BABYLON.ArcRotateCamera("Camera3", -Math.PI / 5, 1.0, 70, BABYLON.Vector3.Zero(), scene);
  35. var camera4 = new BABYLON.ArcRotateCamera("Camera4", -Math.PI / 6, 1.3, 110, BABYLON.Vector3.Zero(), scene);
  36. camera1.layerMask = 2;
  37. camera2.layerMask = 2;
  38. camera3.layerMask = 2;
  39. camera4.layerMask = 2;
  40. /*
  41. camera1.parent = camera;
  42. camera2.parent = camera;
  43. camera3.parent = camera;
  44. camera4.parent = camera;
  45. */
  46. var sphere1 = BABYLON.Mesh.CreateSphere("Sphere1", 10.0, 9.0, scene);
  47. var sphere2 = BABYLON.Mesh.CreateSphere("Sphere2", 2.0, 9.0, scene);//Only two segments
  48. var sphere3 = BABYLON.Mesh.CreateSphere("Sphere3", 10.0, 9.0, scene);
  49. var sphere4 = BABYLON.Mesh.CreateSphere("Sphere4", 10.0, 9.0, scene);
  50. var sphere5 = BABYLON.Mesh.CreateSphere("Sphere5", 10.0, 9.0, scene);
  51. var sphere6 = BABYLON.Mesh.CreateSphere("Sphere6", 10.0, 9.0, scene);
  52. sphere1.position.x = 40;
  53. sphere2.position.x = 25;
  54. sphere3.position.x = 10;
  55. sphere4.position.x = -5;
  56. sphere5.position.x = -20;
  57. sphere6.position.x = -35;
  58. var rt1 = new BABYLON.RenderTargetTexture("depth", 1024, scene, true, true);
  59. scene.customRenderTargets.push(rt1);
  60. rt1.activeCamera = camera1;
  61. rt1.renderList = scene.meshes;
  62. var rt2 = new BABYLON.RenderTargetTexture("depth", 1024, scene, true, true);
  63. scene.customRenderTargets.push(rt2);
  64. rt2.activeCamera = camera2;
  65. rt2.renderList = scene.meshes;
  66. var rt3 = new BABYLON.RenderTargetTexture("depth", 1024, scene, true, true);
  67. scene.customRenderTargets.push(rt3);
  68. rt3.activeCamera = camera3;
  69. rt3.renderList = scene.meshes;
  70. var rt4 = new BABYLON.RenderTargetTexture("depth", 1024, scene, true, true);
  71. scene.customRenderTargets.push(rt4);
  72. rt4.activeCamera = camera4;
  73. rt4.renderList = scene.meshes;
  74. var mon1 = BABYLON.Mesh.CreatePlane("plane", 5, scene);
  75. mon1.position = new BABYLON.Vector3(-8.8, -7.8, 25)
  76. // mon1.showBoundingBox = true;
  77. var mon1mat = new BABYLON.StandardMaterial("texturePlane", scene);
  78. mon1mat.diffuseTexture = rt1;
  79. mon1.material = mon1mat;
  80. mon1.parent = camera;
  81. mon1.layerMask = 1;
  82. var mon2 = BABYLON.Mesh.CreatePlane("plane", 5, scene);
  83. mon2.position = new BABYLON.Vector3(-2.9, -7.8, 25)
  84. // mon2.showBoundingBox = true;
  85. var mon2mat = new BABYLON.StandardMaterial("texturePlane", scene);
  86. mon2mat.diffuseTexture = rt2;
  87. mon2.material = mon2mat;
  88. mon2.parent = camera;
  89. mon2.layerMask = 1;
  90. var mon3 = BABYLON.Mesh.CreatePlane("plane", 5, scene);
  91. mon3.position = new BABYLON.Vector3(2.9, -7.8, 25)
  92. // mon3.showBoundingBox = true;
  93. var mon3mat = new BABYLON.StandardMaterial("texturePlane", scene);
  94. mon3mat.diffuseTexture = rt3;
  95. mon3.material = mon3mat;
  96. mon3.parent = camera;
  97. mon3.layerMask = 1;
  98. var mon4 = BABYLON.Mesh.CreatePlane("plane", 5, scene);
  99. mon4.position = new BABYLON.Vector3(8.8, -7.8, 25)
  100. // mon4.showBoundingBox = true;
  101. var mon4mat = new BABYLON.StandardMaterial("texturePlane", scene);
  102. mon4mat.diffuseTexture = rt4;
  103. mon4.material = mon4mat;
  104. mon4.parent = camera;
  105. mon4.layerMask = 1;
  106. var butback = BABYLON.MeshBuilder.CreatePlane("plane", { width: 25, height: 6 }, scene);
  107. butback.position = new BABYLON.Vector3(0, -8.2, 26)
  108. // butback.showBoundingBox = true;
  109. var butbackmat = new BABYLON.StandardMaterial("texturePlane", scene);
  110. butbackmat.diffuseColor = BABYLON.Color3.Black();
  111. butback.material = butbackmat;
  112. butback.parent = camera;
  113. butback.layerMask = 1;
  114. var plane = BABYLON.Mesh.CreatePlane("plane", 120, scene);
  115. plane.position.y = -5;
  116. plane.rotation.x = Math.PI / 2;
  117. var materialSphere1 = new BABYLON.StandardMaterial("texture1", scene);
  118. materialSphere1.wireframe = true;
  119. //Creation of a red material with alpha
  120. var materialSphere2 = new BABYLON.StandardMaterial("texture2", scene);
  121. materialSphere2.diffuseColor = new BABYLON.Color3(1, 0, 0); //Red
  122. materialSphere2.alpha = 0.3;
  123. //Creation of a material with an image texture
  124. var materialSphere3 = new BABYLON.StandardMaterial("texture3", scene);
  125. materialSphere3.diffuseTexture = new BABYLON.Texture("/assets/textures/amiga.jpg", scene);
  126. //Creation of a material with translated texture
  127. var materialSphere4 = new BABYLON.StandardMaterial("texture4", scene);
  128. materialSphere4.diffuseTexture = new BABYLON.Texture("/assets/textures/floor.png", scene);
  129. materialSphere4.diffuseTexture.vOffset = 0.1;//Vertical offset of 10%
  130. materialSphere4.diffuseTexture.uOffset = 0.4;//Horizontal offset of 40%
  131. //Creation of a material with an alpha texture
  132. var materialSphere5 = new BABYLON.StandardMaterial("texture5", scene);
  133. materialSphere5.diffuseTexture = new BABYLON.Texture("/assets/textures/rock.png", scene);
  134. materialSphere5.diffuseTexture.hasAlpha = true;//Has an alpha
  135. //Creation of a material and show all the faces
  136. var materialSphere6 = new BABYLON.StandardMaterial("texture6", scene);
  137. materialSphere6.diffuseTexture = new BABYLON.Texture("/assets/textures/grass.png", scene);
  138. materialSphere6.diffuseTexture.hasAlpha = true;//Have an alpha
  139. materialSphere6.backFaceCulling = false;//Show all the faces of the element
  140. //Creation of a repeated textured material
  141. var materialPlane = new BABYLON.StandardMaterial("texturePlane", scene);
  142. materialPlane.diffuseTexture = new BABYLON.Texture("/assets/textures/mixMap.png", scene);
  143. materialPlane.diffuseTexture.uScale = 5.0;
  144. materialPlane.diffuseTexture.vScale = 5.0;
  145. materialPlane.backFaceCulling = false;
  146. //Apply the materials to meshes
  147. sphere1.material = materialSphere1;
  148. sphere2.material = materialSphere2;
  149. sphere3.material = materialSphere3;
  150. sphere4.material = materialSphere4;
  151. sphere5.material = materialSphere5;
  152. sphere6.material = materialSphere6;
  153. plane.material = materialPlane;
  154. var d = 50;
  155. var cubes = new Array();
  156. for (var i = 0; i < 360; i += 20) {
  157. var r = BABYLON.Tools.ToRadians(i);
  158. var b = BABYLON.Mesh.CreateBox("Box #" + i / 20, 5, scene, false);
  159. b.position.x = Math.cos(r) * d;
  160. b.position.z = Math.sin(r) * d;
  161. cubes.push(b);
  162. }
  163. var canvas = new BABYLON.ScreenSpaceCanvas2D(scene, {
  164. id: "ScreenCanvas",
  165. cachingStrategy: BABYLON.Canvas2D.CACHESTRATEGY_TOPLEVELGROUPS
  166. });
  167. i = 0;
  168. for (var _i = 0, cubes_1 = cubes; _i < cubes_1.length; _i++) {
  169. var cube = cubes_1[_i];
  170. new BABYLON.Group2D({
  171. parent: canvas, id: "GroupTag #" + i, width: 80, height: 40, trackNode: cube, origin: BABYLON.Vector2.Zero(),
  172. children: [
  173. new BABYLON.Rectangle2D({
  174. id: "firstRect", width: 80, height: 26, x: 0, y: 0, origin: BABYLON.Vector2.Zero(), border: "#FFFFFFFF", fill: "#808080FF", children: [
  175. new BABYLON.Text2D(cube.name, { marginAlignment: "h: center, v:center", fontName: "bold 12px Arial" })
  176. ]
  177. })
  178. ]
  179. });
  180. ++i;
  181. }
  182. this.scene = scene;
  183. };
  184. Test.prototype._initGame = function () {
  185. this._createCanvas();
  186. };
  187. /**
  188. * Create the canvas2D
  189. */
  190. Test.prototype._createCanvas = function () {
  191. // object hierarchy g1 -> g2 -> rect
  192. // when cachingStrategy is 1 or 2 - everything is rendered
  193. // when it is 3 - only direct children of g1 are rendered
  194. var canvas = new BABYLON.ScreenSpaceCanvas2D(this.scene,
  195. {
  196. id: "ScreenCanvas",
  197. cachingStrategy: BABYLON.Canvas2D.CACHESTRATEGY_DONTCACHE
  198. }); // 1
  199. // cachingStrategy: BABYLON.Canvas2D.CACHESTRATEGY_TOPLEVELGROUPS }); // 2
  200. // cachingStrategy: BABYLON.Canvas2D.CACHESTRATEGY_ALLGROUPS }); // 3
  201. canvas.createCanvasProfileInfoCanvas();
  202. // parent group
  203. var g1 = new BABYLON.Group2D({
  204. parent: canvas, id: "G1",
  205. x: 50, y: 50, size: new BABYLON.Size(60, 60)
  206. });
  207. // just to see it
  208. let frame1 = new BABYLON.Rectangle2D({
  209. parent: g1,
  210. x: 0, y: 0, size: g1.size, border: "#FF0000FF"
  211. });
  212. // child group
  213. let g2 = new BABYLON.Group2D({
  214. parent: g1, id: "G2",
  215. x: 10, y: 10, size: new BABYLON.Size(40, 40)
  216. });
  217. // just to see it
  218. let frame2 = new BABYLON.Rectangle2D({ parent: g2, x: 0, y: 0, size: g2.size, border: "#0000FFFF" });
  219. let rect = new BABYLON.Rectangle2D({
  220. parent: g2, x: 10, y: 10, size: new BABYLON.Size(20, 20),
  221. fill: "#00FF00FF"
  222. });
  223. return canvas;
  224. };
  225. return Test;
  226. }());