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. 
  
                 |