| 1 |
#ifndef CCUSTOMIZERMOVER_H_INCLUDED |
| 2 |
#define CCUSTOMIZERMOVER_H_INCLUDED |
| 3 |
|
| 4 |
#include "CCustomizer.h" |
| 5 |
|
| 6 |
/* |
| 7 |
* 移動子基本クラス |
| 8 |
*/ |
| 9 |
class CMoverBase: public CCustomizerBase{ |
| 10 |
private: |
| 11 |
CMoverState **m_State; // 状態変数 |
| 12 |
CMoverState m_PreviewState; // プレビュー用状態変数 |
| 13 |
public: |
| 14 |
CMoverBase(){ m_State = NULL; } |
| 15 |
virtual CCustomizerBase *Duplicate() = 0; |
| 16 |
virtual void SetOffListCustomizer(CNamedObject *){} |
| 17 |
virtual void ResetOffCustomizer(int){} |
| 18 |
int GetTypeFlagCustomizer(){ return CSTM_MODELMOVER; } |
| 19 |
virtual void SetPostureCustomizer(CObject *) = 0; |
| 20 |
void InitMover(CModelPlugin *); |
| 21 |
CMoverState *GetState(){ return *m_State ? *m_State : &m_PreviewState; } |
| 22 |
}; |
| 23 |
|
| 24 |
/* |
| 25 |
* 移動子基本クラス |
| 26 |
*/ |
| 27 |
class CDynamicMoverBase: public CMoverBase{ |
| 28 |
protected: |
| 29 |
int m_ApplyFlag; // 適用フラグ |
| 30 |
public: |
| 31 |
virtual CCustomizerBase *Duplicate() = 0; |
| 32 |
virtual void SetOffListCustomizer(CNamedObject *); |
| 33 |
void ResetOffCustomizer(int); |
| 34 |
virtual void SetPostureCustomizer(CObject *) = 0; |
| 35 |
}; |
| 36 |
|
| 37 |
/* |
| 38 |
* 静的移動子基本クラス |
| 39 |
*/ |
| 40 |
class CStaticMoverBase: public CDynamicMoverBase{ |
| 41 |
protected: |
| 42 |
float m_AnimationTime[6]; // アニメーション時間 |
| 43 |
public: |
| 44 |
virtual CCustomizerBase *Duplicate() = 0; |
| 45 |
char *ReadTimingInfo(char *); |
| 46 |
virtual void SetPostureCustomizer(CObject *) = 0; |
| 47 |
float ProcDelay(); |
| 48 |
}; |
| 49 |
|
| 50 |
//////////////////////////////////////////////////////////////////////////////// |
| 51 |
//////////////////////////////////////////////////////////////////////////////// |
| 52 |
|
| 53 |
/* |
| 54 |
* 静的回転子 |
| 55 |
*/ |
| 56 |
class CStaticRotator: public CStaticMoverBase{ |
| 57 |
private: |
| 58 |
float m_RotationAngle; // 回転角度 |
| 59 |
VEC3 m_RotationAxis; // 回転軸 |
| 60 |
public: |
| 61 |
CCustomizerBase *Duplicate(){ return new CStaticRotator(*this); } |
| 62 |
char *Read(char *, CModelPlugin *); |
| 63 |
void SetPostureCustomizer(CObject *); |
| 64 |
}; |
| 65 |
|
| 66 |
/* |
| 67 |
* 静的移動子 |
| 68 |
*/ |
| 69 |
class CStaticMover: public CStaticMoverBase{ |
| 70 |
private: |
| 71 |
VEC3 m_Displacement; // 変位 |
| 72 |
public: |
| 73 |
CCustomizerBase *Duplicate(){ return new CStaticMover(*this); } |
| 74 |
char *Read(char *, CModelPlugin *); |
| 75 |
void SetPostureCustomizer(CObject *); |
| 76 |
}; |
| 77 |
|
| 78 |
/* |
| 79 |
* 動的回転子 |
| 80 |
*/ |
| 81 |
class CDynamicRotator: public CDynamicMoverBase{ |
| 82 |
private: |
| 83 |
float m_RotationSpeed; // 回転角度 |
| 84 |
float m_Acceleration; // 加速度 |
| 85 |
float m_Deceleration; // 減速度 |
| 86 |
VEC3 m_RotationAxis; // 回転軸 |
| 87 |
public: |
| 88 |
CCustomizerBase *Duplicate(){ return new CDynamicRotator(*this); } |
| 89 |
char *Read(char *, CModelPlugin *); |
| 90 |
void SetPostureCustomizer(CObject *); |
| 91 |
}; |
| 92 |
|
| 93 |
/* |
| 94 |
* 風トラッカ |
| 95 |
*/ |
| 96 |
class CWindTracker: public CMoverBase{ |
| 97 |
private: |
| 98 |
float m_TrackSpeed; // 追跡速度 |
| 99 |
bool m_FixAxisFlag; // 軸固定フラグ |
| 100 |
VEC3 m_FixAxis; // 固定軸 |
| 101 |
public: |
| 102 |
CCustomizerBase *Duplicate(){ return new CWindTracker(*this); } |
| 103 |
char *Read(char *, CModelPlugin *); |
| 104 |
void SetPostureCustomizer(CObject *); |
| 105 |
}; |
| 106 |
|
| 107 |
/* |
| 108 |
* 風車 |
| 109 |
*/ |
| 110 |
class CWindmill: public CMoverBase{ |
| 111 |
private: |
| 112 |
int m_Symmetric; // 対称カウント |
| 113 |
float m_RotationSpeed; // 回転速度 |
| 114 |
float m_MaxRotation; // フレーム当たり回転量最大値 |
| 115 |
bool m_Directional; // 方向性 |
| 116 |
VEC3 m_RotationAxis; // 回転軸 |
| 117 |
public: |
| 118 |
CCustomizerBase *Duplicate(){ return new CWindmill(*this); } |
| 119 |
char *Read(char *, CModelPlugin *); |
| 120 |
void SetPostureCustomizer(CObject *); |
| 121 |
}; |
| 122 |
|
| 123 |
/* |
| 124 |
* アナログ時計 |
| 125 |
*/ |
| 126 |
class CAnalogClock: public CCustomizerBase{ |
| 127 |
private: |
| 128 |
int m_HandType; // 針タイプ |
| 129 |
public: |
| 130 |
CCustomizerBase *Duplicate(){ return new CAnalogClock(*this); } |
| 131 |
char *Read(char *); |
| 132 |
int GetTypeFlagCustomizer(){ return CSTM_MODELMOVER; } |
| 133 |
void SetPostureCustomizer(CObject *); |
| 134 |
}; |
| 135 |
|
| 136 |
#endif |