Fog.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 _FOG_H
00025 #define _FOG_H
00026 
00027 #include "Template.h"
00028 
00030 class XSIEXPORT CSLFog
00031     : public CSLTemplate
00032 {
00033 public:
00037     enum EFogType
00038     {
00039         SI_VERTEX,  
00040         SI_PIXEL,   
00041     };
00042 
00046     enum EFogInterpolationType
00047     {
00048         SI_LINEAR,              
00049         SI_EXPONENTIAL,         
00050     };
00051 
00058     CSLFog(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00059 
00062     virtual ~CSLFog();
00063 
00067     EFogType                GetFogType() { return m_Type; }
00068 
00073     SI_Void                 SetFogType(EFogType in_Type) { m_Type = in_Type; }
00074 
00078     EFogInterpolationType   GetFogInterpolationType() { return m_InterpolationType; }
00079 
00084     SI_Void                 SetFogInterpolationType(EFogInterpolationType in_Type) { m_InterpolationType = in_Type; }
00085 
00089     CSIBCColorf             GetColor() { return m_Color; }
00090 
00095     SI_Void                 SetColor(CSIBCColorf& in_rColor) { m_Color = in_rColor; }
00096 
00100     SI_Float                GetNear() { return m_Near; }
00101 
00106     SI_Void                 SetNear(SI_Float in_fValue) { m_Near = in_fValue; }
00107 
00111     SI_Float                GetFar() { return m_Far; }
00112 
00117     SI_Void                 SetFar(SI_Float in_fValue) { m_Far = in_fValue; }
00118 
00123     virtual CSLAnimatableType*  ParameterFromName(SI_Char *in_szName);
00124 
00130     virtual CSLAnimatableType*  ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00131 
00135     virtual ETemplateType       Type() { return SI_FOG; }
00136 
00137     CSLColorRGBProxy*   GetColorProxy(){ return &m_Color; };
00138     CSLFloatProxy*      GetNearProxy(){ return &m_Near; };
00139     CSLFloatProxy*      GetFarProxy(){ return &m_Far; };
00140 
00141 private:
00142     CSLEnumProxy<EFogType, SI_FOG>                      m_Type;
00143     CSLEnumProxy<EFogInterpolationType, SI_EXPONENTIAL> m_InterpolationType;
00144 
00145     CSLColorRGBProxy    m_Color;
00146     CSLFloatProxy       m_Near;
00147     CSLFloatProxy       m_Far;
00148 };
00149 
00150 #endif