fbxlight.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2012 Autodesk, Inc.
00004    All rights reserved.
00005  
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 
00013 #ifndef _FBXSDK_SCENE_GEOMETRY_LIGHT_H_
00014 #define _FBXSDK_SCENE_GEOMETRY_LIGHT_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/scene/geometry/fbxnodeattribute.h>
00019 
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021 
00022 class FbxColor;
00023 class FbxManager;
00024 class FbxTexture;
00025 
00029 class FBXSDK_DLL FbxLight : public FbxNodeAttribute
00030 {
00031     FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute);
00032 
00033 public:
00045         enum EType
00046         {
00047             ePoint, 
00048             eDirectional, 
00049             eSpot,
00050             eArea,
00051             eVolume
00052         };
00053 
00061         enum EDecayType
00062         {
00063             eNone,
00064             eLinear,
00065             eQuadratic,
00066             eCubic
00067         };
00068 
00073         enum EAreaLightShape
00074         {
00075             eRectangle,
00076             eSphere
00077         };
00078 
00082         void SetShadowTexture(FbxTexture* pTexture);
00083 
00087         FbxTexture* GetShadowTexture() const;
00089 
00098         FbxPropertyT<EType> LightType;
00099 
00104         FbxPropertyT<FbxBool> CastLight;
00105 
00110         FbxPropertyT<FbxBool> DrawVolumetricLight;
00111 
00116         FbxPropertyT<FbxBool> DrawGroundProjection;
00117 
00122         FbxPropertyT<FbxBool> DrawFrontFacingVolumetricLight;
00123 
00128         FbxPropertyT<FbxDouble3> Color;
00129 
00134         FbxPropertyT<FbxDouble> Intensity;
00135 
00140         FbxPropertyT<FbxDouble> InnerAngle;
00141 
00146         FbxPropertyT<FbxDouble> OuterAngle;
00147 
00152         FbxPropertyT<FbxDouble> Fog;
00153 
00158         FbxPropertyT<EDecayType> DecayType;
00159 
00164         FbxPropertyT<FbxDouble> DecayStart;
00165 
00170         FbxPropertyT<FbxString> FileName;
00171 
00176         FbxPropertyT<FbxBool> EnableNearAttenuation;
00177 
00182         FbxPropertyT<FbxDouble> NearAttenuationStart;
00183 
00188         FbxPropertyT<FbxDouble> NearAttenuationEnd;
00189 
00194         FbxPropertyT<FbxBool> EnableFarAttenuation;
00195 
00200         FbxPropertyT<FbxDouble> FarAttenuationStart;
00201 
00206         FbxPropertyT<FbxDouble> FarAttenuationEnd;
00207 
00212         FbxPropertyT<FbxBool> CastShadows;
00213 
00218         FbxPropertyT<FbxDouble3> ShadowColor;
00219 
00224         FbxPropertyT<EAreaLightShape> AreaLightShape;
00225 
00230         FbxPropertyT<FbxFloat> LeftBarnDoor;
00231 
00236         FbxPropertyT<FbxFloat> RightBarnDoor;
00237 
00242         FbxPropertyT<FbxFloat> TopBarnDoor;
00243 
00248         FbxPropertyT<FbxFloat> BottomBarnDoor;
00249 
00254         FbxPropertyT<FbxBool> EnableBarnDoor;
00256 
00258 //
00259 //  WARNING!
00260 //
00261 //  Anything beyond these lines may not be documented accurately and is 
00262 //  subject to change without notice.
00263 //
00265 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00266     virtual FbxNodeAttribute::EType GetAttributeType() const;
00267 
00268 protected:
00269     FbxLight(FbxManager& pManager, char const* pName);
00270     virtual bool ConstructProperties(bool pForceSet);
00271     virtual FbxStringList   GetTypeFlags() const;
00272 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00273 };
00274 
00275 inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; }
00276 inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; }
00277 inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; }
00278 
00279 #include <fbxsdk/fbxsdk_nsend.h>
00280 
00281 #endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */