| 1 |
#ifndef CCUSTOMIZER_H_INCLUDED |
| 2 |
#define CCUSTOMIZER_H_INCLUDED |
| 3 |
|
| 4 |
class CTextureAnimation; |
| 5 |
class CModelPlugin; |
| 6 |
|
| 7 |
// タイプフラグ |
| 8 |
const int CSTM_MISCELLANEOUS = 0x0001; |
| 9 |
const int CSTM_MODELCHANGER = 0x0002; |
| 10 |
const int CSTM_MODELMOVER = 0x0004; |
| 11 |
|
| 12 |
/* |
| 13 |
* ムーバー状態変数 |
| 14 |
*/ |
| 15 |
class CMoverState{ |
| 16 |
private: |
| 17 |
VEC3 m_Pos; // 位置 |
| 18 |
VEC3 m_Dir; // 方向 |
| 19 |
public: |
| 20 |
CMoverState(){ Reset(); } |
| 21 |
void Reset(){ m_Pos = V3ZERO; m_Dir = V3DIR; } |
| 22 |
VEC3 GetPos(){ return m_Pos; } |
| 23 |
VEC3 GetDir(){ return m_Dir; } |
| 24 |
void SetPos(const VEC3 &pos){ m_Pos = pos; } |
| 25 |
void SetDir(const VEC3 &dir){ m_Dir = dir; } |
| 26 |
char *Read(char *); |
| 27 |
void Save(FILE *, char *); |
| 28 |
}; |
| 29 |
|
| 30 |
// 反復子 |
| 31 |
typedef list<CMoverState>::iterator IMoverState; |
| 32 |
typedef list<CMoverState *>::iterator IPMoverState; |
| 33 |
|
| 34 |
//////////////////////////////////////////////////////////////////////////////// |
| 35 |
//////////////////////////////////////////////////////////////////////////////// |
| 36 |
|
| 37 |
/* |
| 38 |
* カスタマイザ基本クラス |
| 39 |
*/ |
| 40 |
class CCustomizerBase{ |
| 41 |
protected: |
| 42 |
// static CNamedObject *ms_CurrentObject; // 現在のオブジェクト |
| 43 |
public: |
| 44 |
// static void SetObject(CNamedObject *obj){ ms_CurrentObject = obj; } |
| 45 |
virtual ~CCustomizerBase(){} |
| 46 |
virtual CCustomizerBase *Duplicate() = 0; |
| 47 |
virtual void LoadDataCustomizer(CModelPlugin *){} |
| 48 |
virtual void SetOffListCustomizer(CNamedObject *){} |
| 49 |
virtual void ResetOffCustomizer(int){} |
| 50 |
virtual int GetTypeFlagCustomizer(){ return CSTM_MISCELLANEOUS; } |
| 51 |
virtual CMesh *GetMeshCustomizer(float *asc){ return NULL; } |
| 52 |
virtual void SetPostureCustomizer(CObject *){} |
| 53 |
virtual void ApplyCustomizer(CMesh *){} |
| 54 |
}; |
| 55 |
|
| 56 |
// 反復子 |
| 57 |
typedef list<CCustomizerBase *>::iterator IPCustomizerBase; |
| 58 |
|
| 59 |
/* |
| 60 |
* カスタマイザコンテナ |
| 61 |
*/ |
| 62 |
class CCustomizerContainer{ |
| 63 |
private: |
| 64 |
CCustomizerBase *m_Customizer; // カスタマイザ |
| 65 |
public: |
| 66 |
CCustomizerContainer(); |
| 67 |
CCustomizerContainer(const CCustomizerContainer &); |
| 68 |
~CCustomizerContainer(); |
| 69 |
char *Read(char *, CModelPlugin *); |
| 70 |
void LoadData(CModelPlugin *mpi){ m_Customizer->LoadDataCustomizer(mpi); } |
| 71 |
void SetOffList(CNamedObject *nobj){ m_Customizer->SetOffListCustomizer(nobj); } |
| 72 |
int GetTypeFlag(){ return m_Customizer->GetTypeFlagCustomizer(); } |
| 73 |
CMesh *GetMesh(float *asc){ return m_Customizer->GetMeshCustomizer(asc); } |
| 74 |
void SetPosture(CObject *obj){ m_Customizer->SetPostureCustomizer(obj); } |
| 75 |
void Apply(CMesh *mesh){ m_Customizer->ApplyCustomizer(mesh); } |
| 76 |
}; |
| 77 |
|
| 78 |
// 反復子 |
| 79 |
typedef list<CCustomizerContainer>::iterator ICustomizerContainer; |
| 80 |
|
| 81 |
#endif |