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); } }