#include <vector>
#include <array>

#include "Vector3D.hpp"

using std::vector, std::array, std::initializer_list;

namespace _3D
{
  enum class Axes {
    X,
    Y,
    Z
  };

  struct Triangle {
    Triangle(initializer_list<initializer_list<float>> pointsInit)
    {
      auto it = pointsInit.begin();

      points[0] = Vector3D<float>(*it++);
      points[1] = Vector3D<float>(*it++);
      points[2] = Vector3D<float>(*it);
    }

    array<Vector3D<float>, 3> points;

    bool infill {false};
    bool outline {true};
  };

  struct Object {
    Object(initializer_list<initializer_list<initializer_list<float>>> trianglesInit)
    {
      for(const auto &triangleInit : trianglesInit)
      {
        triangles.push_back(Triangle(triangleInit));
      }
    }

    vector<Triangle> triangles;
  };
}