00001 00011 #ifndef __TVU_HUMAN_ACTION_H__ 00012 #define __TVU_HUMAN_ACTION_H__ 00013 00014 #ifndef __TVU_TYPESDEF_H__ 00015 #include "tvu_typesdef.h" 00016 #endif 00017 00018 #ifndef __TVU_VISU3D_APPLICATION_H__ 00019 #include "tvu_visu3d.application.h" 00020 #endif 00021 00022 // 00023 class CTScenario; 00024 /*========================================================*/ 00026 #define CLASSNAME_HUMAN_ACTION "HumanBehavior" 00027 #define CLASSNAME_HUMAN_ACTION_ID 10300 00028 00029 #define ACTIONNAME_WALKING "human_walking" 00030 #define ACTIONNAME_RUNNING "human_running" 00031 #define ACTIONNAME_RIGHTHANDUP "human_handup" 00032 00033 #define ENAME_ACTION_PARTNAME "part_name" 00034 #define ENAME_ACTION_STATICPARTNAME "static_part_name" 00035 #define ENAME_ACTION_STARTTIME "start_time" 00036 #define ENAME_ACTION_STOPTIME "stop_time" 00037 #define ENAME_ACTION_ANGLES "angles" 00038 #define ENAME_ACTION_LOOP "loop" 00039 #define ENAME_ACTION_CHILDREN "sub_behavior" 00040 #define ENAME_ACTION_FROM "from" 00041 #define ENAME_ACTION_TO "to" 00042 00043 class CTBodyPart; 00044 /*--------------------------------------------------------*/ 00046 class CTHumanAction : public CTReferableObject 00047 { 00048 public: 00050 CTHumanAction(); 00051 virtual ~CTHumanAction() { Delete(); }; 00052 DEFINE_ID_FUNCTIONS(CTHumanAction, CTReferableObject, CLASSNAME_HUMAN_ACTION_ID, CLASSNAME_HUMAN_ACTION) 00053 public: 00055 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE); 00057 virtual TBOOL BuildObject(); 00059 virtual TBOOL IsWellConstructed(); 00061 virtual TBOOL ReferTo(CTReferableObject* lpObject); 00062 public: 00064 virtual TBOOL Init(); 00065 virtual TBOOL Expand(double r); 00066 virtual TINT GetRelatedTime(TINT tTime); 00067 virtual TBOOL IsExecuting(TINT tTime); 00068 virtual CTHumanAction* GetStaticPartAction(TINT tTime); 00069 virtual void SetSpeed(TINT Speed); 00070 public: 00072 CTHumanAction* GetSubAction(TLPCSTR lpName); 00073 public: 00075 virtual void Delete(); 00076 public: 00078 virtual CTHumanAction& operator = (CTHumanAction& AnAction); 00079 public: 00082 CTList GetChildren(){ return m_Children; }; 00083 CTString& GetPartName() { return m_PartName; }; 00084 CTString& GetStaticPartName() { return m_StaticPartName; }; 00085 CTInt& GetStartTime() { return m_StartTime; }; 00086 CTInt& GetStopTime() { return m_StopTime; }; 00087 CTAngles& GetAngles() { return m_Angles; }; 00088 CTInt& GetDuration() { return m_Duration; } 00089 CTInt& GetLoop() { return m_Loop; }; 00090 CTLocation& GetLocationFrom() { return m_From; }; 00091 CTLocation& GetLocationTo() { return m_To; }; 00092 CTScenario* SetScenario(CTScenario* pScenario) { return m_pScenario = pScenario; }; 00093 CTScenario* GetScenario() { return m_pScenario; }; 00094 CTBodyPart** GetPart() { return &m_pPart; }; 00096 CTAngles& GetAnglesInc() { return m_AnglesInc; }; 00097 protected: 00099 CTString m_PartName; 00100 CTString m_StaticPartName; 00101 CTInt m_StartTime; 00102 CTInt m_StopTime; 00103 CTAngles m_Angles; 00104 CTInt m_Duration; 00105 CTInt m_OriginalDuration; 00106 CTInt m_Loop; 00107 CTLocation m_From; 00108 CTLocation m_To; 00109 CTScenario* m_pScenario; 00111 CTBodyPart* m_pPart; 00114 CTList m_Children; 00116 CTAngles m_AnglesInc; 00117 }; 00119 typedef CTHumanAction* LPCTHumanAction; 00120 /*========================================================*/ 00121 #endif