CustomPSet.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 #ifndef _CUSTOMPSET_H
00025 #define _CUSTOMPSET_H
00026 
00027 #include "Template.h"
00028 
00029 // Forward declaration
00030 class CSLVariantParameter;
00031 class CSLXSICustomParamInfo;
00032 
00034 class XSIEXPORT CSLCustomPSet
00035     : public CSLTemplate
00036 {
00037 public:
00044     CSLCustomPSet(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00045 
00047     virtual ~CSLCustomPSet();
00048 
00052     virtual SI_Error Synchronize();
00053 
00057     virtual ETemplateType Type() { return SI_CUSTOM_PSET; }
00058 
00060     enum EPropagationType
00061     {
00062         SI_BRANCH,      
00063         SI_NODE,        
00064         SI_INHERITED    
00065     };
00066 
00068 
00071     EPropagationType GetPropagationType();
00072 
00074 
00078     SI_Void SetPropagationType( EPropagationType in_PropagationType );
00079 
00081     // Parameters Functionality ///////////////////////////////////////////////
00083 
00087     CSLVariantParameter* AddParameter();
00088 
00093     SI_Error RemoveParameter( SI_Int in_nIndex );
00094 
00099     SI_Error RemoveParameter( CSLVariantParameter* in_pToRemove );
00100 
00104     SI_Error ClearParameters();
00105 
00110     CSLVariantParameter* ConnectParameter( CSLVariantParameter* in_pToConnect );
00111 
00115     CSLVariantParameter** GetParameterList();
00116 
00120     SI_Int GetParameterCount();
00121 
00126     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00127 
00133     virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00134 
00136     // Custom parameter information
00138 
00144     CSLXSICustomParamInfo* CreateCustomParamInfo( SI_Int in_nIndex );
00145 
00152     CSLXSICustomParamInfo* CreateCustomParamInfo( CSLVariantParameter * in_pParam );
00153 
00159     CSLXSICustomParamInfo* ConnectCustomParamInfo( CSLXSICustomParamInfo *in_pToConnect );
00160 
00165     char *GetType();
00166 
00172     void SetType(char *in_pType);
00173 
00174 private:
00175     CSLStrEnumProxy<EPropagationType, SI_INHERITED>  m_PropagationType;
00176     CSIBCArray<CSLVariantParameter*> m_Parameters; 
00177 
00178     SI_Void *m_pReserved;   // Reserved for future use
00179 };
00180 
00181 #endif