Scene.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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.25;
  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. self.procSky.autoUpdate = false;
  18. //Create music
  19. var musicFile = Atomic.cache.getResource("Sound", "Music/StoryTime.ogg");
  20. //Set it looped
  21. musicFile.looped = true;
  22. var musicNode = scene.createChild("MusicNode");
  23. var musicSource = musicNode.createComponent("SoundSource");
  24. musicSource.gain = .5;
  25. musicSource.soundType = Atomic.SOUND_MUSIC;
  26. musicSource.play(musicFile);
  27. //init DPad if its a mobile platform
  28. if(Atomic.platform == "Android" || Atomic.platform == "iOS") {
  29. var DPad = require("DPad");
  30. var dpad = new DPad();
  31. dpad.addAll();
  32. dpad.init();
  33. var jumpView = new Atomic.UIView();
  34. var jumpButton = new Atomic.UIButton();
  35. //unset its skin, because we will use UIImageWidget
  36. jumpButton.skinBg = "";
  37. //create ours jump button image
  38. var jumpButtonImage = new Atomic.UIImageWidget();
  39. //load image
  40. jumpButtonImage.setImage("UI/jumpButton.png");
  41. //resize ours image by 2.2x
  42. var jumpButtonWidth = jumpButtonImage.imageWidth*2.2;
  43. var jumpButtonHeight = jumpButtonImage.imageHeight*2.2;
  44. //calculate position
  45. var posX = Atomic.graphics.width - Atomic.graphics.width/8-jumpButtonWidth/2;
  46. var posY = Atomic.graphics.height - Atomic.graphics.height/4-jumpButtonHeight/2;
  47. //sets jumpButton rect, specify position and end position
  48. jumpView.rect = [posX, posY, posX+jumpButtonWidth, posY+jumpButtonHeight];
  49. jumpButton.rect = [0, 0, jumpButtonWidth, jumpButtonHeight];
  50. //sets jumpButtonImage rect, we specify there only end position
  51. jumpButtonImage.rect = [0, 0, jumpButtonWidth, jumpButtonHeight];
  52. //adds image to jumpButton
  53. jumpButton.addChild(jumpButtonImage);
  54. //adds jumpButton to the dpad view
  55. jumpView.addChild(jumpButton);
  56. //sets jumpButton capturing to false, because we wanna make it multitouchable
  57. jumpButton.setCapturing(false);
  58. //binds jumpButton to KEY_SPACE
  59. Atomic.input.bindButton(jumpButton, Atomic.KEY_SPACE);
  60. }
  61. };
  62. self.update = function(timeStep) {
  63. if (Atomic.input.getKeyDown(Atomic.KEY_LEFTBRACKET)) {
  64. time -= timeStep * 0.1;
  65. self.procSky.setDayTime(time);
  66. } else if (Atomic.input.getKeyDown(Atomic.KEY_RIGHTBRACKET)) {
  67. time += timeStep * 0.1;
  68. self.procSky.setDayTime(time);
  69. }
  70. };
  71. };