ILightSource Interface
- GetLocation
- SetLocation
- GetColor
- SetColor
ILightSource interface is implemented by the model. The methods
allow changing location of the light source, change its type to directional or
local and manipulate different components of its color. This information is
stored with the model. In this product a model cal have maximum 8 lights.
To obtain ILightSource, query IPropertyArray from IModel, The "LightSourceArray"
property in the property array can be safely coerced into IArray type. See
Light programming sample for details.
Note that IArray, controlling the array of lights, has some limitations: InsertAt
method is not implemented and returns an error if called. Use Add method
instead. Parameter index of RemoveAt(index) method is ignored and
the last element is removed instead.
See also
Light programming sample,
IPropertyArray,
IModel,
Interface List
HRESULT
GetLocation( double * pdX, double * pdY, double * pdZ, VARIANT_BOOL *pbDirection
)
Parameters
pdX, pdY, pdZ
- [out] pointer to the
double variable
which will receive the coordinate.
pbDirection
-
[out] if the source comes from a direction, rather than a finite
location, this variable will be set to 1 (true), and to 0 otherwise.
Return Values
- S_OK in case of
success.
DISP_E_PARAMNOTOPTIONAL if either of the parameters is NULL
-
- Remarks
-
-
- Light can come either from a direction or from a finite location, Both
these cases are distinguished by the return in pbDirection
variable. In both cases the Coordinates are related to the global coordinate
system.
HRESULT
SetLocation( double dX, double dY, double dZ, VARIANT_BOOL bDirection)
Parameters
dX, dY, dZ - [in] coordinates of new
location.
bDirection
- [in] is this paraneter is zero dX, dY, dZ will
be considered as coordinates of a direction, rather than finite location.
Return Values
-
- S_OK in case of
success.
-
- Remarks
-
-
- Light can come either from a direction or from a finite location, These
cases are distinguished by the bDirection
variable. In both cases the Coordinates are related to the global coordinate
system.
-
-
HRESULT
GetColor( int nComponent, float * pfRed, float * pfGreen, float * pfBlue)
Parameters
nComponent - [in] index of the required light
component: 0-Ambient, 1-Diffuse, 2-Specular. (See Materials).
pfRed, pfGreen, pfBlue- [out]
pointers to variables, which will be set to intensity of RGB components of color
of the light source. Components of the color are float numbers between 0.0 and
1.0. Red component of 0.0 means that the color has no red component.
DISP_E_PARAMNOTOPTIONAL if either of the pointers is NULL.
DISP_E_BADINDEX if
nComponent is neither 0,1 or2.
Return Values
- S_OK in case of
success.
HRESULT
SetColor( int nComponent, float fRed, float fGreen, float fBlue)
Parameters
nComponent - [in] index of the light
component: 0-Ambient, 1-Diffuse, 2-Specular. (See Materials).
fRed, fGreen, fBlue
- [in] RGB components of color
of the light source. Components of the color are float numbers between 0.0 and
1.0. Red component of 0.0 means that the color has no red component.
Return Values
- S_OK in case of
success.
DISP_E_BADINDEX if
nComponent is neither 0,1 or2.
|