// 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);
        }
    }
Пример #2
0
    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();
    }