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 #ifndef _XSITEXTURELAYER_H 00012 #define _XSITEXTURELAYER_H 00013 00014 #include "Template.h" 00015 00016 class CSLXSITextureLayerPort; 00017 class CSLXSIShaderMultiPortConnection; 00018 00019 00023 class XSIEXPORT CSLXSITextureLayer 00024 : public CSLTemplate 00025 { 00026 public: 00032 CSLXSITextureLayer(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00033 00035 virtual ~CSLXSITextureLayer(); 00036 00040 SI_Error Synchronize(); 00041 00045 ETemplateType Type(){ return XSI_TEXTURE_LAYER; } 00046 00047 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00048 00049 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00050 00054 SI_Int GetOrder(); 00055 00059 SI_Void SetOrder( SI_Int in_nValue ); 00060 00064 SI_Bool GetMute(); 00065 00069 SI_Void SetMute( SI_Bool in_bValue ); 00070 00074 SI_Bool GetSolo(); 00075 00079 SI_Void SetSolo( SI_Bool in_bValue ); 00080 00084 SI_Char* GetColorConnection(); 00085 00089 SI_Void SetColorConnection( SI_Char* in_pValue ); 00090 00094 SI_Float GetRed(); 00095 00099 SI_Void SetRed( SI_Float in_fValue ); 00100 00104 SI_Float GetGreen(); 00105 00109 SI_Void SetGreen( SI_Float in_fValue ); 00110 00114 SI_Float GetBlue(); 00115 00119 SI_Void SetBlue( SI_Float in_fValue ); 00120 00124 SI_Float GetAlpha(); 00125 00129 SI_Void SetAlpha( SI_Float in_fValue ); 00130 00134 SI_Bool GetColorPremultiplied(); 00135 00139 SI_Void SetColorPremultiplied( SI_Bool in_bValue ); 00140 00144 SI_Bool GetIgnoreColorAlpha(); 00145 00149 SI_Void SetIgnoreColorAlpha( SI_Bool in_bValue ); 00150 00154 SI_Bool GetInvertColorAlpha(); 00155 00159 SI_Void SetInvertColorAlpha( SI_Bool in_bValue ); 00160 00164 SI_Bool GetAlphaColor(); 00165 00169 SI_Void SetAlphaColor( SI_Bool in_bValue ); 00170 00174 SI_Char* GetMaskConnection(); 00175 00179 SI_Void SetMaskConnection( SI_Char* in_pValue ); 00180 00184 SI_Float GetMask(); 00185 00189 SI_Void SetMask( SI_Float in_fValue ); 00190 00194 SI_Bool GetInvertMask(); 00195 00199 SI_Void SetInvertMask( SI_Bool in_bValue ); 00200 00204 SI_Int GetMaskMode(); 00205 00209 SI_Void SetMaskMode( SI_Int in_nValue ); 00210 00214 SI_Float GetMaskThreshold(); 00215 00219 SI_Void SetMaskThreshold( SI_Float in_fValue ); 00220 00224 SI_Float GetWeight(); 00225 00229 SI_Void SetWeight( SI_Float in_fValue ); 00230 00234 SI_Int GetMode(); 00235 00239 SI_Void SetMode( SI_Int in_nValue ); 00240 00241 CSLIntProxy* GetOrderProxy() { return &m_Order; }; 00242 CSLBoolProxy* GetMuteProxy() { return &m_Mute; }; 00243 CSLBoolProxy* GetSoloProxy() { return &m_Solo; }; 00244 CSLStringProxy* GetColorConnectionProxy() { return &m_ColorConnection; }; 00245 CSLFloatProxy* GetRedProxy() { return &m_Red; }; 00246 CSLFloatProxy* GetGreenProxy() { return &m_Green; }; 00247 CSLFloatProxy* GetBlueProxy() { return &m_Blue; }; 00248 CSLFloatProxy* GetAlphaProxy() { return &m_Alpha; }; 00249 CSLBoolProxy* GetColorPremultipliedProxy() { return &m_ColorPremultiplied; }; 00250 CSLBoolProxy* GetIgnoreColorAlphaProxy() { return &m_IgnoreColorAlpha; }; 00251 CSLBoolProxy* GetInvertColorAlphaProxy() { return &m_InvertColorAlpha; }; 00252 CSLBoolProxy* GetAlphaColorProxy() { return &m_AlphaColor; }; 00253 CSLStringProxy* GetMaskConnectionProxy() { return &m_MaskConnection; }; 00254 CSLFloatProxy* GetMaskProxy() { return &m_Mask; }; 00255 CSLBoolProxy* GetInvertMaskProxy() { return &m_InvertMask; }; 00256 CSLIntProxy* GetMaskModeProxy() { return &m_MaskMode; }; 00257 CSLFloatProxy* GetMaskThresholdProxy() { return &m_MaskThreshold; }; 00258 CSLFloatProxy* GetWeightProxy() { return &m_Weight; }; 00259 CSLIntProxy* GetModeProxy() { return &m_Mode; }; 00260 00262 // Texture Layer port functionality //////////////////////////////////////// 00264 00268 CSLXSITextureLayerPort* AddTextureLayerPort(); 00269 00273 SI_Error RemoveTextureLayerPort(SI_Int in_nIndex); 00274 00278 SI_Error RemoveTextureLayerPort(CSLXSITextureLayerPort* in_pToRemove); 00279 00284 CSLXSITextureLayerPort* GetTextureLayerPort(SI_Int in_nIndex); 00285 00289 SI_Int GetTextureLayerPortCount(); 00290 00293 SI_Error ClearTextureLayerPorts(); 00294 00298 CSLXSITextureLayerPort** GetTextureLayerPortList(); 00299 00304 CSLXSITextureLayerPort* ConnectTextureLayerPort( CSLXSITextureLayerPort* in_pToConnect ); 00305 00307 // Multi Port Connection functionality //////////////////////////////// 00309 00315 CSLXSIShaderMultiPortConnection* AddMultiPortConnection(); 00316 00320 SI_Error RemoveMultiPortConnection(SI_Int in_nIndex); 00321 00325 SI_Error RemoveMultiPortConnection(CSLXSIShaderMultiPortConnection* in_pToRemove); 00326 00331 CSLXSIShaderMultiPortConnection* GetMultiPortConnection(SI_Int in_nIndex); 00332 00336 SI_Int GetMultiPortConnectionCount(); 00337 00340 SI_Error ClearMultiPortConnections(); 00341 00345 CSLXSIShaderMultiPortConnection** GetMultiPortConnectionList(); 00346 00351 CSLXSIShaderMultiPortConnection* ConnectMultiPortConnection( CSLXSIShaderMultiPortConnection* in_pToConnect ); 00352 00357 CSLXSIShaderMultiPortConnection* FindMultiPortConnectionByParameterName(SI_Char *in_pName); 00358 00359 private: 00360 CSLIntProxy m_Order; 00361 CSLBoolProxy m_Mute; 00362 CSLBoolProxy m_Solo; 00363 CSLStringProxy m_ColorConnection; 00364 CSLFloatProxy m_Red; 00365 CSLFloatProxy m_Green; 00366 CSLFloatProxy m_Blue; 00367 CSLFloatProxy m_Alpha; 00368 CSLBoolProxy m_ColorPremultiplied; 00369 CSLBoolProxy m_IgnoreColorAlpha; 00370 CSLBoolProxy m_InvertColorAlpha; 00371 CSLBoolProxy m_AlphaColor; 00372 CSLStringProxy m_MaskConnection; 00373 CSLFloatProxy m_Mask; 00374 CSLBoolProxy m_InvertMask; 00375 CSLIntProxy m_MaskMode; 00376 CSLFloatProxy m_MaskThreshold; 00377 CSLFloatProxy m_Weight; 00378 CSLIntProxy m_Mode; 00379 00380 CSIBCArray<CSLXSITextureLayerPort*> m_TextureLayerPorts; 00381 00382 CSIBCArray<CSLXSIShaderMultiPortConnection *> m_MultiPortConnections; 00383 00384 SI_Void *m_pReserved; 00385 }; 00386 00387 #endif