Spawner.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using AtomicEngine;
  3. public class Spawner : CSComponent
  4. {
  5. void Start()
  6. {
  7. viewport = AtomicNET.GetSubsystem<Renderer>().GetViewport(0);
  8. }
  9. void Update(float timeStep)
  10. {
  11. var input = AtomicNET.GetSubsystem<Input>();
  12. if (input.GetMouseButtonDown(Constants.MOUSEB_LEFT))
  13. {
  14. var mousePos = input.GetMousePosition();
  15. for (var i = 0; i < 10; i++)
  16. createButterflyNode(new Vector2(mousePos.X, mousePos.Y));
  17. }
  18. else if (input.GetMouseButtonDown(Constants.MOUSEB_RIGHT))
  19. {
  20. var mousePos = input.GetMousePosition();
  21. createButterflyParticle(new Vector2(mousePos.X, mousePos.Y));
  22. }
  23. }
  24. void createButterflyNode(Vector2 pos)
  25. {
  26. //project mouse screen position to the world position
  27. var screenPos = viewport.ScreenToWorldPoint((int) pos.X, (int) pos.Y, 0);
  28. //create butterfly node
  29. var node = Scene.CreateChild("Butterfly");
  30. node.Position2D = new Vector2(screenPos.X, screenPos.Y);
  31. var butterfly = node.CreateComponent<Butterfly>();
  32. }
  33. void createButterflyParticle(Vector2 pos)
  34. {
  35. //project mouse screen position to the world position
  36. var screenPos = viewport.ScreenToWorldPoint((int) pos.X, (int) pos.Y, 0);
  37. //create particle emitter
  38. var emitter = Scene.CreateChild("ButterflyEmitter");
  39. emitter.Position2D = new Vector2(screenPos.X, screenPos.Y);
  40. var pex = emitter.CreateComponent<ParticleEmitter2D>();
  41. pex.SetEffect(GetSubsystem<ResourceCache>().GetResource<ParticleEffect2D> ("Particles/particle.pex"));
  42. }
  43. Viewport viewport;
  44. }