#pragma once

#include "Mix/Tool/CLR/Core/Dynamics/Design/ISimulator.h"
#include "Mix/Tool/CLR/Core/Dynamics/Design/Basic.h"

namespace Mix{ namespace Tool{ namespace Win32{ namespace Dynamics{ namespace Design{
	class Actor;
}}}}}

namespace Mix{ namespace Tool{ namespace Dynamics{
	ref class World;
	ref class KinematicCharacter;
}}}

namespace Mix{ namespace Tool{ namespace Dynamics{ namespace Design{

	public ref class Actor : public Mix::Tool::Dynamics::Design::Basic, public Mix::Tool::Dynamics::Design::ISimulator
	{
	private:
		Mix::Tool::Win32::Dynamics::Design::Actor* implActor;
		Mix::Tool::Dynamics::KinematicCharacter^ m_KinematicCharacter;
		Mix::Tool::Dynamics::World^ m_World;

	internal:
		Actor( Mix::Tool::Win32::Dynamics::Design::Actor* _implActor );
		virtual ~Actor( void );

	public:
		property Mix::Tool::Dynamics::KinematicCharacter^ KinematicCharacter
		{
			Mix::Tool::Dynamics::KinematicCharacter^ get( void );
			void set( Mix::Tool::Dynamics::KinematicCharacter^ value );
		}

		property Mix::Tool::Math::Vector^ KinematicCharacterCenterPosition
		{
			Mix::Tool::Math::Vector^ get( void );
			void set( Mix::Tool::Math::Vector^ value );
		}

	public:
		property Mix::Tool::Dynamics::World^ World
		{
			virtual Mix::Tool::Dynamics::World^ get( void );
			virtual void set( Mix::Tool::Dynamics::World^ value );
		}

		property Mix::Tool::Dynamics::Design::SimulationMode SimulationMode
		{
			virtual Mix::Tool::Dynamics::Design::SimulationMode get( void );
			virtual void set( Mix::Tool::Dynamics::Design::SimulationMode value );
		}
	};

}}}}
