LightInfo.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 _LIGHTINFO_H
00013 #define _LIGHTINFO_H
00014 
00015 #include "Template.h"
00016 
00020 class XSIEXPORT CSLLightInfo
00021     : public CSLTemplate
00022 {
00023 public:
00024 
00026     enum EFallofMode
00027     {
00028         SI_LINEAR,      
00029         SI_EXPONENT,    
00030     };
00037     CSLLightInfo(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00038 
00042     virtual ~CSLLightInfo();
00043 
00047     ETemplateType Type(){ return SI_LIGHT_INFO; }
00048 
00049     virtual CSLAnimatableType*      ParameterFromName(SI_Char *in_szName);
00050 
00051     virtual CSLAnimatableType*      ParameterFromType(EFCurveType in_Type, SI_Char *in_szName);
00052 
00056     SI_Bool GetFallofActive();
00057 
00062     SI_Void SetFallofActive( SI_Bool in_bActive );
00063 
00067     EFallofMode GetFallofMode();
00068 
00073     SI_Void SetFallofMode( EFallofMode in_Mode );
00074 
00078     SI_Float GetStart();
00079 
00083     SI_Void SetStart( SI_Float in_fStart);
00084 
00088     SI_Float GetEnd();
00089 
00093     SI_Void SetEnd( SI_Float in_fEnd);
00094 
00098     SI_Bool GetShadowActive();
00099 
00104     SI_Void SetShadowActive( SI_Bool in_bActive );
00105 
00109     SI_Float GetUmbra();
00110 
00114     SI_Void SetUmbra( SI_Float in_fUmbra = 0.75F);
00115 
00120     SI_Bool GetLightAsEnergy();
00121 
00126     SI_Void SetLightAsEnergy( SI_Bool in_bActive );
00127 
00131     SI_Float GetPhotonFactor();
00132 
00138     SI_Void SetPhotonFactor( SI_Float in_fPhotonFactor = 0.75F);
00139 
00143     SI_Float GetIntensity();
00149     SI_Void SetIntensity( SI_Float in_fIntensity );
00150 
00151     CSLBoolProxy*                           GetFallofActiveProxy() {return &m_FallofActive; };
00152     CSLEnumProxy<EFallofMode, SI_EXPONENT>* GetFallofModeProxy() {return &m_FallofMode; };
00153     CSLFloatProxy*                          GetStartProxy() {return &m_Start; };
00154     CSLFloatProxy*                          GetEndProxy() {return &m_End; };
00155     CSLBoolProxy*                           GetShadowsActiveProxy() {return &m_ShadowsActive; };
00156     CSLFloatProxy*                          GetUmbraProxy() {return &m_Umbra; };
00157     CSLBoolProxy*                           GetLightAsEnergyProxy() {return &m_LightAsEnergy; };
00158     CSLFloatProxy*                          GetPhotonFactorProxy() {return &m_PhotonFactor; };
00159     CSLFloatProxy*                          GetIntensityProxy() {return &m_Intensity; };
00160 
00161 private:
00162     CSLBoolProxy m_FallofActive;
00163     CSLEnumProxy<EFallofMode, SI_EXPONENT> m_FallofMode;
00164     CSLFloatProxy m_Start;
00165     CSLFloatProxy m_End;
00166     CSLBoolProxy m_ShadowsActive;
00167     CSLFloatProxy m_Umbra;
00168     CSLBoolProxy m_LightAsEnergy;
00169     CSLFloatProxy m_PhotonFactor;
00170     CSLFloatProxy m_Intensity;
00171 
00172     SI_Void* m_pReserved;
00173 };
00174 
00175 #endif