Shape.h
#pragma once
#include "Distinction.h" // < BaseClass >
#include "ExpressionModel.h"
namespace Core
{
ref class XFile;
typedef array< Robotics::PositionVector^ > PositionVectors;
/// 形状
[ System::ComponentModel::TypeConverter( CustomProperty::DisplayNameTypeConverter::typeid ) ] // プロパティ表示の変換
public ref class Shape : public Distinction
{
// Construction --------------------------------------------------------
public:
Shape( Robotics::Size size, Robotics::PositionVector^ relativePosition );
~Shape() { Shape::!Shape(); }
!Shape();
private:
explicit Shape( System::Xml::XmlElement^ element );
// Operation -----------------------------------------------------------
public:
PositionVectors^ GetAbsolutePositionOfVertices( Robotics::Vector^ positionToSet, Robotics::RotationMatrix^ posture );
virtual System::String^ ToString() override;
void CreateFigure( Microsoft::DirectX::Direct3D::Device^ device );
void RenderSimpleFigure( Microsoft::DirectX::Direct3D::Device^ device );
void RenderRealFigure( Microsoft::DirectX::Direct3D::Device^ device );
void SetExpressionMode( ExpressionModel expressionModel );
// static
public:
static Shape^ Create( System::Xml::XmlElement^ element );
// Attribute ===========================================================
private:
Robotics::Size m_size; ///< 大きさ[ m ]
Robotics::PositionVector^ m_relativePosition; ///< 相対位置[ m ] (ローカル座標系)
Microsoft::DirectX::Direct3D::Mesh^ m_simpleFigure; ///< シンプルな形状
XFile^ m_realFigure; ///< リアルな形状
// static
literal int VertexSum = 8; ///< 頂点数
// Property ------------------------------------------------------------
public:
/// 大きさ[ m ]
[ CustomProperty::DisplayName( "大きさ" ) ]
property Robotics::Size Size
{
Robotics::Size get()
{
return m_size;
}
}
/// 相対位置[ m ] (ローカル座標系)
[ CustomProperty::DisplayName( "相対位置" ) ]
property Robotics::PositionVector^ RelativePosition
{
Robotics::PositionVector^ get()
{
return m_relativePosition;
}
}
/// 頂点の相対位置[ m ] (ローカル座標系)
[ System::ComponentModel::Browsable( false ) ] // 参照不可
property PositionVectors^ RelativePositionOfVertices
{
PositionVectors^ get();
}
};
}