120 lines
3.5 KiB
C
120 lines
3.5 KiB
C
/*
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Description : EdLight.c
|
|
//
|
|
// Engine structure for light
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Creation date: 11 feb 1997 Author: J Thénoz
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Modification date: Author:
|
|
//
|
|
//
|
|
//
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
*/
|
|
|
|
#include "acp_base.h"
|
|
#include "EdLight.h"
|
|
#include "geo.h"
|
|
#include "gli.h"
|
|
|
|
static long lType;
|
|
|
|
//-------------------------------- Light
|
|
// construction, destruction, copy
|
|
GLI_tdxHandleToLight fn_hConstructLight (void)
|
|
{
|
|
GLI_tdxHandleToLight hLight;
|
|
//CHINA WFQ (MT) 16/02/98 {
|
|
MTH3D_tdstVector xTemp;
|
|
//ENDCHINA WFQ }
|
|
GLI_xCreateLight ( &hLight, lType ) ;
|
|
|
|
GLI_xSetLightState ( hLight, TRUE ) ;
|
|
GLI_vSetLightNearFar ( hLight, (float)0.50, (float)1. );
|
|
GLI_vSetLightAlphas ( hLight, (float)30.f/180.f*MTH_C_Pi, (float)45.f/180.f*MTH_C_Pi );
|
|
//CHINA WFQ (MT) 16/02/98 {
|
|
xTemp.xX = xTemp.xY = xTemp.xZ = (float)0;
|
|
GLI_vSetLight_Inter_Min_Pos(hLight, xTemp);
|
|
GLI_vSetLight_Exter_Min_Pos(hLight, xTemp);
|
|
xTemp.xX = xTemp.xY = xTemp.xZ = (float)0.5;
|
|
GLI_vSetLight_Inter_Max_Pos(hLight, xTemp);
|
|
xTemp.xX = xTemp.xY = xTemp.xZ = (float)1.0;
|
|
GLI_vSetLight_Exter_Max_Pos(hLight, xTemp);
|
|
GLI_vSetLight_Intensity_Min_Max(hLight, (float)0, (float)0.5);
|
|
//ENDCHINA WFQ }
|
|
return hLight;
|
|
}
|
|
|
|
|
|
void fn_vDestroyLight (GLI_tdxHandleToLight hLight)
|
|
{
|
|
// C'est pas suffisant
|
|
hLight=NULL;
|
|
}
|
|
|
|
void fn_vCopyLight ( GLI_tdxHandleToLight hLightDest, GLI_tdxHandleToLight hLightSrc )
|
|
{
|
|
long lState;
|
|
//ROMTEAM Near/far Ionut Grozea 14-08-1998
|
|
MTH_tdxReal xLittleAlpha, xBigAlpha;
|
|
//ROMTEAM Near/far Ionut Grozea 14-08-1998
|
|
MTH_tdxReal xNear,xFar;
|
|
GEO_tdstColor stColor;
|
|
POS_tdstCompletePosition stMatrix;
|
|
//CHINA WFQ (MT) 16/02/98 {
|
|
MTH3D_tdstVector xTemp;
|
|
//ENDCHINA WFQ }
|
|
POS_fn_vSetIdentityMatrix(&stMatrix);
|
|
|
|
GLI_xGetLightState ( hLightSrc, &lState );
|
|
GLI_xSetLightState ( hLightDest, lState );
|
|
|
|
//ROMTEAM Near/far Ionut Grozea 14-08-1998
|
|
GLI_vGetLightAlphas ( hLightSrc , &xLittleAlpha, &xBigAlpha );
|
|
GLI_vSetLightAlphas ( hLightDest , xLittleAlpha, xBigAlpha );
|
|
GLI_vGetLightNearFar ( hLightSrc, &xNear, &xFar );
|
|
//ROMTEAM Near/far Ionut Grozea 14-08-1998
|
|
GLI_vSetLightNearFar ( hLightDest, xNear, xFar );
|
|
|
|
GLI_xGetLightColor ( hLightSrc, &stColor);
|
|
GLI_xSetLightColor ( hLightDest, &stColor);
|
|
|
|
GLI_xGetLightMatrix ( hLightSrc, &stMatrix ) ;
|
|
GLI_xSetLightMatrix ( hLightDest, &stMatrix ) ;
|
|
|
|
//CHINA WFQ (MT) 16/02/98 {
|
|
GLI_vGetLight_Intensity_Min_Max ( hLightSrc, &xNear, &xFar);
|
|
GLI_vSetLight_Intensity_Min_Max ( hLightDest, xNear, xFar );
|
|
|
|
GLI_vGetLight_Inter_Min_Pos(hLightSrc, &xTemp);
|
|
GLI_vSetLight_Inter_Min_Pos(hLightDest, xTemp);
|
|
|
|
GLI_vGetLight_Exter_Min_Pos(hLightSrc, &xTemp);
|
|
GLI_vSetLight_Exter_Min_Pos(hLightDest, xTemp);
|
|
|
|
GLI_vGetLight_Inter_Max_Pos(hLightSrc, &xTemp);
|
|
GLI_vSetLight_Inter_Max_Pos(hLightDest, xTemp);
|
|
|
|
GLI_vGetLight_Exter_Max_Pos(hLightSrc, &xTemp);
|
|
GLI_vSetLight_Exter_Max_Pos(hLightDest, xTemp);
|
|
//}C WFQ
|
|
GLI_vSetLightType (hLightDest ,GLI_lGetLightType(hLightSrc) );
|
|
}
|
|
|
|
//------------- Type
|
|
void fn_vSetTypeLight (long lType_)
|
|
{
|
|
lType=lType_;
|
|
}
|
|
|
|
long fn_lGetTypeLight (void)
|
|
{
|
|
return lType;
|
|
}
|