#ifndef POINT_H
#define POINT_H

// System Header files -----------
#ifdef _WIN32
#include <windows.h>
#endif //win32
#include <gl/gl.h>
#include <gl/glu.h>
#include <vector>

// Program Header Files ----------
#include "font.h"
#include "vector.h"

namespace ngObjects
{
	class Point
	{
		public:
			Point(GLfloat radius, vector3D position, GLfloat red, GLfloat green, GLfloat blue);
			void addNeighbor(int pointNumber){neighbors.push_back(pointNumber);}
			void addConnection(int edgeNumber){connections.push_back(edgeNumber);}
			int getDistance(){return distance;}
			std::vector <int> getNeighbors(){return neighbors;}
			std::vector <int> getConnections(){return connections;}
			bool getMarker(){return marked;}
			int getPath(){return path;}
			void setDistance(int d){distance = d;}
			void setMarker(bool mark){marked = mark;}
			void setColor(GLfloat r, GLfloat g, GLfloat b);
			void setLabel(std::string lbl){label = lbl;}
			void setPosition(vector3D pos){position = pos;}
			void setPath(int p){path = p;}
			void render(GLfloat fontAngle);
			void render();
			std::string getLabel(){return label;}
			vector3D getPosition(){ return position;};
		private:
			bool marked;
			int distance, path;
			GLfloat radius;
			std::string label;
			std::vector <int> neighbors;
			std::vector <int> connections;
			GLUquadricObj *quadratic;
			vector3D position;
			Font font;
			glObjects::glMaterial material;
	};
}

#endif // POINT_H
