#pragma once
#include "../../stdafx.h"
#include "../glLibTexturing/glLibTexturing.h"
#include "glLibObject.h"

namespace glLib { namespace Object {

class object_plane : public object {
	public:
	private:
	public:
		object_plane(      float   size, const float normal[], const ::glLib::Texture::texture_2D*   texture,             float uv_tile=1.0,       float uv_delta=0.0);
		object_plane(      float   size, const float normal[], const ::glLib::Texture::texture_2D*   texture,             float uv_tile,     const float uv_delta[]  );
		object_plane(      float   size, const float normal[], const ::glLib::Texture::texture_2D*   texture,       const float uv_tile[],         float uv_delta=0.0);
		object_plane(      float   size, const float normal[], const ::glLib::Texture::texture_2D*   texture,       const float uv_tile[],   const float uv_delta[]  );
		object_plane(      float   size, const float normal[],                                bool texturing=false,       float uv_tile=1.0,       float uv_delta=0.0);
		object_plane(      float   size, const float normal[],                                bool texturing,             float uv_tile,     const float uv_delta[]  );
		object_plane(      float   size, const float normal[],                                bool texturing,       const float uv_tile[],         float uv_delta=0.0);
		object_plane(      float   size, const float normal[],                                bool texturing,       const float uv_tile[],   const float uv_delta[]  );
		object_plane(const float size[], const float normal[], const ::glLib::Texture::texture_2D*   texture,             float uv_tile=1.0,       float uv_delta=0.0);
		object_plane(const float size[], const float normal[], const ::glLib::Texture::texture_2D*   texture,             float uv_tile,     const float uv_delta[]);
		object_plane(const float size[], const float normal[], const ::glLib::Texture::texture_2D*   texture,       const float uv_tile[],         float uv_delta=0.0);
		object_plane(const float size[], const float normal[], const ::glLib::Texture::texture_2D*   texture,       const float uv_tile[],   const float uv_delta[]);
		object_plane(const float size[], const float normal[],                                bool texturing=false,       float uv_tile=1.0,       float uv_delta=0.0);
		object_plane(const float size[], const float normal[],                                bool texturing,             float uv_tile,     const float uv_delta[]);
		object_plane(const float size[], const float normal[],                                bool texturing,       const float uv_tile[],         float uv_delta=0.0);
		object_plane(const float size[], const float normal[],                                bool texturing,       const float uv_tile[],   const float uv_delta[]);
	private:
		//TODO: maybe make this so that uv_tile[] is uv_tile_x/uv_tile_y, etc. for efficiency.
		void glLibInternal_make(const float size[], const float normal[], bool texturing, const ::glLib::Texture::texture_2D* texture, const float uv_tile[], const float uv_delta[]);
};

};};