Spawner.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. 'atomic component';
  2. var viewport = Atomic.renderer.getViewport(0);
  3. //cache resource
  4. var particleEffect = Atomic.cache.getResource("ParticleEffect2D", "Particles/particle.pex");
  5. exports.component = function(self) {
  6. self.start = function() {
  7. //touch control
  8. self.subscribeToEvent(Atomic.TouchMoveEvent(function(event) {
  9. createButterflyNode([event.x, event.y]);
  10. }));
  11. self.subscribeToEvent(Atomic.MultiGestureEvent(function(event) {
  12. if(event.numFingers >= 2) {
  13. createButterflyParticle([event.centerX, event.centerY]);
  14. }
  15. }));
  16. };
  17. self.update = function(timeStep) {
  18. //if Left mouse button is pressed
  19. if (Atomic.input.getMouseButtonDown(Atomic.MOUSEB_LEFT)) {
  20. var mousePos = Atomic.input.getMousePosition();
  21. createButterflyNode(mousePos);
  22. //if Right mouse button WAS pressed once
  23. } else if (Atomic.input.getMouseButtonPress(Atomic.MOUSEB_RIGHT)) {
  24. var mousePos = Atomic.input.getMousePosition();
  25. createButterflyParticle(mousePos);
  26. }
  27. };
  28. function createButterflyNode(pos) {
  29. //project mouse screen position to the world position
  30. pos = viewport.screenToWorldPoint(pos[0], pos[1], 0);
  31. //create butterfly node
  32. var butterfly = self.scene.createChild("Butterfly");
  33. butterfly.position2D = pos;
  34. butterfly.createJSComponent("Components/Butterfly.js");
  35. }
  36. function createButterflyParticle(pos) {
  37. //create particle emitter
  38. var emitter = self.scene.createChild("ButterflyEmitter");
  39. //project mouse screen position to the world position
  40. pos = viewport.screenToWorldPoint(pos[0], pos[1], 0);
  41. emitter.position2D = pos;
  42. var pex = emitter.createComponent("ParticleEmitter2D");
  43. pex.effect = particleEffect;
  44. }
  45. };