Scene.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. var game = Atomic.game;
  2. var node = self.node;
  3. var world;
  4. var drawDebug = false;
  5. var debugRenderer;
  6. function createPhysics() {
  7. var scene = game.scene;
  8. world = scene.createComponent("PhysicsWorld");
  9. // create the grid plane
  10. var planeNode = scene.createChild("Plane");
  11. planeNode.scale = [100.0, 1.0, 100.0];
  12. planeNode.position = [0, -.5, 0];
  13. var planeObject = planeNode.createComponent("StaticModel");
  14. var model = game.cache.getResource("Model", "Models/Box.mdl");
  15. var material = game.cache.getResource("Material", "Materials/BlueGrid.xml");
  16. planeObject.model = model;
  17. planeObject.material = material;
  18. planeNode.createComponent("RigidBody");
  19. var shape = planeNode.createComponent("CollisionShape");
  20. shape.setBox([1, 1, 1]);
  21. CreateCrateStack(10, 10, 10);
  22. CreateCrateStack(-10, 10, 10);
  23. CreateCrateStack(10, -10, 10);
  24. CreateCrateStack(-10, -10, 10);
  25. }
  26. function start() {
  27. var scene = game.scene;
  28. // debug renderer for showing physics
  29. if (drawDebug)
  30. debugRenderer = scene.createComponent("DebugRenderer");
  31. // zone
  32. var zoneNode = scene.createChild("Zone")
  33. var zone = zoneNode.createComponent("Zone");
  34. zone.boundingBox = [-1000, -1000, -1000, 1000, 1000, 1000];
  35. zone.ambientColor = [0.15, 0.15, 0.15];
  36. zone.fogColor = [0.5, 0.5, 0.7, 1.0];
  37. zone.fogStart = 10;
  38. zone.fogEnd = 100;
  39. var lightNode = scene.createChild("Directional Light");
  40. lightNode.direction = [0.6, -1.0, 0.8];
  41. var light = lightNode.createComponent("Light")
  42. light.lightType = Atomic.LIGHT_DIRECTIONAL;
  43. light.castShadows = true;
  44. // If we're running on android tweak the shadows
  45. if (Atomic.platform == "Android") {
  46. light.setShadowCascade(20.0, 50.0, 200.0, 0.0, 0.9);
  47. light.shadowIntensity = 0.33;
  48. } else {
  49. light.setShadowCascade(10.0, 50.0, 200.0, 0.0, 0.8);
  50. }
  51. light.setShadowBias(0.00025, 0.5);
  52. light.specularIntensity = 8;
  53. createPhysics();
  54. // add the roboman
  55. var roboman = node.createChild("TheRoboMan");
  56. roboman.createJSComponent("RoboMan");
  57. roboman.position = [0, 0, 0];
  58. }
  59. function postRenderUpdate() {
  60. world.drawDebugGeometry(debugRenderer, true);
  61. }
  62. // we need an update or it doesn't run the start, fix in JSVM
  63. function update(timeStep) {
  64. if (drawDebug)
  65. self.listenToEvent(null, "PostRenderUpdate", postRenderUpdate);
  66. }