//
// Created by johan on 2025-01-25.
//

#ifndef SIMULATION_H
#define SIMULATION_H
namespace simulation
{
    enum Fluid
    {
        VACUUM = 0,
        WATER,
        MERCURY
    };

    struct SimulationGrid
    {
        unsigned int* in;
        unsigned int* out;
        unsigned char x_max;
        unsigned char y_max;
        unsigned char z_max;
    };

    void step(
        double millisecondsSinceLastStep,
        SimulationGrid* grid
    );

    int getCellOffset(
        unsigned char x,
        unsigned char y,
        unsigned char z,
        SimulationGrid* grid);

    void prepareForNextStep(SimulationGrid* grid);
}

#endif //SIMULATION_H