// for playback hack? should refactor splat_to_grid... public void InjectSample(Vector3f pt, Colorf color) { Vector3f camPos = Camera.main.gameObject.transform.position; if (pt.Distance(camPos) < MaxSampleDistanceM) { grid.AddParticle(pt, color); } }
public override void _Process(float delta) { if (mouseOver && Input.IsActionPressed("LeftClick")) { Vector2 mousePosition = GetViewport().GetMousePosition(); Vector2 gridPosition = WorldToMap(mousePosition); for (int x = (int)gridPosition.x - size / 2; x <= (int)gridPosition.x + size / 2; ++x) { for (int y = (int)gridPosition.y - size / 2; y <= (int)gridPosition.y + size / 2; ++y) { Particle p; if (gen) { Generator g = new Generator(); g.type = particle; p = (Particle)g; } else { p = Particle.New(particle); } p.newlyCreated = false; grid.AddParticle(p, new Vector2(x, y)); } } } else if (mouseOver && Input.IsActionPressed("RightClick")) { Vector2 mousePosition = GetViewport().GetMousePosition(); Vector2 gridPosition = WorldToMap(mousePosition); for (int x = (int)gridPosition.x - size / 2; x <= (int)gridPosition.x + size / 2; ++x) { for (int y = (int)gridPosition.y - size / 2; y <= (int)gridPosition.y + size / 2; ++y) { grid.RemoveParticle(new Vector2(x, y)); } } } if (paused == false || step) { grid.Update(); step = false; } GetGridUpdate(grid.updateLocations); grid.Refresh(); }