| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // This script is the main entry point of the game
- // Require in the event loop handler
- // This is necessary if you want to take advantage of setTimeout/clearTimeout, setInterval/clearInterval, setImmediate/clearImmediate
- require('AtomicEventLoop');
- // it appears that scene needs to be stored in a global so it's not GC'd
- var scene;
- function createScene() {
- // create a 2D scene
- var scene = new Atomic.Scene();
- scene.createComponent("Octree");
- //craete camera node
- var cameraNode = scene.createChild("Camera");
- cameraNode.position = [0.0, 0.0, -10.0];
- //create camera component, and set it to ortho
- var camera = cameraNode.createComponent("Camera");
- camera.orthographic = true;
- camera.orthoSize = Atomic.graphics.height * Atomic.PIXEL_SIZE;
- //create a main viewport
- var viewport = new Atomic.Viewport(scene, camera);
- Atomic.renderer.setViewport(0, viewport);
- return scene;
- }
- // Set up the scene, create the star, and set some scheduled events via setTimeout and setInterval
- function main() {
- // create a 2D scene
- scene = createScene();
- // create the star node.
- var starNode = scene.createChild('Star');
- var star = starNode.createJSComponent('Components/Star.js');
- starNode.position2D = [0, 0];
- // reverse direction after 2 seconds
- setTimeout(function () {
- star.speed = -100;
- }, 2000);
- // start moving the star after 3 seconds
- setTimeout(function () {
- var currentX = 0,
- currentY = 0;
- starNode.position2D = [currentX, currentY];
- // every 5ms second move the star a little bit more in a diagonal
- // NOTE, you are not going to want to do animations this way,...this is just an example. Doing it this way ends up introducing a stutter
- var movementId = setInterval(function () {
- currentX += 0.05;
- currentY += 0.05;
- starNode.position2D = [currentX, currentY];
- // stop moving when we get in position
- if (currentX > 2.5 || currentY > 2.5) {
- clearInterval(movementId);
- // handle at the end of this update cycle
- setImmediate(function() {
- star.speed = 1000;
- });
- // set up something that we are going to immediately cancel so it doesn't happen
- var wonthappen = setImmediate(function() {
- star.speed = 100;
- });
- clearImmediate(wonthappen);
- }
- }, 5);
- }, 3000);
- }
- main();
- // we don't need an update handler here, but if we don't set one up, then main gets GC'd
- module.exports.update = function(timeStep) {};
|