00001 /**************************************************************************************** 00002 00003 Copyright (C) 2013 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 FbxTexture; 00023 00027 class FBXSDK_DLL FbxLight : public FbxNodeAttribute 00028 { 00029 FBXSDK_OBJECT_DECLARE(FbxLight, FbxNodeAttribute); 00030 00031 public: 00043 enum EType 00044 { 00045 ePoint, 00046 eDirectional, 00047 eSpot, 00048 eArea, 00049 eVolume 00050 }; 00051 00059 enum EDecayType 00060 { 00061 eNone, 00062 eLinear, 00063 eQuadratic, 00064 eCubic 00065 }; 00066 00071 enum EAreaLightShape 00072 { 00073 eRectangle, 00074 eSphere 00075 }; 00076 00080 void SetShadowTexture(FbxTexture* pTexture); 00081 00085 FbxTexture* GetShadowTexture() const; 00087 00096 FbxPropertyT<EType> LightType; 00097 00102 FbxPropertyT<FbxBool> CastLight; 00103 00108 FbxPropertyT<FbxBool> DrawVolumetricLight; 00109 00114 FbxPropertyT<FbxBool> DrawGroundProjection; 00115 00120 FbxPropertyT<FbxBool> DrawFrontFacingVolumetricLight; 00121 00126 FbxPropertyT<FbxDouble3> Color; 00127 00132 FbxPropertyT<FbxDouble> Intensity; 00133 00138 FbxPropertyT<FbxDouble> InnerAngle; 00139 00144 FbxPropertyT<FbxDouble> OuterAngle; 00145 00150 FbxPropertyT<FbxDouble> Fog; 00151 00156 FbxPropertyT<EDecayType> DecayType; 00157 00162 FbxPropertyT<FbxDouble> DecayStart; 00163 00168 FbxPropertyT<FbxString> FileName; 00169 00174 FbxPropertyT<FbxBool> EnableNearAttenuation; 00175 00180 FbxPropertyT<FbxDouble> NearAttenuationStart; 00181 00186 FbxPropertyT<FbxDouble> NearAttenuationEnd; 00187 00192 FbxPropertyT<FbxBool> EnableFarAttenuation; 00193 00198 FbxPropertyT<FbxDouble> FarAttenuationStart; 00199 00204 FbxPropertyT<FbxDouble> FarAttenuationEnd; 00205 00210 FbxPropertyT<FbxBool> CastShadows; 00211 00216 FbxPropertyT<FbxDouble3> ShadowColor; 00217 00222 FbxPropertyT<EAreaLightShape> AreaLightShape; 00223 00228 FbxPropertyT<FbxFloat> LeftBarnDoor; 00229 00234 FbxPropertyT<FbxFloat> RightBarnDoor; 00235 00240 FbxPropertyT<FbxFloat> TopBarnDoor; 00241 00246 FbxPropertyT<FbxFloat> BottomBarnDoor; 00247 00252 FbxPropertyT<FbxBool> EnableBarnDoor; 00254 00255 /***************************************************************************************************************************** 00256 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** 00257 *****************************************************************************************************************************/ 00258 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00259 virtual FbxNodeAttribute::EType GetAttributeType() const; 00260 00261 protected: 00262 virtual void ConstructProperties(bool pForceSet); 00263 virtual FbxStringList GetTypeFlags() const; 00264 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ 00265 }; 00266 00267 inline EFbxType FbxTypeOf(const FbxLight::EType&){ return eFbxEnum; } 00268 inline EFbxType FbxTypeOf(const FbxLight::EDecayType&){ return eFbxEnum; } 00269 inline EFbxType FbxTypeOf(const FbxLight::EAreaLightShape&){ return eFbxEnum; } 00270 00271 #include <fbxsdk/fbxsdk_nsend.h> 00272 00273 #endif /* _FBXSDK_SCENE_GEOMETRY_LIGHT_H_ */