#pragma once
#include <vector>
#include "gp_Pnt.hxx"

/* Supported lattice types */
enum LatticeType
{
	SimpleUniform = 0,
	SimpleNonuniform,
	GenericUniform,
	GenericNonuniform,
	ProjectedCartesian,
};

/* Data structs for each type of supported lattice */
struct SimpleLatticeData
{
	size_t nx = 0, ny = 0, nz = 0;
	double dx = 0.0, dy = 0.0, dz = 0.0;
	std::vector<double> radii;
};

struct GenericLatticeData
{
	double dx = 0.0, dy = 0.0, dz = 0.0;
	std::vector<double> radii;
	std::vector<gp_Pnt> positions;
};

struct ProjectedLatticeData
{
	size_t nx = 0, ny = 0, nz = 0;
	double dx = 0.0, dy = 0.0, dz = 0.0;
	std::vector<double> radii;
	std::vector<gp_Pnt> positions;
};