00001 //*************************************************************************************** 00002 // File supervisor: Crosswalk team 00012 //*************************************************************************************** 00013 #ifndef _XSITEXTURELAYER_H 00014 #define _XSITEXTURELAYER_H 00015 00016 #include "Template.h" 00017 00018 class CSLXSITextureLayerPort; 00019 class CSLXSIShaderMultiPortConnection; 00020 00021 00027 class XSIEXPORT CSLXSITextureLayer 00028 : public CSLTemplate 00029 { 00030 public: 00036 CSLXSITextureLayer(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00037 00039 virtual ~CSLXSITextureLayer(); 00040 00044 SI_Error Synchronize(); 00045 00049 ETemplateType Type(){ return XSI_TEXTURE_LAYER; } 00050 00051 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00052 00053 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00054 00058 SI_Int GetOrder(); 00059 00063 SI_Void SetOrder( SI_Int in_nValue ); 00064 00068 SI_Bool GetMute(); 00069 00073 SI_Void SetMute( SI_Bool in_bValue ); 00074 00078 SI_Bool GetSolo(); 00079 00083 SI_Void SetSolo( SI_Bool in_bValue ); 00084 00088 SI_Char* GetColorConnection(); 00089 00093 SI_Void SetColorConnection( SI_Char* in_pValue ); 00094 00098 SI_Float GetRed(); 00099 00103 SI_Void SetRed( SI_Float in_fValue ); 00104 00108 SI_Float GetGreen(); 00109 00113 SI_Void SetGreen( SI_Float in_fValue ); 00114 00118 SI_Float GetBlue(); 00119 00123 SI_Void SetBlue( SI_Float in_fValue ); 00124 00128 SI_Float GetAlpha(); 00129 00133 SI_Void SetAlpha( SI_Float in_fValue ); 00134 00138 SI_Bool GetColorPremultiplied(); 00139 00143 SI_Void SetColorPremultiplied( SI_Bool in_bValue ); 00144 00148 SI_Bool GetIgnoreColorAlpha(); 00149 00153 SI_Void SetIgnoreColorAlpha( SI_Bool in_bValue ); 00154 00158 SI_Bool GetInvertColorAlpha(); 00159 00163 SI_Void SetInvertColorAlpha( SI_Bool in_bValue ); 00164 00168 SI_Bool GetAlphaColor(); 00169 00173 SI_Void SetAlphaColor( SI_Bool in_bValue ); 00174 00178 SI_Char* GetMaskConnection(); 00179 00183 SI_Void SetMaskConnection( SI_Char* in_pValue ); 00184 00188 SI_Float GetMask(); 00189 00193 SI_Void SetMask( SI_Float in_fValue ); 00194 00198 SI_Bool GetInvertMask(); 00199 00203 SI_Void SetInvertMask( SI_Bool in_bValue ); 00204 00208 SI_Int GetMaskMode(); 00209 00213 SI_Void SetMaskMode( SI_Int in_nValue ); 00214 00218 SI_Float GetMaskThreshold(); 00219 00223 SI_Void SetMaskThreshold( SI_Float in_nValue ); 00224 00228 SI_Float GetWeight(); 00229 00233 SI_Void SetWeight( SI_Float in_fValue ); 00234 00238 SI_Int GetMode(); 00239 00243 SI_Void SetMode( SI_Int in_nValue ); 00244 00245 CSLIntProxy* GetOrderProxy() { return &m_Order; }; 00246 CSLBoolProxy* GetMuteProxy() { return &m_Mute; }; 00247 CSLBoolProxy* GetSoloProxy() { return &m_Solo; }; 00248 CSLStringProxy* GetColorConnectionProxy() { return &m_ColorConnection; }; 00249 CSLFloatProxy* GetRedProxy() { return &m_Red; }; 00250 CSLFloatProxy* GetGreenProxy() { return &m_Green; }; 00251 CSLFloatProxy* GetBlueProxy() { return &m_Blue; }; 00252 CSLFloatProxy* GetAlphaProxy() { return &m_Alpha; }; 00253 CSLBoolProxy* GetColorPremultipliedProxy() { return &m_ColorPremultiplied; }; 00254 CSLBoolProxy* GetIgnoreColorAlphaProxy() { return &m_IgnoreColorAlpha; }; 00255 CSLBoolProxy* GetInvertColorAlphaProxy() { return &m_InvertColorAlpha; }; 00256 CSLBoolProxy* GetAlphaColorProxy() { return &m_AlphaColor; }; 00257 CSLStringProxy* GetMaskConnectionProxy() { return &m_MaskConnection; }; 00258 CSLFloatProxy* GetMaskProxy() { return &m_Mask; }; 00259 CSLBoolProxy* GetInvertMaskProxy() { return &m_InvertMask; }; 00260 CSLIntProxy* GetMaskModeProxy() { return &m_MaskMode; }; 00261 CSLFloatProxy* GetMaskThresholdProxy() { return &m_MaskThreshold; }; 00262 CSLFloatProxy* GetWeightProxy() { return &m_Weight; }; 00263 CSLIntProxy* GetModeProxy() { return &m_Mode; }; 00264 00266 // Texture Layer port functionality //////////////////////////////////////// 00268 00272 CSLXSITextureLayerPort* AddTextureLayerPort(); 00273 00277 SI_Error RemoveTextureLayerPort(SI_Int in_nIndex); 00278 00282 SI_Error RemoveTextureLayerPort(CSLXSITextureLayerPort* in_pToRemove); 00283 00288 CSLXSITextureLayerPort* GetTextureLayerPort(SI_Int in_nIndex); 00289 00293 SI_Int GetTextureLayerPortCount(); 00294 00297 SI_Error ClearTextureLayerPorts(); 00298 00302 CSLXSITextureLayerPort** GetTextureLayerPortList(); 00303 00308 CSLXSITextureLayerPort* ConnectTextureLayerPort( CSLXSITextureLayerPort* in_pToConnect ); 00309 00311 // Multi Port Connection functionality //////////////////////////////// 00313 00317 CSLXSIShaderMultiPortConnection* AddMultiPortConnection(); 00318 00322 SI_Error RemoveMultiPortConnection(SI_Int in_nIndex); 00323 00327 SI_Error RemoveMultiPortConnection(CSLXSIShaderMultiPortConnection* in_pToRemove); 00328 00333 CSLXSIShaderMultiPortConnection* GetMultiPortConnection(SI_Int in_nIndex); 00334 00338 SI_Int GetMultiPortConnectionCount(); 00339 00342 SI_Error ClearMultiPortConnections(); 00343 00347 CSLXSIShaderMultiPortConnection** GetMultiPortConnectionList(); 00348 00353 CSLXSIShaderMultiPortConnection* ConnectMultiPortConnection( CSLXSIShaderMultiPortConnection* in_pToConnect ); 00354 00359 CSLXSIShaderMultiPortConnection* FindMultiPortConnectionByParameterName(SI_Char *in_pName); 00360 00361 private: 00362 CSLIntProxy m_Order; 00363 CSLBoolProxy m_Mute; 00364 CSLBoolProxy m_Solo; 00365 CSLStringProxy m_ColorConnection; 00366 CSLFloatProxy m_Red; 00367 CSLFloatProxy m_Green; 00368 CSLFloatProxy m_Blue; 00369 CSLFloatProxy m_Alpha; 00370 CSLBoolProxy m_ColorPremultiplied; 00371 CSLBoolProxy m_IgnoreColorAlpha; 00372 CSLBoolProxy m_InvertColorAlpha; 00373 CSLBoolProxy m_AlphaColor; 00374 CSLStringProxy m_MaskConnection; 00375 CSLFloatProxy m_Mask; 00376 CSLBoolProxy m_InvertMask; 00377 CSLIntProxy m_MaskMode; 00378 CSLFloatProxy m_MaskThreshold; 00379 CSLFloatProxy m_Weight; 00380 CSLIntProxy m_Mode; 00381 00382 CSIBCArray<CSLXSITextureLayerPort*> m_TextureLayerPorts; 00383 00384 CSIBCArray<CSLXSIShaderMultiPortConnection *> m_MultiPortConnections; 00385 00386 SI_Void *m_pReserved; 00387 }; 00388 00389 #endif