#ifndef CYLINDER_H
#define CYLINDER_H

#include "shape.h"

namespace CBK
{
	namespace Shapes
	{
		class Cylinder : public Mesh
		{
		public:
			//Create a new shape
			Cylinder(const MeshParam& params, const std::string& name = "");
			Cylinder(const MeshParam& params, const FLOAT Radius1, const FLOAT Radius2, const FLOAT Length, const UINT Slices, const UINT Stacks, const std::string& name = "");

			//Clean up
			virtual ~Cylinder(void);

			//Copies the shape
			Cylinder(const Cylinder& other);
			Cylinder& operator=(const Cylinder& other);

			//Allow the size to be changed. Must call create afterwards
			Cylinder& resize(const FLOAT Radius1, const FLOAT Radius2, const FLOAT Length, const UINT Slices, const UINT Stacks);

			virtual item& load(const std::string& name, const MeshParam& params);

		protected:
			FLOAT Radius1;
			FLOAT Radius2;
			FLOAT Length;
			UINT Slices;
			UINT Stacks;

		private:
		};
	}
}

#endif //CYLINDER_H