package electrosphere.server.fluid.simulator;

import electrosphere.server.fluid.manager.ServerFluidChunk;
import electrosphere.server.terrain.manager.ServerTerrainChunk;

/**
 * A system capable of simulating a server fluid chunk for a single frame
 */
public interface ServerFluidSimulator {
    
    /**
     * Simulates the chunk for single step
     * @param fluidChunk The fluid chunk
     * @param terrainChunk The terrain chunk
     * @param worldX the world x coordinate
     * @param worldY the world y coordinate
     * @param worldZ the world z coordinate
     * @return True if the server data cell should update all players connected to it with new values, false otherwise
     */
    public boolean simulate(ServerFluidChunk fluidChunk, ServerTerrainChunk terrainChunk, int worldX, int worldY, int worldZ);

}
