#ifndef Vertex_hpp
#define Vertex_hpp

#include <math/Vector.hpp>
#include "Color.hpp"

class Vertex : public Vector, public Color {
public:
  Vertex(
    const double x = 0.0,
    const double y = 0.0,
    const double z = 0.0,
    const double r = 1.0,
    const double g = 1.0,
    const double b = 1.0
  );
  Vertex(
    const Vector& v,
    const Color& c = Color::White
  );
  virtual ~Vertex() = default;
  void render() const;
  Vertex& operator = (const Vector& v);
  Vertex& operator += (const Vector& v);
  Vertex& operator -= (const Vector& v);
  Vertex& operator *= (const Matrix& m);
  Vertex& operator = (const Color& c);
};

#endif
