00001 //*************************************************************************************** 00002 // 00003 // File supervisor: Crosswalk team 00004 // 00005 // Copyright 2008 Autodesk, Inc. All rights reserved. 00006 // Use of this software is subject to the terms of the Autodesk license agreement 00007 // provided at the time of installation or download, or which otherwise accompanies 00008 // this software in either electronic or hard copy form. 00009 // 00010 //*************************************************************************************** 00011 00012 #ifndef _MIXER_H 00013 #define _MIXER_H 00014 00015 #include "Template.h" 00016 00017 // Forward declaration 00018 class CSLAction; 00019 class CSLTrack; 00020 00033 class XSIEXPORT CSLMixer 00034 : public CSLTemplate 00035 { 00036 public: 00042 CSLMixer(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00043 virtual ~CSLMixer(); 00044 00048 virtual SI_Error Synchronize(); 00049 00053 CSLTemplate::ETemplateType Type(){ return CSLTemplate::XSI_MIXER; } 00054 00058 SI_Bool GetActive(); 00059 00063 SI_Void SetActive( SI_Bool in_bNew ); 00064 00068 SI_Bool GetAutoTransition(); 00069 00073 SI_Void SetAutoTransition( SI_Bool in_bNew ); 00074 00083 SI_Bool GetMaintainContinuity(); 00084 00094 SI_Void SetMaintainContinuity( SI_Bool in_bNew ); 00095 00102 SI_Bool GetNormalize(); 00103 00111 SI_Void SetNormalize( SI_Bool in_bNew ); 00112 00121 SI_Bool GetQuaternionMixing(); 00122 00131 SI_Void SetQuaternionMixing( SI_Bool in_bNew ); 00132 00136 SI_Bool GetRemoveSpins(); 00137 00148 SI_Void SetRemoveSpins( SI_Bool in_bNew ); 00149 00150 // Actions functionality ////////////////////////////////////////////////// 00151 00157 SI_Error RemoveAction( SI_Int in_nIndex ); 00158 00164 SI_Error RemoveAction( CSLAction *in_pToRemove ); 00165 00169 CSLAction** GetActionList(); 00170 00174 SI_Int GetActionCount(); 00175 00179 virtual CSLAction* AddAction(); 00180 00184 SI_Error ClearActions(); 00185 00190 CSLAction* ConnectAction(CSLAction* in_pNewAction); 00191 00196 CSLAction* FindAction(SI_Char* in_pActionName); 00197 00198 // Tracks functionality ////////////////////////////////////////////////// 00199 00205 SI_Error RemoveTrack( SI_Int in_nIndex ); 00206 00212 SI_Error RemoveTrack( CSLTrack *io_pToRemove ); 00213 00217 CSLTrack** GetTrackList(); 00218 00222 SI_Int GetTrackCount(); 00223 00227 CSLTrack* AddTrack(); 00228 00232 SI_Error ClearTracks(); 00233 00238 CSLTrack* ConnectTrack(CSLTrack* in_pNewTrack); 00239 00240 CSLBoolProxy* GetAutoTransitionProxy() { return &m_AutoTransition; }; 00241 CSLBoolProxy* GetActiveProxy() { return &m_Active; }; 00242 CSLBoolProxy* GetNormalizeProxy() { return &m_Normalize; }; 00243 CSLBoolProxy* GetQuaternionMixingProxy() { return &m_QuaternionMixing; }; 00244 CSLBoolProxy* GetRemoveSpinsProxy() { return &m_RemoveSpins; }; 00245 CSLBoolProxy* GetMaintainContinuityProxy() { return &m_MaintainContinuity; }; 00246 00247 private: 00248 CSLBoolProxy m_AutoTransition; 00249 CSLBoolProxy m_Active; 00250 CSLBoolProxy m_Normalize; 00251 CSLBoolProxy m_QuaternionMixing; 00252 CSLBoolProxy m_RemoveSpins; 00253 CSLBoolProxy m_MaintainContinuity; 00254 CSIBCArray<CSLAction *> m_Actions; 00255 CSIBCArray<CSLTrack *> m_Tracks; 00256 00257 SI_Void *m_pReserved; 00258 }; 00259 00260 #endif // _MIXER_H