TimeControl.h

00001 //***************************************************************************************
00002 //
00003 // File supervisor: Softimage 3D Games & 3D Bridge team
00004 //
00005 // (c) Copyright 2001-2002 Avid Technology, Inc. . All rights reserved.
00006 //
00007 //***************************************************************************************
00008 
00009 /****************************************************************************************
00010 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS".
00011 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE
00012 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
00013 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00014 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
00015 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE .
00016 
00017 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 
00018 
00019 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 
00020 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other
00021 trademarks contained herein are the property of their respective owners. 
00022 ****************************************************************************************/
00023 
00024 
00025 #ifndef _TIMECONTROL_H
00026 #define _TIMECONTROL_H
00027 
00028 #include "Template.h"
00029 #include "Extrapolation.h"
00030 #include "XSIClipToParent.h"
00031 
00033 
00040 class XSIEXPORT CSLTimeControl
00041     : public CSLTemplate
00042 {
00043 public:
00044 
00046     enum EExtrapolationPos
00047     {
00048         SI_BEFORE,  
00049         SI_AFTER    
00050     };
00051 
00057     CSLTimeControl(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00058     virtual ~CSLTimeControl();
00059 
00063     CSLTemplate::ETemplateType Type(){ return CSLTemplate::XSI_TIMECONTROL; }
00064     SI_Error Synchronize();
00065 
00069     SI_Float GetIn();
00070 
00074     SI_Void SetIn( SI_Float in_fNew );
00075     
00079     SI_Float GetOut();
00080 
00084     SI_Void SetOut( SI_Float in_fNew );
00085     
00089     SI_Float GetScale();
00090 
00095     SI_Void SetScale( SI_Float in_fNew );
00096 
00100     SI_Float GetStartOffset();
00101 
00105     SI_Void SetStartOffset( SI_Float in_fNew );
00106 
00107     // extrapolation functionality ////////////////////////////////////////////
00108 
00115     CSLExtrapolation* CreateExtrapolation( EExtrapolationPos in_Pos, CSLExtrapolation::EExtrapolationType in_Type = CSLExtrapolation::SI_NO_CONTRIBUTION );
00116     
00122     CSLExtrapolation* GetExtrapolation( EExtrapolationPos in_Pos );
00123 
00132     SI_Void SetExtrapolation( EExtrapolationPos in_Pos, CSLExtrapolation *in_pExtrapolation );
00133     
00139     CSLExtrapolation* ConnectExtrapolation( EExtrapolationPos in_Pos, CSLExtrapolation* in_pExtrapolation );
00140 
00141     // ClipToParent functionality ////////////////////////////////////////////
00142 
00147     CSLXSIClipToParent* CreateClipToParent();
00148     
00153     CSLXSIClipToParent* GetClipToParent();
00154 
00162     SI_Void SetClipToParent( CSLXSIClipToParent *in_pXSIClipToParent );
00163     
00168     CSLXSIClipToParent* ConnectClipToParent( CSLXSIClipToParent* in_pClipToParent );
00169 
00170 private:
00171     CSLFloatProxy m_In;
00172     CSLFloatProxy m_Out;
00173     CSLFloatProxy m_StartOffset;
00174     CSLFloatProxy m_Scale;
00175     CSLExtrapolation* m_pExtrapolationBefore;
00176     CSLExtrapolation* m_pExtrapolationAfter;
00177     CSLXSIClipToParent* m_pClipToParent;
00178 };
00179 
00180 #endif