Mixer.h

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