public ParticleSystem addParticles(string name, Vector3 position, Vector3 direction, Color color,
            float scaleModifier = 1.0f, int nParticlesModifier = 0, float lifetimeModifier = 0.0f)
        {
            if (!baseParticleSystems.ContainsKey(name)) return null;

            ParticleSystem ps = new ParticleSystem();
            ps.initialize(name, position, direction, color, scaleModifier, nParticlesModifier, lifetimeModifier);
            particleSystems.Add(ps);
            return ps;
        }
        public override void update()
        {
            base.update();

            if (justPressedLeftButton() && isPosInScreen(gameScreenPos)) //&& (Math.Abs(lastMouseState.X - mouseState.X) > 2 || Math.Abs(lastMouseState.Y - mouseState.Y) > 2))
            {
                selected = null;
                foreach (ParticleSystem particle in ParticleManager.Instance.getParticles())
                {
                    float delta = (getMousePosInZ(particle.position.Z) - particle.position).Length();
                    if (delta < 25 && (selected == null || delta < selectedDelta))
                    {
                        selected = particle;
                        selectedDelta = delta;
                    }
                }

                if (selected != null)
                {
                    MyEditor.Instance.effectDirectionX.Text = selected.direction.X.toString();
                    MyEditor.Instance.effectDirectionY.Text = selected.direction.Y.toString();
                    MyEditor.Instance.effectDirectionZ.Text = selected.direction.Z.toString();
                    MyEditor.Instance.effectColorR.Text = selected.data.color.R.ToString();
                    MyEditor.Instance.effectColorG.Text = selected.data.color.G.ToString();
                    MyEditor.Instance.effectColorB.Text = selected.data.color.B.ToString();

                    MyEditor.Instance.effectScale.Text = "0";
                    MyEditor.Instance.effectNumParticles.Text = "0";
                    MyEditor.Instance.effectLifetime.Text = "0";
                }
            }
            else if(selected != null && mouseState.LeftButton == ButtonState.Pressed)
            {
                Vector2 current = new Vector2(mouseState.X, mouseState.Y);
                Vector2 last = new Vector2(lastMouseState.X, lastMouseState.Y);
                Vector3 currentZ = EditorHelper.Instance.getMousePosInZ(current, selected.position.Z);
                Vector3 lastZ = EditorHelper.Instance.getMousePosInZ(last, selected.position.Z);

                selected.position += (currentZ - lastZ);
            }
            else if (selected != null && mouseState.RightButton == ButtonState.Pressed)
            {
                selected.position += new Vector3(0, 0, -(mouseState.Y - lastMouseState.Y));
            }
            else if(selected != null && justPressedKey(Keys.Delete))
            {
                ParticleManager.Instance.getParticles().Remove(selected);
            }
        }