# 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