FBX2glTF/sdk/Darwin/2019.2/include/fbxsdk/fileio/fbxgloballightsettings.h

230 lines
8.2 KiB
C++

/****************************************************************************************
Copyright (C) 2015 Autodesk, Inc.
All rights reserved.
Use of this software is subject to the terms of the Autodesk license agreement
provided at the time of installation or download, or which otherwise accompanies
this software in either electronic or hard copy form.
****************************************************************************************/
//! \file fbxgloballightsettings.h
#ifndef _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_
#define _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_
#include <fbxsdk/fbxsdk_def.h>
#include <fbxsdk/core/fbxpropertytypes.h>
#include <fbxsdk/fbxsdk_nsbegin.h>
class FbxGlobalLightSettingsProperties;
/** This class contains functions for accessing global light settings.
* \nosubgrouping
* \remarks This class exists for FBX version 6.x and earlier. The new FBX v7.x file format that is
* now the default no longer uses it. The relevant data (a subset of this class) has been moved to
* the FbxGlobalSettings object and should be used instead.
*/
class FBXSDK_DLL FbxGlobalLightSettings
{
public:
FBXSDK_FRIEND_NEW();
/**
* \name Ambient Color
*/
//@{
/** Sets the ambient color.
* \param pAmbientColor The ambient color to set.
* \remarks The ambient color only use RGB channels.
*/
void SetAmbientColor(FbxColor pAmbientColor);
/** Returns the ambient color.
* \return The ambient color.
*/
FbxColor GetAmbientColor() const;
//@}
/**
* \name Fog Option
*/
//@{
/** Activates or disables the fog.
* \param pEnable Set to \c true to activate the fog option or set to \c false to disable the fog option.
*/
void SetFogEnable(bool pEnable);
/** Returns the fog option's current state.
* \return \c True if fog is activated, returns \c false if fog is disabled.
*/
bool GetFogEnable() const;
/** Sets the fog color.
* \param pColor The fog color to be set.
* \remarks The fog color only uses RGB channels.
*/
void SetFogColor(FbxColor pColor);
/** Returns the fog color.
* \return The fog color.
* \remarks The fog color only uses RGB channels.
*/
FbxColor GetFogColor() const;
/** \enum EFogMode Fog types.
*/
enum EFogMode
{
eLinear, //! Linear fog mode.
eExponential, //! Exponential fog mode.
eExponentialSquareRoot //! Exponential square root fog mode.
};
/** Sets the fog mode.
* \param pMode The fog type to be set.
*/
void SetFogMode(EFogMode pMode);
/** Returns the fog mode.
* \return The currently set fog mode.
*/
EFogMode GetFogMode() const;
/** Sets the fog density.
* \param pDensity The fog density to be set. It can be any double value, however it can
* happen that other sections of FBX SDK may clamp values to reasonable values.
* \remarks This function is only used when the fog mode is set to exponential or square root exponential.
*/
void SetFogDensity(double pDensity);
/** Returns the fog density.
* \return The currently set fog density.
* \remarks This function is only used when the fog mode is set to exponential or square root exponential.
*/
double GetFogDensity() const;
/** Sets the distance from the view where the fog begins.
* \param pStart Distance where the fog begins.
* \remarks This function is only used when the fog mode is set to linear. The new value is clamped to fit inside the interval [0, FogEnd()].
*/
void SetFogStart(double pStart);
/** Returns the distance from the view where the fog begins.
* \return The distance from the view where the fog begins.
* \remarks This function is only used when the fog mode is set to linear.
*/
double GetFogStart() const;
/** Sets the distance from the view where the fog ends.
* \param pEnd Distance where the fog ends.
* \remarks This function is only used when the fog mode is set to linear. The new value is adjusted to fit within the interval [FogStart(), inf).
*/
void SetFogEnd(double pEnd);
/** Returns the distance from the view where the fog ends.
* \return The distance from the view where the fog ends.
* \remarks This function is only used when the fog mode is set to linear.
*/
double GetFogEnd() const;
//@}
/**
* \name Shadow Planes
* The functions in this section are supported only by FiLMBOX version 2.7 and earlier.
* FiLMBOX 3.0 supports shadow planes within a specific shader, which is not supported by the FBX SDK.
*/
//@{
/** Struct used to define the shadow plane.
*/
struct FBXSDK_DLL ShadowPlane
{
//! Default constructor.
ShadowPlane();
//! Activate flag.
bool mEnable;
//! Origin point.
FbxVector4 mOrigin;
//! Normal vector.
FbxVector4 mNormal;
};
/** Activates or disables the display of shadow planes.
* \param pShadowEnable Set to \c true to display shadow planes in the scene.
*/
void SetShadowEnable(bool pShadowEnable);
/** Returns the current state of the shadow enable flag.
* \return \c True if shadow planes are set to be displayed in the scene.
*/
bool GetShadowEnable() const;
/** Sets the shadow intensity that is applied to all shadow planes.
* \param pShadowIntensity Intensity applied to all the shadow planes.
* \remarks Ranges from 0 to 300.
*/
void SetShadowIntensity(double pShadowIntensity);
/** Returns the shadow intensity applied to all shadow planes.
* \return The intensity applied to all shadow planes in the scene.
* \remarks Ranges from 0 to 300.
*/
double GetShadowIntensity() const;
/** Returns the number of shadow planes.
* \return Number of shadow planes.
*/
int GetShadowPlaneCount() const;
/** Returns a shadow plane at the specified index.
* \param pIndex Shadow plane index.
* \param pStatus The FbxStatus object to hold error codes.
* \return Pointer the shadow plane, or \c NULL if the index is out of range.
*/
ShadowPlane* GetShadowPlane(int pIndex, FbxStatus* pStatus=NULL);
/** Adds a shadow plane.
* \param pShadowPlane The shadow plane to be added.
*/
void AddShadowPlane(ShadowPlane pShadowPlane);
//! Removes all shadow planes.
void RemoveAllShadowPlanes();
//@}
//! Restores default settings.
void RestoreDefaultSettings();
/** Assignment operator.
* \param pGlobalLightSettings FbxGlobalLightSettings object assigned to this one.
*/
const FbxGlobalLightSettings& operator=(const FbxGlobalLightSettings& pGlobalLightSettings);
/*****************************************************************************************************************************
** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
*****************************************************************************************************************************/
#ifndef DOXYGEN_SHOULD_SKIP_THIS
private:
FbxGlobalLightSettings();
~FbxGlobalLightSettings();
FbxGlobalLightSettingsProperties* mPH;
#endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
};
#include <fbxsdk/fbxsdk_nsend.h>
#endif /* _FBXSDK_FILEIO_GLOBAL_LIGHT_SETTINGS_H_ */