CustomParamInfo.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 _CUSTOMPARAMINFO_H
00013 #define _CUSTOMPARAMINFO_H
00014 
00015 #include "Template.h"
00016 #include "VariantParameter.h"
00017 
00018 class CSLCustomPSet;
00019 
00034 class XSIEXPORT CSLXSICustomParamInfo
00035     : public CSLTemplate
00036 {
00037     friend CSLXSICustomParamInfo* CSLCustomParameter::ConnectCustomParamInfo(CSLXSICustomParamInfo*);
00038 public:
00048     typedef enum
00049     {
00050         SI_ANIMATABLE           = 1,    
00051         SI_READ_ONLY            = 2,    
00052         SI_PERSISTABLE          = 4,    
00053         SI_NOT_INSPECTABLE      = 8,    
00054         SI_SILENT               = 16,   
00055         SI_NOT_PSET_PERSISTABLE = 128,  
00056         SI_TEXTURABLE           = 256,  
00057     } ECapabilitiesFlag;
00058 
00065     CSLXSICustomParamInfo(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate, CSLVariantParameter *in_pParameter = 0);
00066     virtual ~CSLXSICustomParamInfo();
00067 
00068     SI_Error Synchronize();
00069 
00073     ETemplateType Type(){ return XSI_CUSTOM_PARAM_INFO; }
00074 
00080     SI_Error GetMinValue( SI_TinyVariant &out_Value );
00081 
00085     CSLVariantProxy& GetMinValue();
00086 
00092     SI_Error SetMinValue( const CSLVariantProxy &in_Value );
00093 
00099     SI_Error SetMinValue( const SI_TinyVariant &in_Value );
00100 
00106     SI_Error GetMaxValue( SI_TinyVariant &out_Value );
00107 
00111     CSLVariantProxy& GetMaxValue();
00112 
00118     SI_Error SetMaxValue( const CSLVariantProxy &in_Value );
00119 
00125     SI_Error SetMaxValue( const SI_TinyVariant &in_Value );
00126 
00143     SI_ULong GetCapabilities();
00144 
00161     SI_Void SetCapabilities( SI_ULong in_ulValue );
00162 
00163 private:
00164     void SetParameter( CSLVariantParameter *in_pParam ){ m_pParameter = in_pParam; }
00165     CSLVariantProxy m_MinValue;
00166     CSLVariantProxy m_MaxValue;
00167     CSLULongProxy m_Capabilities;
00168 
00169     CSLVariantParameter *m_pParameter;
00170 
00171     SI_Void *m_pReserved;
00172 };
00173 
00174 #endif