Scene.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. "atomic component";
  2. //Define a Scene component
  3. exports.component = function(self) {
  4. //we are attaching that component to the Scene, so we are sure that ours node is a scene
  5. var scene = self.node;
  6. var time = 12;
  7. self.start = function() {
  8. // Add light flickers
  9. var lightNodes = scene.getChildrenWithComponent("Light", true);
  10. for (var i = 0; i < lightNodes.length; i++) {
  11. lightNodes[i].createJSComponent("Components/LightFlicker.js");
  12. }
  13. // create the procedural sky
  14. var pnode = scene.createChild();
  15. self.procSky = pnode.createComponent("ProcSky");
  16. self.procSky.setDayTime(time);
  17. //Create music
  18. var musicFile = Atomic.cache.getResource("Sound", "Music/StoryTime.ogg");
  19. //Set it looped
  20. musicFile.looped = true;
  21. var musicNode = scene.createChild("MusicNode");
  22. var musicSource = musicNode.createComponent("SoundSource");
  23. musicSource.gain = .5;
  24. musicSource.soundType = Atomic.SOUND_MUSIC;
  25. musicSource.play(musicFile);
  26. //init DPad if its a mobile platform
  27. if(Atomic.platform == "Android" || Atomic.platform == "iOS") {
  28. var DPad = require("DPad");
  29. var dpad = new DPad();
  30. dpad.addAll();
  31. dpad.init();
  32. var jumpView = new Atomic.UIView();
  33. var jumpButton = new Atomic.UIButton();
  34. //unset its skin, because we will use UIImageWidget
  35. jumpButton.skinBg = "";
  36. //create ours jump button image
  37. var jumpButtonImage = new Atomic.UIImageWidget();
  38. //load image
  39. jumpButtonImage.setImage("UI/jumpButton.png");
  40. //resize ours image by 2.2x
  41. var jumpButtonWidth = jumpButtonImage.imageWidth*2.2;
  42. var jumpButtonHeight = jumpButtonImage.imageHeight*2.2;
  43. //calculate position
  44. var posX = Atomic.graphics.width - Atomic.graphics.width/8-jumpButtonWidth/2;
  45. var posY = Atomic.graphics.height - Atomic.graphics.height/4-jumpButtonHeight/2;
  46. //sets jumpButton rect, specify position and end position
  47. jumpView.rect = [posX, posY, posX+jumpButtonWidth, posY+jumpButtonHeight];
  48. jumpButton.rect = [0, 0, jumpButtonWidth, jumpButtonHeight];
  49. //sets jumpButtonImage rect, we specify there only end position
  50. jumpButtonImage.rect = [0, 0, jumpButtonWidth, jumpButtonHeight];
  51. //adds image to jumpButton
  52. jumpButton.addChild(jumpButtonImage);
  53. //adds jumpButton to the dpad view
  54. jumpView.addChild(jumpButton);
  55. //sets jumpButton capturing to false, because we wanna make it multitouchable
  56. jumpButton.setCapturing(false);
  57. //binds jumpButton to KEY_SPACE
  58. Atomic.input.bindButton(jumpButton, Atomic.KEY_SPACE);
  59. }
  60. };
  61. self.update = function(timeStep) {
  62. time += timeStep * .04;
  63. self.procSky.setDayTime(time);
  64. };
  65. };