00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 00014 #ifndef _MIXER_H 00015 #define _MIXER_H 00016 00017 #include "Template.h" 00018 00019 // Forward declaration 00020 class CSLAction; 00021 class CSLTrack; 00022 00037 class XSIEXPORT CSLMixer 00038 : public CSLTemplate 00039 { 00040 public: 00046 CSLMixer(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00047 virtual ~CSLMixer(); 00048 00052 virtual SI_Error Synchronize(); 00053 00057 CSLTemplate::ETemplateType Type(){ return CSLTemplate::XSI_MIXER; } 00058 00062 SI_Bool GetActive(); 00063 00067 SI_Void SetActive( SI_Bool in_bNew ); 00068 00072 SI_Bool GetAutoTransition(); 00073 00077 SI_Void SetAutoTransition( SI_Bool in_bNew ); 00078 00087 SI_Bool GetMaintainContinuity(); 00088 00098 SI_Void SetMaintainContinuity( SI_Bool in_bNew ); 00099 00106 SI_Bool GetNormalize(); 00107 00115 SI_Void SetNormalize( SI_Bool in_bNew ); 00116 00125 SI_Bool GetQuaternionMixing(); 00126 00135 SI_Void SetQuaternionMixing( SI_Bool in_bNew ); 00136 00140 SI_Bool GetRemoveSpins(); 00141 00152 SI_Void SetRemoveSpins( SI_Bool in_bNew ); 00153 00154 // Actions functionality ////////////////////////////////////////////////// 00155 00161 SI_Error RemoveAction( SI_Int in_nIndex ); 00162 00168 SI_Error RemoveAction( CSLAction *in_pToRemove ); 00169 00173 CSLAction** GetActionList(); 00174 00178 SI_Int GetActionCount(); 00179 00183 virtual CSLAction* AddAction(); 00184 00188 SI_Error ClearActions(); 00189 00194 CSLAction* ConnectAction(CSLAction* in_pNewAction); 00195 00200 CSLAction* FindAction(SI_Char* in_pActionName); 00201 00202 // Tracks functionality ////////////////////////////////////////////////// 00203 00209 SI_Error RemoveTrack( SI_Int in_nIndex ); 00210 00216 SI_Error RemoveTrack( CSLTrack *io_pToRemove ); 00217 00221 CSLTrack** GetTrackList(); 00222 00226 SI_Int GetTrackCount(); 00227 00231 CSLTrack* AddTrack(); 00232 00236 SI_Error ClearTracks(); 00237 00242 CSLTrack* ConnectTrack(CSLTrack* in_pNewTrack); 00243 00244 CSLBoolProxy* GetAutoTransitionProxy() { return &m_AutoTransition; }; 00245 CSLBoolProxy* GetActiveProxy() { return &m_Active; }; 00246 CSLBoolProxy* GetNormalizeProxy() { return &m_Normalize; }; 00247 CSLBoolProxy* GetQuaternionMixingProxy() { return &m_QuaternionMixing; }; 00248 CSLBoolProxy* GetRemoveSpinsProxy() { return &m_RemoveSpins; }; 00249 CSLBoolProxy* GetMaintainContinuityProxy() { return &m_MaintainContinuity; }; 00250 00251 private: 00252 CSLBoolProxy m_AutoTransition; 00253 CSLBoolProxy m_Active; 00254 CSLBoolProxy m_Normalize; 00255 CSLBoolProxy m_QuaternionMixing; 00256 CSLBoolProxy m_RemoveSpins; 00257 CSLBoolProxy m_MaintainContinuity; 00258 CSIBCArray<CSLAction *> m_Actions; 00259 CSIBCArray<CSLTrack *> m_Tracks; 00260 00261 SI_Void *m_pReserved; 00262 }; 00263 00264 #endif // _MIXER_H