#pragma once

#include "Mix/Tool/CLR/Core/Dynamics/Axis.h"
#include "Mix/Tool/CLR/Core/Dynamics/Shape.h"

namespace Mix{ namespace Tool{ namespace Win32{ namespace Dynamics{
	class CapsuleShape;
}}}}

namespace Mix{ namespace Tool{ namespace Dynamics{

	public ref class CapsuleShape : public Mix::Tool::Dynamics::Shape
	{
	internal:
		Mix::Tool::Win32::Dynamics::CapsuleShape* impl;
		bool m_bInternalImpl;

	private:
		Mix::Tool::Dynamics::Axis m_Axis;

	internal:
		CapsuleShape( Mix::Tool::Win32::Dynamics::CapsuleShape* _impl );
		CapsuleShape( const D3DXVECTOR3& halfExtents );

	public:
		CapsuleShape( Mix::Tool::Dynamics::Axis axis, float radius, float length );
		~CapsuleShape( void );

		property Mix::Tool::Dynamics::Axis Axis
		{
			Mix::Tool::Dynamics::Axis get( void );
		}

		property float Radius
		{
			float get( void );
		}

		property float Length
		{
			float get( void );
		}

	internal:
		property Mix::Tool::Win32::Dynamics::Shape* Impl
		{
			virtual Mix::Tool::Win32::Dynamics::Shape* get( void ) override;
		}
	};

}}}
