1789 lines
73 KiB
C
1789 lines
73 KiB
C
/*=========================================================================
|
|
* Light.cpp : Light's functions
|
|
*
|
|
*
|
|
*
|
|
* Light MUST BE REPLACE BY THE C FILENAME
|
|
*
|
|
*
|
|
* Version 1.0
|
|
* Creation date 01/10/96
|
|
* Revision date
|
|
*
|
|
* That file needs to be compatible for all platforms.
|
|
*
|
|
* (c) Ubi Studios 1996
|
|
*=======================================================================*/
|
|
|
|
/*******************************************************/
|
|
/**** For the structures and variables declarations ****/
|
|
/*******************************************************/
|
|
#define D_MSLight_StructureDefine
|
|
#define D_MSLight_VariableDefine
|
|
|
|
#include "ACP_Base.h"
|
|
#include "CPA_Expt.h"
|
|
|
|
|
|
#ifdef U64
|
|
#include "CPA_Std.h"
|
|
#include "GEO/color.h"
|
|
#endif /*U64*/
|
|
|
|
|
|
#ifndef U64
|
|
#include "ToolsCPA.h"
|
|
#include "../../GLIGLOU/MULTIDRV/INC/light_st.h"
|
|
#else
|
|
#include "../../GLI/specif/light_st.h"
|
|
#include "ToolsCPA.h"
|
|
#endif /*U64*/
|
|
|
|
|
|
|
|
#include "Options/Options.h"
|
|
#include "Macros.h"
|
|
|
|
#include "Actions/AllActs.h"
|
|
|
|
#include "Structur/MemGame.h"
|
|
#include "Structur/ErrGame.h"
|
|
#include "Structur/Objects.h"
|
|
#include "Structur/GameScpt.h"
|
|
#include "Structur/StdObjSt.h"
|
|
#include "Structur/EngMode.h"
|
|
|
|
#include "Basic.h"
|
|
#include "GameEng.h"
|
|
#include "ObjInit.h"
|
|
#include "ZeMem.h"
|
|
#include "toolmatr.h"
|
|
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdstColor MSLight_g_stColorTmpColor;
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object action script callback
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Object pointer
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 01/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : 18/02/96 Modification Author : Michaël
|
|
* Modifications : Direct access to GLI_tdstLight
|
|
*---------------------------------------------------------------------------*/
|
|
#if defined(GAM_USE_SCRIPT)
|
|
SCR_tde_Anl_ReturnValue fn_eLightScriptCallBack(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action _eAction)
|
|
{
|
|
SCR_tde_Anl_ReturnValue eReturnValue = SCR_ERV_Anl_NormalReturn;
|
|
MS_tdxHandleToMSLight h_MSLight;
|
|
struct tdstEngineObject_ *p_stEngineObject;
|
|
|
|
_p_stFile=_p_stFile;
|
|
|
|
SCR_M_RdL0_GetSectionLong(C_ParentSection,0,struct tdstEngineObject_ *, p_stEngineObject);
|
|
|
|
if (M_IsTitle)
|
|
{
|
|
MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeLight , p_stEngineObject);
|
|
h_MSLight = fn_h_LightRealAlloc();
|
|
MMG_fn_vEndMemoryInfo ();
|
|
p_stEngineObject->h_MSLight=h_MSLight;
|
|
|
|
M_CheckScriptParamNumber(1);
|
|
if (!stricmp(_ap_szParams[0],"Parallel"))
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,1);
|
|
else if (!stricmp(_ap_szParams[0],"Spherical"))
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,2);
|
|
else if (!stricmp(_ap_szParams[0],"HotSpot"))
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,3);
|
|
else if (!stricmp(_ap_szParams[0],"Ambient"))
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,4);
|
|
/*CHINA WFQ (MT) 16-02-98 {*/
|
|
else if (!stricmp(_ap_szParams[0],"ParallelBox"))
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,5);
|
|
/*ENDCHINA WFQ }*/
|
|
else
|
|
fn_vMSLightSetTypeOfLight(h_MSLight,4);
|
|
|
|
SCR_M_RdL0_SetSectionLong(C_ThisSection,0,h_MSLight);
|
|
}
|
|
else if (M_IsEntry)
|
|
{
|
|
SCR_M_RdL0_GetSectionLong(C_ThisSection,0,MS_tdxHandleToMSLight,h_MSLight);
|
|
if (M_ActionIs(C_EntryLightOnOff))
|
|
{
|
|
M_CheckScriptParamNumber(1);
|
|
fn_vMSLightSetOnOff(h_MSLight,(unsigned char)fn_lAToI(_ap_szParams[0]));
|
|
}
|
|
else if (M_ActionIs(C_EntryLightFarNear))
|
|
{
|
|
M_CheckScriptParamNumber(2);
|
|
fn_vMSLightSetNearFar(h_MSLight,fn_fAToF(_ap_szParams[1]),fn_fAToF(_ap_szParams[0]));
|
|
}
|
|
else if (M_ActionIs(C_EntryLightLittleBigAlpha))
|
|
{
|
|
M_CheckScriptParamNumber(2);
|
|
fn_vMSLightSetAlphas(h_MSLight,fn_fAToF(_ap_szParams[0]),fn_fAToF(_ap_szParams[1]));
|
|
}
|
|
else if (M_ActionIs(C_EntryLightColor))
|
|
{
|
|
M_CheckScriptParamNumber(4);
|
|
fn_vMSLightSetColorRGBA(h_MSLight,(GEO_tdxColorValue)fn_fAToF(_ap_szParams[0]),(GEO_tdxColorValue)fn_fAToF(_ap_szParams[1]),(GEO_tdxColorValue)fn_fAToF(_ap_szParams[2]),(GEO_tdxColorValue)fn_fAToF(_ap_szParams[3]));
|
|
}
|
|
else if (M_ActionIs(C_EntryGiroPhare))
|
|
{
|
|
M_CheckScriptParamNumber(2);
|
|
fn_vMSLightSetGiroPhare(h_MSLight,(unsigned char)fn_lAToI(_ap_szParams[0]),fn_fAToF(_ap_szParams[1]));
|
|
}
|
|
else if (M_ActionIs(C_EntryPulse))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_vMSLightSetPulse(h_MSLight,(unsigned char)fn_lAToI(_ap_szParams[0]),fn_fAToF(_ap_szParams[1]),fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryOffset))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_vMSLightSetOffset(h_MSLight,fn_fAToF(_ap_szParams[0]),fn_fAToF(_ap_szParams[1]),fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryDirection))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_vMSLightSetDirection(h_MSLight,fn_fAToF(_ap_szParams[0]),fn_fAToF(_ap_szParams[1]),fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
/*ANNECY CT 13/01/98 {*/
|
|
else if (M_ActionIs(C_EntryLocalLight))
|
|
{
|
|
M_CheckScriptParamNumber(1);
|
|
fn_vMSLightSetLocalLight(h_MSLight,(unsigned char)fn_lAToI(_ap_szParams[0]));
|
|
}
|
|
else if (M_ActionIs(C_EntryOnlyLocalLight))
|
|
{
|
|
M_CheckScriptParamNumber(1);
|
|
fn_vMSLightSetOnlyLocalLight(h_MSLight,(unsigned char)fn_lAToI(_ap_szParams[0]));
|
|
}
|
|
/*ENDANNECY CT }*/
|
|
/*CHINA WFQ (MT) 16-02-98 {*/
|
|
else if (M_ActionIs(C_EntryInterMinPos))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_xMSLightSetInterMinXYZ(h_MSLight,fn_fAToF(_ap_szParams[0]), fn_fAToF(_ap_szParams[1]), fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryInterMaxPos))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_xMSLightSetInterMaxXYZ(h_MSLight,fn_fAToF(_ap_szParams[0]), fn_fAToF(_ap_szParams[1]), fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryExterMinPos))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_xMSLightSetExterMinXYZ(h_MSLight,fn_fAToF(_ap_szParams[0]), fn_fAToF(_ap_szParams[1]), fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryExterMaxPos))
|
|
{
|
|
M_CheckScriptParamNumber(3);
|
|
fn_xMSLightSetExterMaxXYZ(h_MSLight,fn_fAToF(_ap_szParams[0]), fn_fAToF(_ap_szParams[1]), fn_fAToF(_ap_szParams[2]));
|
|
}
|
|
else if (M_ActionIs(C_EntryIntensityMinMax))
|
|
{
|
|
M_CheckScriptParamNumber(2);
|
|
fn_xMSLightSetIntensityMinMax(h_MSLight,fn_fAToF(_ap_szParams[0]), fn_fAToF(_ap_szParams[1]));
|
|
}
|
|
/*ENDCHINA WFQ }*/
|
|
}
|
|
|
|
return(eReturnValue);
|
|
}
|
|
#endif /* GAM_USE_SCRIPT */
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's mini-structure sizeof
|
|
*-----------------------------------------------------------------------------
|
|
* Input : None
|
|
* Output : Size of
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 14/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
unsigned long fn_ulLightSizeOf()
|
|
{
|
|
return(sizeof(struct tdstMSLight_));
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object action allocation
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Object pointer
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 01/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vLightAlloc(struct tdstEngineObject_ *p_stObject)
|
|
{
|
|
if (p_stObject==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructObjectNull);
|
|
|
|
if (p_stObject->h_MSLight!=NULL)
|
|
M_GameFatalError(E_uwGameMiniStructAllocAlreadyAlloc);
|
|
|
|
MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeLight , p_stObject);
|
|
p_stObject->h_MSLight = fn_h_LightRealAlloc();
|
|
MMG_fn_vEndMemoryInfo ();
|
|
fn_vLightInitValueSAI(p_stObject->h_MSLight);
|
|
}
|
|
/*************************************************************************/
|
|
MS_tdxHandleToMSLight fn_h_LightRealAlloc()
|
|
{
|
|
MS_tdxHandleToMSLight h_MSLight;
|
|
|
|
h_MSLight = (MS_tdxHandleToMSLight)M_p_GameMallocInHLM(fn_ulLightSizeOf());
|
|
|
|
fn_vMSLightSetGiroAngle(h_MSLight,0);
|
|
fn_vMSLightSetOffset(h_MSLight,0,0,0);
|
|
fn_vMSCreateLightWithType(h_MSLight,1);
|
|
|
|
h_MSLight->hLightInSector = SECT_fn_hCreateElementLstDNMLights();
|
|
return(h_MSLight);
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object action free
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Object pointer
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 01/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vLightFree(struct tdstEngineObject_ *p_stObject)
|
|
{
|
|
if (p_stObject==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructObjectNull);
|
|
|
|
if (p_stObject->h_MSLight==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructNull);
|
|
|
|
fn_vLightFreeInitValueSAI(p_stObject->h_MSLight);
|
|
MMG_fn_vAddMemoryInfo( MMG_C_lTypeMiniStructure , MMG_C_lSubTypeLight , p_stObject );
|
|
M_GameFreeInHLM(p_stObject->h_MSLight);
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object action initialisation
|
|
*-----------------------------------------------------------------------------
|
|
* Input : When this function's called (see ObjInit.h)
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 01/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : 10 06 98 Modification Author : Fabien Bole-Feysot
|
|
* Modifications : init matrix2 to complete position
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vLightInit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit)
|
|
{
|
|
POS_tdstCompletePosition *p_stMatrix,stMatrix2;
|
|
HIE_tdxHandleToSuperObject /*hSuperObj,*/hSuperObjFather;
|
|
|
|
if (p_stObject==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructObjectNull);
|
|
|
|
if (p_stObject->h_MSLight==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructNull);
|
|
|
|
switch(eObjectInit)
|
|
{
|
|
case OTI_MapLoaded:
|
|
fn_vLightInitValueSAI(p_stObject->h_MSLight);
|
|
fn_vLightSavedValueSAI(p_stObject->h_MSLight);
|
|
case OTI_WhenGameStart:
|
|
if (GLI_lGetLightType(fn_p_stMSLightGetLight(p_stObject->h_MSLight))!=GLI_C_lHotSpotLight)
|
|
{
|
|
p_stObject->h_MSLight->p_stVisuLight=fn_pCreateSphere(fn_xMSLightGetOffsetX(p_stObject->h_MSLight),fn_xMSLightGetOffsetY(p_stObject->h_MSLight),fn_xMSLightGetOffsetZ(p_stObject->h_MSLight),(MTH_tdxReal)0.2);
|
|
}
|
|
else
|
|
{
|
|
p_stObject->h_MSLight->p_stVisuLight=fn_pCreateCone(fn_xMSLightGetOffsetX(p_stObject->h_MSLight),fn_xMSLightGetOffsetY(p_stObject->h_MSLight),fn_xMSLightGetOffsetZ(p_stObject->h_MSLight),(MTH_tdxReal)1);
|
|
}
|
|
|
|
case OTI_AlwaysCreated:
|
|
case OTI_PlayerDead:
|
|
case OTI_ReinitTheMap:
|
|
case OTI_LoadSavedGame:
|
|
/* Update GLI_tdstLight object*/
|
|
/* Set the matrix of the light equal to its father's one*/
|
|
hSuperObjFather=M_GetSuperObject(p_stObject);
|
|
if (hSuperObjFather!=NULL)
|
|
{
|
|
p_stMatrix=HIE_fn_hGetSuperObjectMatrix(hSuperObjFather);
|
|
/* POS_fn_vInitPositionFlag(&stMatrix2); //AR 980623 position MUST be initialised*/
|
|
POS_fn_vInvertIsoMatrix(&stMatrix2,p_stMatrix);
|
|
POS_fn_vNormalizeMatrix(&stMatrix2);
|
|
GLI_xSetLightMatrix ( fn_p_stMSLightGetLight(p_stObject->h_MSLight) , &stMatrix2);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
#define C_Light_SAIInitFlags (SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded)
|
|
|
|
/*************************************************************************/
|
|
void fn_vLightInitValueSAI(MS_tdxHandleToMSLight _h_MSLight)
|
|
{
|
|
/**** structure light GLI ****/
|
|
GLI_vStoreLightForInit(_h_MSLight->p_stLight,SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded);
|
|
|
|
/**** strcuture light MS ****/
|
|
SAI_fn_bInsertMTHVectorInTable((void*)&_h_MSLight->stOffsetVect, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHVectorInTable((void*)&_h_MSLight->stAngle, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bPulsing, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xStepPulse, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xMaxRangePulse, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bLocalLight, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bOnlyLocalLight, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bGiroPhare, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xStepGiro, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xGiroAngle, C_Light_SAIInitFlags);
|
|
/* ANNECY AV {*/
|
|
/*
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
*/
|
|
SAI_fn_bInsertArrayInTable (& _h_MSLight -> p_stLight -> xInter_Min_Pos , sizeof (MTH3D_tdstVector) , C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertArrayInTable (& _h_MSLight -> p_stLight -> xInter_Max_Pos , sizeof (MTH3D_tdstVector) , C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertArrayInTable (& _h_MSLight -> p_stLight -> xExter_Min_Pos , sizeof (MTH3D_tdstVector) , C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertArrayInTable (& _h_MSLight -> p_stLight -> xExter_Max_Pos , sizeof (MTH3D_tdstVector) , C_Light_SAIInitFlags);
|
|
/* END ANNECY AV }*/
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xIntensity_Min, C_Light_SAIInitFlags);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xIntensity_Max, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
void fn_vLightSavedValueSAI(MS_tdxHandleToMSLight _h_MSLight)
|
|
{
|
|
/*
|
|
// *** structure light GLI *** - Oliv' - Portage v15 - 1 warning removed here
|
|
GLI_vStoreLightForInit(_h_MSLight->p_stLight,SAI_ePlayerSaveCurrentValue);
|
|
|
|
SAI_fn_bInsertMTHVectorInTable((void*)&_h_MSLight->stOffsetVect,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHVectorInTable((void*)&_h_MSLight->stAngle,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bPulsing,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xStepPulse,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xMaxRangePulse,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertCharInTable((void*)&_h_MSLight->bGiroPhare,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xStepGiro,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->xGiroAngle,SAI_ePlayerSaveCurrentValue);
|
|
//CHINA WFQ (MT) 16-02-98 {
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xX,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xY,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xZ,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xX,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xY,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xZ,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xX,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xY,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xZ,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xX,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xY,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xZ,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xIntensity_Min,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bInsertMTHRealInTable((void*)&_h_MSLight->p_stLight->xIntensity_Max,SAI_ePlayerSaveCurrentValue);
|
|
//ENDCHINA WFQ }
|
|
*/
|
|
}
|
|
/*************************************************************************/
|
|
void fn_vLightFreeInitValueSAI(MS_tdxHandleToMSLight _h_MSLight)
|
|
{
|
|
GLI_vRemoveLightForInit(_h_MSLight->p_stLight, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->stOffsetVect, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->stAngle, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bPulsing, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xStepPulse, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xMaxRangePulse, C_Light_SAIInitFlags);
|
|
/*ANNECY CT 13/01/98 {*/
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bLocalLight, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bOnlyLocalLight, C_Light_SAIInitFlags);
|
|
/*ENDANNECY CT }*/
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bGiroPhare, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xStepGiro, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xGiroAngle, C_Light_SAIInitFlags);
|
|
/*CHINA WFQ (MT) 16-02-98 {*/
|
|
/* ANNECY AV {*/
|
|
/*
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
*/
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Min_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xInter_Max_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Min_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xExter_Max_Pos, C_Light_SAIInitFlags);
|
|
/* END ANNECY AV }*/
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xIntensity_Min, C_Light_SAIInitFlags);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->p_stLight->xIntensity_Max, C_Light_SAIInitFlags);
|
|
/*ENDCHINA WFQ }*/
|
|
/*
|
|
GLI_vRemoveLightForInit(_h_MSLight->p_stLight,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->stOffsetVect,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->stAngle,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bPulsing,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xStepPulse,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xMaxRangePulse,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->bGiroPhare,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xStepGiro,SAI_ePlayerSaveCurrentValue);
|
|
SAI_fn_bRemoveValueFromTable((void*)&_h_MSLight->xGiroAngle,SAI_ePlayerSaveCurrentValue);
|
|
*/
|
|
}
|
|
/*************************************************************************/
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object action desinitialisation
|
|
*-----------------------------------------------------------------------------
|
|
* Input : When this function's called (see ObjInit.h)
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 01/10/96 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vLightDesinit(struct tdstEngineObject_ *p_stObject,enum tdeObjectTreeInit_ eObjectInit)
|
|
{
|
|
if (p_stObject==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructObjectNull);
|
|
|
|
if (p_stObject->h_MSLight==NULL)
|
|
M_GameFatalError(E_uwGameMiniStructNull);
|
|
|
|
switch(eObjectInit)
|
|
{
|
|
case OTI_ReinitTheMap:
|
|
break;
|
|
case OTI_MapLoaded:
|
|
break;
|
|
case OTI_AlwaysCreated:
|
|
case OTI_PlayerDead:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Light's object copy clone action
|
|
*-----------------------------------------------------------------------------
|
|
* Input : Handle to destination, handle to source
|
|
* Output : None
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 30/06/97 Author : Olivier Jourdan
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vLightCopyClone(struct tdstEngineObject_ * _p_stObjectDest,struct tdstEngineObject_ * _p_stObjectSrc)
|
|
{
|
|
GLI_tdstLight *p_stLight;
|
|
SECT_tdxHandleOfElementLstDNMLights hLightInSector;
|
|
|
|
p_stLight = fn_p_stMSLightGetLight(_p_stObjectDest->h_MSLight);
|
|
hLightInSector = fn_hMSLightGetLightNodeInSector(_p_stObjectDest->h_MSLight);
|
|
|
|
memcpy(_p_stObjectDest->h_MSLight,_p_stObjectSrc->h_MSLight,fn_ulLightSizeOf());
|
|
|
|
fn_vMSLightSetLight(_p_stObjectDest->h_MSLight,p_stLight);
|
|
|
|
GLI_vCopyLight(fn_p_stMSLightGetLight(_p_stObjectDest->h_MSLight),fn_p_stMSLightGetLight(_p_stObjectSrc->h_MSLight));
|
|
fn_vMSLightSetLightNodeInSector(_p_stObjectDest->h_MSLight,hLightInSector);
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : MSLight access functions
|
|
*-----------------------------------------------------------------------------
|
|
* Input : MS_tdxHandleToMSLight + (value)
|
|
* Output : (value or pointer)
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 04/02/97 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : 18/2/97 Modification Author : Michaël
|
|
* Modifications : Direct Access to GLI_tdstLight
|
|
*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vLightReInit(struct tdstEngineObject_ *p_stObject)
|
|
{
|
|
if( p_stObject && p_stObject->h_MSLight)
|
|
{
|
|
MS_tdxHandleToMSLight h_MSLight = p_stObject->h_MSLight;
|
|
|
|
/**** structure light GLI ****/
|
|
GLI_vReInitLight(h_MSLight->p_stLight,SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded);
|
|
|
|
/**** strcuture light MS ****/
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->stOffsetVect, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->stAngle, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->bPulsing, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->xStepPulse, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->xMaxRangePulse, C_Light_SAIInitFlags);
|
|
/*ANNECY CT 13/01/98 {*/
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->bLocalLight, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->bOnlyLocalLight, C_Light_SAIInitFlags);
|
|
/*ENDANNECY CT }*/
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->bGiroPhare, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->xStepGiro, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->xGiroAngle, C_Light_SAIInitFlags);
|
|
/*CHINA WFQ (MT) 16-02-98 {*/
|
|
/* ANNECY AV {*/
|
|
/*
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Min_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Min_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Min_Pos.xZ, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Max_Pos.xX, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Max_Pos.xY, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Max_Pos.xZ, C_Light_SAIInitFlags);
|
|
*/
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Min_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xInter_Max_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Min_Pos, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xExter_Max_Pos, C_Light_SAIInitFlags);
|
|
/* END ANNECY AV }*/
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xIntensity_Min, C_Light_SAIInitFlags);
|
|
SAI_fn_bInitOneValueWhen((void*)&h_MSLight->p_stLight->xIntensity_Max, C_Light_SAIInitFlags);
|
|
/* ENDCHINA WFQ }*/
|
|
}
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : MSLight access functions
|
|
*-----------------------------------------------------------------------------
|
|
* Input : MS_tdxHandleToMSLight + (value)
|
|
* Output : (value or pointer)
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 04/02/97 Author : Francois
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : 18/2/97 Modification Author : Michaël
|
|
* Modifications : Direct Access to GLI_tdstLight
|
|
*---------------------------------------------------------------------------*/
|
|
SECT_tdxHandleOfElementLstDNMLights fn_hMSLightGetLightNodeInSector(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return _hMSLight->hLightInSector;
|
|
}
|
|
void fn_vMSLightSetLightNodeInSector(MS_tdxHandleToMSLight _hMSLight,SECT_tdxHandleOfElementLstDNMLights _hLightNode)
|
|
{
|
|
_hMSLight->hLightInSector = _hLightNode;
|
|
}
|
|
|
|
/*************************************/
|
|
/**** Access functions for Editor ****/
|
|
/*************************************/
|
|
#if defined(ACTIVE_EDITOR)
|
|
|
|
/*ANNECY CT 13/01/98 {*/
|
|
/* Local Light*/
|
|
/*************************************************************************/
|
|
unsigned char *fn_p_ucMSLightGetLocalLightInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(unsigned char *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->bLocalLight, C_Light_SAIInitFlags);
|
|
}
|
|
/* OnlyLocalLight*/
|
|
/*************************************************************************/
|
|
unsigned char *fn_p_ucMSLightGetOnlyLocalInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(unsigned char *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->bOnlyLocalLight, C_Light_SAIInitFlags);
|
|
}
|
|
/*ENDANNECY CT }*/
|
|
|
|
/*************************************************************************/
|
|
unsigned char *fn_p_ucMSLightGetGiroPhareInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(unsigned char *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->bGiroPhare, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
unsigned char *fn_p_ucMSLightGetPulsingInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(unsigned char *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->bPulsing, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetOffsetVectInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->stOffsetVect, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetAngleInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->stAngle, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetStepGiroInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->xStepGiro, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetStepPulseInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->xStepPulse, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetMaxRangePulseInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->xMaxRangePulse, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetGiroAngleInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->xGiroAngle, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
long *fn_p_lMSLightGetOnOffInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(long *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->b_lOnOff, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
long *fn_p_lMSLightGetTypeInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(long *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->lTypeOfLight, C_Light_SAIInitFlags);
|
|
}
|
|
|
|
/* ANNECY AV {*/
|
|
#ifdef ACTIVE_EDITOR
|
|
/*************************************************************************/
|
|
/*CHINA WFQ (MT) 16-02-98{*/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetInterMinInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Min_Pos, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMinXInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMinInit(_hMSLight) -> xX;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Min_Pos.xX, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMinYInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMinInit(_hMSLight) -> xY;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Min_Pos.xY, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMinZInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMinInit(_hMSLight) -> xZ;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Min_Pos.xZ,SAI_eInitWhenPlayerDead|SAI_eInitWhenReinitTheMap|SAI_eInitWhenMapLoaded);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetInterMaxInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Max_Pos, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMaxXInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMaxInit(_hMSLight) -> xX;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Max_Pos.xX, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMaxYInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMaxInit(_hMSLight) -> xY;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Max_Pos.xY, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetInterMaxZInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetInterMaxInit(_hMSLight) -> xZ;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xInter_Max_Pos.xZ, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetExterMinInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Min_Pos, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMinXInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMinInit(_hMSLight) -> xX;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Min_Pos.xX, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMinYInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMinInit(_hMSLight) -> xY;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Min_Pos.xY, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMinZInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMinInit(_hMSLight) -> xZ;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Min_Pos.xZ, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH3D_tdstVector *fn_p_stMSLightGetExterMaxInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH3D_tdstVector *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Max_Pos, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMaxXInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMaxInit(_hMSLight) -> xX;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Max_Pos.xX, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMaxYInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMaxInit(_hMSLight) -> xY;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Max_Pos.xY, C_Light_SAIInitFlags);*/
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetExterMaxZInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return & fn_p_stMSLightGetExterMaxInit(_hMSLight) -> xZ;
|
|
/* (MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xExter_Max_Pos.xZ, C_Light_SAIInitFlags);*/
|
|
}
|
|
#endif /* #ifdef ACTIVE_EDITOR*/
|
|
/* END ANNECY AV }*/
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetIntensityMinInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xIntensity_Min, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetIntensityMaxInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xIntensity_Max, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
/*ENDCHINA WFQ }*/
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetFarInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xFar, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetNearInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xNear, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetLittleAlphaInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xLittleAlpha, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetBigAlphaInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xBigAlpha, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetLittleTangentInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xLittleTangent, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetBigTangentInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->xBigTangent, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetColorRInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->stColor.xR, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetColorBInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->stColor.xB, C_Light_SAIInitFlags);
|
|
}
|
|
/*************************************************************************/
|
|
MTH_tdxReal *fn_p_xMSLightGetColorGInit(MS_tdxHandleToMSLight _hMSLight)
|
|
{
|
|
return
|
|
(MTH_tdxReal *)SAI_fn_p_vGetTableValuePointerOf((void*)&_hMSLight->p_stLight->stColor.xG, C_Light_SAIInitFlags);
|
|
}
|
|
/* END ANNECY MT }*/
|
|
/*************************************************************************/
|
|
#endif /* ACTIVE_EDITOR */
|
|
|
|
/********************************************
|
|
*** Access functions for currents values ***
|
|
********************************************/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
long fn_lMSLightGetTypeOfLight(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(GLI_lGetLightType(fn_p_stMSLightGetLight(h_MSLight)));
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetTypeOfLight(MS_tdxHandleToMSLight h_MSLight,long lTypeOfLight)
|
|
{
|
|
GLI_vSetLightType(fn_p_stMSLightGetLight(h_MSLight),lTypeOfLight);
|
|
}
|
|
|
|
unsigned char fn_ucMSLightGetOnOff(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
long lOnOff;
|
|
|
|
GLI_xGetLightState(fn_p_stMSLightGetLight(h_MSLight),&lOnOff);
|
|
return ((unsigned char)lOnOff);
|
|
}
|
|
void fn_vMSLightSetOnOff(MS_tdxHandleToMSLight h_MSLight,unsigned char ucOnOff)
|
|
{
|
|
GLI_xSetLightState(fn_p_stMSLightGetLight(h_MSLight),ucOnOff);
|
|
}
|
|
void fn_vMSCreateLightWithType(MS_tdxHandleToMSLight h_MSLight,long lTypeOfLight)
|
|
{
|
|
GLI_xCreateLight(fn_pp_stMSLightGetLight(h_MSLight),lTypeOfLight);
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetFar(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xFar,xNear;
|
|
|
|
GLI_vGetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),&xNear,&xFar);
|
|
return xFar;
|
|
}
|
|
void fn_vMSLightSetNearFar(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xNear,MTH_tdxReal xFar)
|
|
{
|
|
GLI_vSetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),xNear,xFar);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vMSLightSetFar(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xFar)
|
|
{
|
|
MTH_tdxReal xFarIni,xNearIni;
|
|
GLI_vGetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),&xNearIni,&xFarIni);
|
|
GLI_vSetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),xNearIni,xFar);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetNear(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xFar,xNear;
|
|
|
|
GLI_vGetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),&xNear,&xFar);
|
|
return xNear;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vMSLightSetNear(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xNear)
|
|
{
|
|
MTH_tdxReal xFarIni,xNearIni;
|
|
GLI_vGetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),&xNearIni,&xFarIni);
|
|
GLI_vSetLightNearFar(fn_p_stMSLightGetLight(h_MSLight),xNear,xFarIni);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetAlphas(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xLittleAlpha,MTH_tdxReal xBigAlpha)
|
|
{
|
|
GLI_vSetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),xLittleAlpha,xBigAlpha);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetLittleAlpha(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xLittleAlpha,xBigAlpha;
|
|
|
|
GLI_vGetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),&xLittleAlpha,&xBigAlpha);
|
|
return xLittleAlpha;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetLittleAlpha(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xLittleAlpha)
|
|
{
|
|
MTH_tdxReal xLittleIni,xBigIni;
|
|
GLI_vGetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),&xLittleIni,&xBigIni);
|
|
GLI_vSetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),xLittleAlpha,xBigIni);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetBigAlpha(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xLittleAlpha,xBigAlpha;
|
|
|
|
GLI_vGetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),&xLittleAlpha,&xBigAlpha);
|
|
return xBigAlpha;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetBigAlpha(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xBigAlpha)
|
|
{
|
|
MTH_tdxReal xLittleIni,xBigIni;
|
|
GLI_vGetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),&xLittleIni,&xBigIni);
|
|
GLI_vSetLightAlphas(fn_p_stMSLightGetLight(h_MSLight),xLittleIni,xBigAlpha);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdstColor *fn_p_stMSLightGetColor(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
GLI_xGetLightColor(fn_p_stMSLightGetLight(h_MSLight),&MSLight_g_stColorTmpColor);
|
|
|
|
return (&MSLight_g_stColorTmpColor);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetColor(MS_tdxHandleToMSLight h_MSLight,GEO_tdstColor *p_stColor)
|
|
{
|
|
GLI_xSetLightColor(fn_p_stMSLightGetLight(h_MSLight),p_stColor);
|
|
}
|
|
void fn_vMSLightSetColorRGBA(MS_tdxHandleToMSLight h_MSLight,GEO_tdxColorValue xR,GEO_tdxColorValue xG,GEO_tdxColorValue xB,GEO_tdxColorValue xA)
|
|
{
|
|
GEO_tdstColor stColor;
|
|
|
|
stColor.xR=xR;
|
|
stColor.xG=xG;
|
|
stColor.xB=xB;
|
|
stColor.xA=xA;
|
|
fn_vMSLightSetColor(h_MSLight,&stColor);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdxColorValue fn_xMSLightGetColorR(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
GEO_tdstColor stColor;
|
|
|
|
GLI_xGetLightColor (fn_p_stMSLightGetLight(h_MSLight),&stColor);
|
|
return(stColor.xR);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdxColorValue fn_xMSLightGetColorG(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
GEO_tdstColor stColor;
|
|
|
|
GLI_xGetLightColor (fn_p_stMSLightGetLight(h_MSLight),&stColor);
|
|
return(stColor.xG);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdxColorValue fn_xMSLightGetColorB(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
GEO_tdstColor stColor;
|
|
|
|
GLI_xGetLightColor (fn_p_stMSLightGetLight(h_MSLight),&stColor);
|
|
return(stColor.xB);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
GEO_tdxColorValue fn_xMSLightGetColorA(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
GEO_tdstColor stColor;
|
|
|
|
GLI_xGetLightColor (fn_p_stMSLightGetLight(h_MSLight),&stColor);
|
|
return(stColor.xA);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
GLI_tdstLight **fn_pp_stMSLightGetLight(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(&(h_MSLight->p_stLight));
|
|
}
|
|
GLI_tdstLight *fn_p_stMSLightGetLight(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->p_stLight);
|
|
}
|
|
void fn_vMSLightSetLight(MS_tdxHandleToMSLight h_MSLight,GLI_tdstLight *p_stLight)
|
|
{
|
|
h_MSLight->p_stLight=p_stLight;
|
|
}
|
|
|
|
/*ANNECY CT 13/01/98 {*/
|
|
void fn_vMSLightSetLocalLight(MS_tdxHandleToMSLight h_MSLight,unsigned char bLocalLight) {
|
|
h_MSLight->bLocalLight=bLocalLight;
|
|
}
|
|
unsigned char fn_bMSLightGetLocalLight(MS_tdxHandleToMSLight h_MSLight) {
|
|
return(h_MSLight->bLocalLight);
|
|
}
|
|
|
|
void fn_vMSLightSetOnlyLocalLight(MS_tdxHandleToMSLight h_MSLight,unsigned char bOnlyLocalLight) {
|
|
h_MSLight->bOnlyLocalLight=bOnlyLocalLight;
|
|
}
|
|
unsigned char fn_bMSLightGetOnlyLocalLight(MS_tdxHandleToMSLight h_MSLight) {
|
|
return(h_MSLight->bOnlyLocalLight);
|
|
}
|
|
/*ENDANNECY CT }*/
|
|
|
|
void fn_vMSLightSetGiroPhare(MS_tdxHandleToMSLight h_MSLight,unsigned char bOnOff,MTH_tdxReal xStep)
|
|
{
|
|
h_MSLight->bGiroPhare=bOnOff;
|
|
h_MSLight->xStepGiro=xStep;
|
|
}
|
|
unsigned char fn_bMSLightGetGiroPhare(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->bGiroPhare);
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetGiroStep(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->xStepGiro);
|
|
}
|
|
void fn_vMSLightSetGiroAngle(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xAngle)
|
|
{
|
|
h_MSLight->xGiroAngle=xAngle;
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetGiroAngle(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->xGiroAngle);
|
|
}
|
|
void fn_vMSLightSetPulse(MS_tdxHandleToMSLight h_MSLight,unsigned char bOnOff,MTH_tdxReal xStep,MTH_tdxReal xMaxRange)
|
|
{
|
|
h_MSLight->bPulsing=bOnOff;
|
|
h_MSLight->xStepPulse=xStep;
|
|
h_MSLight->xMaxRangePulse=xMaxRange;
|
|
}
|
|
unsigned char fn_bMSLightGetPulse(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->bPulsing);
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetPulseStep(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->xStepPulse);
|
|
}
|
|
void fn_xMSLightSetPulseStep(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xStep)
|
|
{
|
|
h_MSLight->xStepPulse=xStep;
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetPulseMaxRange(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(h_MSLight->xMaxRangePulse);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_xMSLightSetPulseMaxRange(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xRange)
|
|
{
|
|
h_MSLight->xMaxRangePulse=xRange;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
void fn_vMSLightSetOffset(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xX,MTH_tdxReal xY,MTH_tdxReal xZ)
|
|
{
|
|
MTH3D_M_vSetXofVector(&h_MSLight->stOffsetVect,xX);
|
|
MTH3D_M_vSetYofVector(&h_MSLight->stOffsetVect,xY);
|
|
MTH3D_M_vSetZofVector(&h_MSLight->stOffsetVect,xZ);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
void fn_vMSLightSetOffsetVector(MS_tdxHandleToMSLight h_MSLight,MTH3D_tdstVector *p_stVector)
|
|
{
|
|
MTH3D_M_vCopyVector(&h_MSLight->stOffsetVect,p_stVector);
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
MTH3D_tdstVector *fn_p_stMSLightGetOffset(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return(&(h_MSLight->stOffsetVect));
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetOffsetX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return((h_MSLight->stOffsetVect).xX);
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetOffsetY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return((h_MSLight->stOffsetVect).xY);
|
|
}
|
|
MTH_tdxReal fn_xMSLightGetOffsetZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return((h_MSLight->stOffsetVect).xZ);
|
|
}
|
|
/*CHINA WFQ (MT) 16-02-98 {*/
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMinX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMin;
|
|
GLI_vGetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMin);
|
|
return xInterMin.xX;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMinY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMin;
|
|
GLI_vGetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMin);
|
|
return xInterMin.xY;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMinZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMin;
|
|
GLI_vGetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMin);
|
|
return xInterMin.xZ;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMaxX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMax;
|
|
GLI_vGetLight_Inter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMax);
|
|
return xInterMax.xX;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMaxY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMax;
|
|
GLI_vGetLight_Inter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMax);
|
|
return xInterMax.xY;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetInterMaxZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xInterMax;
|
|
GLI_vGetLight_Inter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xInterMax);
|
|
return xInterMax.xZ;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMinX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMin;
|
|
GLI_vGetLight_Exter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMin);
|
|
return xExterMin.xX;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMinY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMin;
|
|
GLI_vGetLight_Exter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMin);
|
|
return xExterMin.xY;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMinZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMin;
|
|
GLI_vGetLight_Exter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMin);
|
|
return xExterMin.xZ;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMaxX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMax;
|
|
GLI_vGetLight_Exter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMax);
|
|
return xExterMax.xX;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMaxY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMax;
|
|
GLI_vGetLight_Exter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMax);
|
|
return xExterMax.xY;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetExterMaxZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH3D_tdstVector xExterMax;
|
|
GLI_vGetLight_Exter_Max_Pos(fn_p_stMSLightGetLight(h_MSLight),&xExterMax);
|
|
return xExterMax.xZ;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetIntensityMin(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xIntensity_Min, xIntensity_Max;
|
|
GLI_vGetLight_Intensity_Min_Max(fn_p_stMSLightGetLight(h_MSLight),&xIntensity_Min, &xIntensity_Max);
|
|
return xIntensity_Min;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetIntensityMax(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
MTH_tdxReal xIntensity_Min, xIntensity_Max;
|
|
GLI_vGetLight_Intensity_Min_Max(fn_p_stMSLightGetLight(h_MSLight),&xIntensity_Min, &xIntensity_Max);
|
|
return xIntensity_Max;
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
void fn_xMSLightSetInterMinXYZ(MS_tdxHandleToMSLight h_MSLight, MTH_tdxReal xInterMinX , MTH_tdxReal xInterMinY, MTH_tdxReal xInterMinZ)
|
|
{
|
|
MTH3D_tdstVector xInterMin;
|
|
xInterMin.xX = xInterMinX;xInterMin.xY = xInterMinY;xInterMin.xZ = xInterMinZ;
|
|
GLI_vSetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),xInterMin);
|
|
}
|
|
|
|
void fn_xMSLightSetInterMaxXYZ(MS_tdxHandleToMSLight h_MSLight, MTH_tdxReal xInterMaxX, MTH_tdxReal xInterMaxY, MTH_tdxReal xInterMaxZ)
|
|
{
|
|
MTH3D_tdstVector xInterMax;
|
|
xInterMax.xX = xInterMaxX;xInterMax.xY = xInterMaxY;xInterMax.xZ = xInterMaxZ;
|
|
GLI_vSetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),xInterMax);
|
|
}
|
|
|
|
void fn_xMSLightSetExterMinXYZ(MS_tdxHandleToMSLight h_MSLight, MTH_tdxReal xExterMinX, MTH_tdxReal xExterMinY, MTH_tdxReal xExterMinZ)
|
|
{
|
|
MTH3D_tdstVector xExterMin;
|
|
xExterMin.xX = xExterMinX;xExterMin.xY = xExterMinY;xExterMin.xZ = xExterMinZ;
|
|
GLI_vSetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),xExterMin);
|
|
}
|
|
|
|
void fn_xMSLightSetExterMaxXYZ(MS_tdxHandleToMSLight h_MSLight, MTH_tdxReal xExterMaxX, MTH_tdxReal xExterMaxY, MTH_tdxReal xExterMaxZ)
|
|
{
|
|
MTH3D_tdstVector xExterMax;
|
|
xExterMax.xX = xExterMaxX;xExterMax.xY = xExterMaxY;xExterMax.xZ = xExterMaxZ;
|
|
GLI_vSetLight_Inter_Min_Pos(fn_p_stMSLightGetLight(h_MSLight),xExterMax);
|
|
}
|
|
|
|
void fn_xMSLightSetIntensityMinMax(MS_tdxHandleToMSLight h_MSLight, MTH_tdxReal xIntensity_Min, MTH_tdxReal xIntensity_Max)
|
|
{
|
|
GLI_vSetLight_Intensity_Min_Max(fn_p_stMSLightGetLight(h_MSLight),xIntensity_Min, xIntensity_Max);
|
|
}
|
|
|
|
/*ENDCHINA WFQ }*/
|
|
|
|
void fn_vMSLightSetDirection(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal xX,MTH_tdxReal xY,MTH_tdxReal xZ)
|
|
{
|
|
MTH3D_M_vSetXofVector(&h_MSLight->stAngle,xX);
|
|
MTH3D_M_vSetYofVector(&h_MSLight->stAngle,xY);
|
|
MTH3D_M_vSetZofVector(&h_MSLight->stAngle,xZ);
|
|
}
|
|
void fn_vMSLightGetDirection(MS_tdxHandleToMSLight h_MSLight,MTH_tdxReal *p_xX,MTH_tdxReal *p_xY,MTH_tdxReal *p_xZ)
|
|
{
|
|
*p_xX=MTH3D_M_xGetXofVector(&h_MSLight->stAngle);
|
|
*p_xY=MTH3D_M_xGetYofVector(&h_MSLight->stAngle);
|
|
*p_xZ=MTH3D_M_xGetZofVector(&h_MSLight->stAngle);
|
|
}
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetDirectionX(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return (MTH3D_M_xGetXofVector(&h_MSLight->stAngle));
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetDirectionY(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return (MTH3D_M_xGetYofVector(&h_MSLight->stAngle));
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
|
|
MTH_tdxReal fn_xMSLightGetDirectionZ(MS_tdxHandleToMSLight h_MSLight)
|
|
{
|
|
return (MTH3D_M_xGetYofVector(&h_MSLight->stAngle));
|
|
}
|
|
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
|
|
|
|
|
|
#ifdef __3DOSLIGHTS
|
|
/* Previously in dnmcame.c*/
|
|
GLI_tdxValue fn_xComputeAngleOfPerso(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
|
{
|
|
GLI_tdxValue xCos,xSin,xAngle;
|
|
|
|
MTH3D_tdstVector p_stI,p_stJ,p_stK;
|
|
POS_fn_vGetRotationMatrix(HIE_fn_hGetSuperObjectMatrix(p_SuperObjPerso),&p_stI,&p_stJ,&p_stK);
|
|
xCos=MTH3D_M_xGetXofVector(&p_stI);
|
|
xSin=MTH3D_M_xGetYofVector(&p_stI);
|
|
|
|
if(xCos!=0)
|
|
{
|
|
xAngle=MTH_M_xATan(GLI_M_Div(xSin,xCos));
|
|
if(xCos<0)
|
|
xAngle=MTH_M_xAdd(xAngle,MTH_C_Pi);
|
|
if(xAngle<0)
|
|
xAngle=MTH_M_xAdd(xAngle,MTH_C_2Pi);
|
|
else if(xAngle>=MTH_C_2Pi)
|
|
xAngle=MTH_M_xSub(xAngle,MTH_C_2Pi);
|
|
}
|
|
else
|
|
{
|
|
if(xSin>=0)
|
|
xAngle=(MTH_tdxReal)MTH_C_PiBy2;
|
|
else
|
|
xAngle=MTH_M_xNeg(MTH_C_PiBy2);
|
|
}
|
|
return (xAngle);
|
|
}
|
|
|
|
/* Provisoire...*/
|
|
#undef extern
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Function to update matrix attached to light...
|
|
*-----------------------------------------------------------------------------
|
|
* Input : None
|
|
* Output :
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 17/02/97 Author : Michael
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
void fn_vUpdateLight(HIE_tdxHandleToSuperObject hSupObject)
|
|
{
|
|
if ((M_GetEngineObject(hSupObject)->h_MSLight)&&(fn_ucMSLightGetOnOff(M_GetEngineObject(hSupObject)->h_MSLight)))
|
|
{
|
|
POS_tdstCompletePosition *p_stMatrix,stMatrix2,stMatrix3;
|
|
POS_tdstCompletePosition stMatrixD; /* MR2003*/
|
|
MTH3D_tdstVector stDirection; /* MR2003*/
|
|
MTH3D_tdstVector stTransVect,stOffsetVect;
|
|
static MTH_tdxReal x=0,y=0,z=0;
|
|
/*XB980504*/
|
|
/* MTH_tdxReal dx=MTH_M_xDoubleToReal(0.2);*/
|
|
/*End XB*/
|
|
static MTH_tdxReal step=MTH_M_xDoubleToReal(0.2);
|
|
GLI_tdxValue xAnglePerso;
|
|
|
|
xAnglePerso=fn_xComputeAngleOfPerso(hSupObject);
|
|
p_stMatrix=HIE_fn_hGetSuperObjectGlobalMatrix(hSupObject);
|
|
GEO_M_vCopyMatrix(&stMatrix2,p_stMatrix);
|
|
|
|
/* ------------------------------------*/
|
|
/* Light follows its attached character*/
|
|
/* ------------------------------------*/
|
|
/*if (HIE_fn_ulGetSuperObjectType(HIE_fn_hGetSuperObjectFirstChild(hSupObject))!=C_ucLight)*/
|
|
{
|
|
memcpy(&stOffsetVect,fn_p_stMSLightGetOffset(M_GetEngineObject(hSupObject)->h_MSLight),sizeof(MTH3D_tdstVector));
|
|
|
|
POS_fn_vSetIdentityMatrix(&stMatrix3);
|
|
POS_fn_vSetTranslationVector(&stMatrix3,&stOffsetVect);
|
|
fn_vTurnMatrixZ(&stMatrix3,xAnglePerso);
|
|
POS_fn_vGetTranslationVector(&stMatrix3,&stOffsetVect);
|
|
|
|
POS_fn_vGetTranslationVector(p_stMatrix,&stTransVect);
|
|
MTH3D_M_vAddVector(&stTransVect,&stTransVect,&stOffsetVect); /* TransVect = Position de la lumière*/
|
|
|
|
fn_vMSLightGetDirection(M_GetEngineObject(hSupObject)->h_MSLight,&x,&y,&z);
|
|
fn_vTurnMatrixZ(&stMatrix2,z);
|
|
/* MR2602*/
|
|
fn_vTurnMatrixX(&stMatrix2,x);
|
|
if (y)
|
|
fn_vTurnMatrixY(&stMatrix2,y); /* Matrice de rotation de Matrix2 = Orientation de la lumière (-ox)*/
|
|
|
|
POS_fn_vSetTranslationVector( &stMatrix2,&stTransVect);
|
|
|
|
|
|
/* MR2003*/
|
|
if (g_bShowLight)
|
|
{
|
|
MTH3D_M_vSetVectorElements(&stDirection,-1,0,0);
|
|
/*MTH3D_M_vSetVectorElements(&stDirection,fn_xMSLightGetOffsetX(M_GetEngineObject(hSupObject)->h_MSLight)-0.1,fn_xMSLightGetOffsetY(M_GetEngineObject(hSupObject)->h_MSLight),fn_xMSLightGetOffsetZ(M_GetEngineObject(hSupObject)->h_MSLight));*/
|
|
/*//MTH3D_M_vSetVectorElements(&stDirection,MTH3D_M_xGetXofVector(&stOffsetVect)-0.1,MTH3D_M_xGetYofVector(&stOffsetVect),MTH3D_M_xGetZofVector(&stOffsetVect));*/
|
|
/*GLI_vMulMatrixVertexMTH3D2GLI(&stDirection,&p_stMatrix2,&stDirection);*/
|
|
/*The function above is declared but not implemented so...*/
|
|
POS_fn_vSetIdentityMatrix(&stMatrixD);
|
|
POS_fn_vSetTranslationVector(&stMatrixD,&stDirection);
|
|
/*fn_vTurnMatrixZ(&stMatrixD,xAnglePerso);*/
|
|
fn_vTurnMatrixX(&stMatrixD,x);
|
|
fn_vTurnMatrixY(&stMatrixD,y);
|
|
fn_vTurnMatrixZ(&stMatrixD,z);
|
|
}
|
|
/* End2003*/
|
|
}
|
|
|
|
/* -----------------------------------*/
|
|
/* For HotSpots: Rotation around Z-axe*/
|
|
/* -----------------------------------*/
|
|
if (fn_bMSLightGetGiroPhare(M_GetEngineObject(hSupObject)->h_MSLight))
|
|
{
|
|
y=fn_xMSLightGetGiroAngle(M_GetEngineObject(hSupObject)->h_MSLight);
|
|
fn_vTurnMatrixZ(&stMatrix2,y);
|
|
|
|
/* MR2003*/
|
|
if (g_bShowLight)
|
|
fn_vTurnMatrixZ(&stMatrixD,y);
|
|
|
|
/* MR2702*/
|
|
POS_fn_vSetTranslationVector( &stMatrix2,&stTransVect);
|
|
/*fn_vTurnMatrixX(&p_stMatrix2,y);*/
|
|
/*y+=MTH_C_PiBy8;*/
|
|
y+=fn_xMSLightGetGiroStep(M_GetEngineObject(hSupObject)->h_MSLight);
|
|
if (y>MTH_C_2Pi)
|
|
{
|
|
y=0;
|
|
}
|
|
fn_vMSLightSetGiroAngle(M_GetEngineObject(hSupObject)->h_MSLight,y);
|
|
}
|
|
|
|
/* --------------------------------------*/
|
|
/* For HotSpots & Spherical: Change radius*/
|
|
/* --------------------------------------*/
|
|
if (fn_bMSLightGetPulse(M_GetEngineObject(hSupObject)->h_MSLight))
|
|
{
|
|
/*x=fn_xMSLightGetNear(M_GetEngineObject(hSupObject)->h_MSLight);*/
|
|
x=fn_xMSLightGetFar(M_GetEngineObject(hSupObject)->h_MSLight);
|
|
/*x+=step;
|
|
if ((x>12)||(x<0))
|
|
{ step=-step;
|
|
x+=2*step;
|
|
}*/
|
|
step=fn_xMSLightGetPulseStep(M_GetEngineObject(hSupObject)->h_MSLight);
|
|
x+=step;
|
|
if ((x>fn_xMSLightGetPulseMaxRange(M_GetEngineObject(hSupObject)->h_MSLight))||(x<0))
|
|
{ step=-step;
|
|
x+=2*step;
|
|
}
|
|
fn_xMSLightSetPulseStep(M_GetEngineObject(hSupObject)->h_MSLight,step);
|
|
/*GLI_vSetLightNearFar(fn_p_stMSLightGetLight(M_GetEngineObject(hSupObject)->h_MSLight),x,x+dx);*/
|
|
GLI_vSetLightNearFar(fn_p_stMSLightGetLight(M_GetEngineObject(hSupObject)->h_MSLight),0,x);
|
|
}
|
|
|
|
/*POS_fn_vInvertIsoMatrix(&p_stMatrix2,&p_stMatrix2); // MR1202 (temporarily in comment for Pentium version)*/
|
|
/*POS_fn_vNormalizeMatrix(&p_stMatrix2);*/
|
|
GLI_xSetLightMatrix ( fn_p_stMSLightGetLight(M_GetEngineObject(hSupObject)->h_MSLight) , &stMatrix2);
|
|
|
|
/* MR1803*/
|
|
if (g_bShowLight)
|
|
{
|
|
POS_fn_vGetTranslationVector(&stMatrixD,&stDirection);
|
|
/*MTH3D_M_vAddVector(&stDirection,&stDirection,&stOffsetVect);*/
|
|
MTH3D_M_vAddVector(&stDirection,&stDirection,fn_p_stMSLightGetOffset(M_GetEngineObject(hSupObject)->h_MSLight));
|
|
GEO_vSetPointOfObject(M_GetEngineObject(hSupObject)->h_MSLight->p_stVisuLight,&stDirection,1);
|
|
GLI_xSendObjectToViewport(&g_stEngineStructure.stViewportAttr,M_GetEngineObject(hSupObject)->h_MSLight->p_stVisuLight,gp_stLight,GLI_C_lAllIsEnable-GLI_C_lIsNotDrawCollideInformation);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Create a sphere object (for light visualisation)
|
|
*-----------------------------------------------------------------------------
|
|
* Input : None
|
|
* Output :
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 18/03/97 Author : Michael
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
GEO_tdstGeometricObject *fn_pCreateSphere(MTH_tdxReal x,MTH_tdxReal y,MTH_tdxReal z,MTH_tdxReal xRadius)
|
|
{
|
|
GEO_tdstGeometricObject *p_stSphere;
|
|
MTH3D_tdstVector stCenter;
|
|
ACP_tdxHandleOfElement hElement;
|
|
ACP_tdxHandleOfMaterial hMaterial;
|
|
/* Oliv' - Portage v15*/
|
|
#ifndef CONST_VMT
|
|
GEO_tdstColor stColor;
|
|
#endif
|
|
GMT_tdxHandleToGameMaterial hGameMaterial;
|
|
|
|
/*
|
|
* Create object
|
|
*/
|
|
GEO_vCreateGeometricObject(&p_stSphere,1,1);
|
|
MTH3D_M_vSetVectorElements(&stCenter,x,y,z);
|
|
GEO_vSetPointOfObject(p_stSphere,&stCenter,0);
|
|
|
|
/*
|
|
* create sphere element
|
|
*/
|
|
GEO_vCreateElementSpheres(p_stSphere,&hElement,1);
|
|
GEO_vSetCenterPointOfIndexedSphere(p_stSphere,hElement,0,0);
|
|
GEO_vSetRadiusOfIndexedSphere(p_stSphere,hElement,0,xRadius);
|
|
|
|
/*
|
|
* create game material
|
|
*/
|
|
hGameMaterial = GMT_fn_hCreateGameMaterial();
|
|
GLI_xCreateMaterial(&hMaterial);
|
|
GMT_fn_vSetVisualMaterial(hGameMaterial, hMaterial);
|
|
|
|
#ifndef CONST_VMT
|
|
stColor.xR=(GEO_tdxColorValue)0.100000;
|
|
stColor.xG=(GEO_tdxColorValue)0.100000;
|
|
stColor.xB=(GEO_tdxColorValue)0.100000;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialAmbientCoef(hMaterial,&stColor);
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0.700000;
|
|
stColor.xG=(GEO_tdxColorValue)0.700000;
|
|
stColor.xB=(GEO_tdxColorValue)0.700000;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialDiffuseCoef(hMaterial,&stColor);
|
|
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0.7;
|
|
stColor.xG=(GEO_tdxColorValue)0.7;
|
|
stColor.xB=(GEO_tdxColorValue)0.7;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialSpecularCoef(hMaterial,0,&stColor);
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0.8;
|
|
stColor.xG=(GEO_tdxColorValue)0.8;
|
|
stColor.xB=(GEO_tdxColorValue)0.8;
|
|
stColor.xA=(GEO_tdxColorValue)-4e+8;
|
|
GLI_xSetMaterialColor(hMaterial,&stColor);
|
|
#endif /* Oliv' - Portage v15 - Please, this SHOULD BE HERE AND NOT ABOVE (since v14 at least)*/
|
|
|
|
GLI_xSetMaterialType(hMaterial,2042);
|
|
|
|
GEO_vSetGameMaterialOfIndexedSphere (p_stSphere,hElement,0,hGameMaterial);
|
|
GEO_vSetMaterialOfIndexedSphere (p_stSphere,hElement,0,hMaterial);
|
|
GEO_vEndModifyObject(p_stSphere);
|
|
|
|
return p_stSphere;
|
|
}
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Description : Create a cone object (for light visualisation)
|
|
*-----------------------------------------------------------------------------
|
|
* Input : None
|
|
* Output :
|
|
*-----------------------------------------------------------------------------
|
|
* Creation date : 19/03/97 Author : Michael
|
|
*-----------------------------------------------------------------------------
|
|
* Modification date : Modification Author :
|
|
* Modifications :
|
|
*---------------------------------------------------------------------------*/
|
|
GEO_tdstGeometricObject *fn_pCreateCone(MTH_tdxReal xS,MTH_tdxReal yS,MTH_tdxReal zS, MTH_tdxReal xRadius)
|
|
{
|
|
GEO_tdstGeometricObject *p_stSphere;
|
|
MTH3D_tdstVector stCenter;
|
|
ACP_tdxHandleOfElement hElement;
|
|
ACP_tdxHandleOfMaterial hMaterial;
|
|
/* Oliv' - Portage v15*/
|
|
#ifndef CONST_VMT
|
|
GEO_tdstColor stColor;
|
|
#endif
|
|
GMT_tdxHandleToGameMaterial hGameMaterial;
|
|
|
|
GEO_vCreateGeometricObject(&p_stSphere,2,1);
|
|
MTH3D_M_vSetVectorElements(&stCenter,xS,yS,zS);
|
|
GEO_vSetPointOfObject(p_stSphere,&stCenter,0);
|
|
MTH3D_M_vSetVectorElements(&stCenter,xS-MTH_M_xDoubleToReal(0.1),yS,zS);
|
|
|
|
GEO_vSetPointOfObject(p_stSphere,&stCenter,1);
|
|
|
|
GEO_vCreateElementCones(p_stSphere,&hElement,1);
|
|
GEO_vSetPointsOfIndexedCone(p_stSphere,hElement,0,1,0);
|
|
GEO_vSetRadiusOfIndexedCone(p_stSphere,hElement,0,xRadius);
|
|
hGameMaterial=GMT_fn_hCreateGameMaterial(); /*AR270397*/
|
|
GLI_xCreateMaterial(&hMaterial);
|
|
GMT_fn_vSetVisualMaterial(hGameMaterial,hMaterial); /*AR270397*/
|
|
|
|
#ifndef CONST_VMT
|
|
stColor.xR=(GEO_tdxColorValue)0;
|
|
stColor.xG=(GEO_tdxColorValue)0;
|
|
stColor.xB=(GEO_tdxColorValue)0;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialAmbientCoef(hMaterial,&stColor);
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0;
|
|
stColor.xG=(GEO_tdxColorValue)0;
|
|
stColor.xB=(GEO_tdxColorValue)0;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialDiffuseCoef(hMaterial,&stColor);
|
|
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0;
|
|
stColor.xG=(GEO_tdxColorValue)0;
|
|
stColor.xB=(GEO_tdxColorValue)0;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialSpecularCoef(hMaterial,0,&stColor);
|
|
|
|
stColor.xR=(GEO_tdxColorValue)0;
|
|
stColor.xG=(GEO_tdxColorValue)0;
|
|
stColor.xB=(GEO_tdxColorValue)0;
|
|
stColor.xA=(GEO_tdxColorValue)0;
|
|
GLI_xSetMaterialColor(hMaterial,&stColor);
|
|
#endif /* Oliv' - Portage v15 - Please, this SHOULD BE HERE AND NOT ABOVE (since v14 at least)*/
|
|
GLI_xSetMaterialType(hMaterial,2042);
|
|
|
|
GEO_vSetGameMaterialOfIndexedCone(p_stSphere,hElement,0,hGameMaterial); /*AR270397*/
|
|
GEO_vSetMaterialOfIndexedCone (p_stSphere,hElement,0,hMaterial);
|
|
|
|
GEO_vEndModifyObject(p_stSphere);
|
|
|
|
return p_stSphere;
|
|
}
|
|
|
|
#endif /* __3DOSLIGHTS */
|
|
|
|
|
|
/* ##F===================================================================================
|
|
NAME : fn_ucGetNumberOfRLI
|
|
DESCRIPTION : return the blend RLI parameters of the character.
|
|
INPUT : hMSLight = mini-structure
|
|
ucIndex1 = index of the first RLI table
|
|
ucIndex1 = index of the second RLI table
|
|
xPercent = percentage of the blend
|
|
OUTPUT : Return the number of table to use.
|
|
0 -> don't use RLI
|
|
1 -> use only one RLI table (ucIndex1)
|
|
2 -> makea blend between two table of RLI
|
|
=========================================================================================
|
|
LAST MODIFICATIONS : 17/02/98 Jean-Marc Drouaud
|
|
=======================================================================================*/
|
|
unsigned char fn_ucGetNumberOfRLI (MS_tdxHandleToMSLight hMSLight,
|
|
unsigned char *ucIndex1,
|
|
unsigned char *ucIndex2,
|
|
MTH_tdxReal *xPercent ) {
|
|
if ( hMSLight ) {
|
|
*ucIndex1 = hMSLight->ucFirstRLI ;
|
|
*ucIndex2 = hMSLight->ucSecondRLI ;
|
|
*xPercent = MTH_M_xDivHigh(MTH_M_xLongToReal(hMSLight->ucBlendPercent), MTH_M_xLongToReal(100)) ;
|
|
return (hMSLight->ucNbRLIUse) ;
|
|
}
|
|
return (0) ;
|
|
}
|
|
|
|
/* ##F===================================================================================
|
|
NAME : fn_ucGetNumberOfRLIFromCharacter
|
|
DESCRIPTION : return the blend RLI parameters of the character.
|
|
Look for a charactere in the SPO ancestor
|
|
INPUT : hSprObj = super object.
|
|
ucIndex1 = index of the first RLI table
|
|
ucIndex1 = index of the second RLI table
|
|
xPercent = percentage of the blend
|
|
OUTPUT : Return the number of table to use.
|
|
0 -> don't use RLI
|
|
1 -> use only one RLI table (ucIndex1)
|
|
2 -> makea blend between two table of RLI
|
|
=========================================================================================
|
|
LAST MODIFICATIONS : 17/02/98 Jean-Marc Drouaud
|
|
=======================================================================================*/
|
|
unsigned char fn_ucGetNumberOfRLIFromCharacter (HIE_tdxHandleToSuperObject hSprObj, unsigned char *p_ucIndex1, unsigned char *p_ucIndex2, MTH_tdxReal *p_xPercent) {
|
|
unsigned char ucNbRLIUse=0 ;
|
|
|
|
if ( HIE_fn_ulGetSuperObjectType(hSprObj) == HIE_C_ulActor ) {
|
|
ucNbRLIUse = fn_ucGetNumberOfRLI (M_GetMSHandle(hSprObj, MSLight), p_ucIndex1, p_ucIndex2, p_xPercent) ;
|
|
}
|
|
return (ucNbRLIUse) ;
|
|
|
|
}
|
|
/* ##F===================================================================================
|
|
NAME : fn_vMSLightSetRLIParameter
|
|
DESCRIPTION : update the mini-structure parameters.
|
|
INPUT : hMSLight = mini-structure
|
|
lNbRLI = number of table to use
|
|
lIndex1 = index of the first RLI table
|
|
lIndex1 = index of the second RLI table
|
|
lPercent = percentage of the blend
|
|
=========================================================================================
|
|
LAST MODIFICATIONS : 17/02/98 Jean-Marc Drouaud
|
|
=======================================================================================*/
|
|
void fn_vMSLightSetRLIParameter ( MS_tdxHandleToMSLight hMSLight, long lNbRLI,
|
|
long lIndex1, long lIndex2, long lPercent ) {
|
|
if ( hMSLight ) {
|
|
hMSLight->ucNbRLIUse = (unsigned char)lNbRLI ;
|
|
hMSLight->ucFirstRLI = (unsigned char)lIndex1 ;
|
|
hMSLight->ucSecondRLI = (unsigned char)lIndex2 ;
|
|
hMSLight->ucBlendPercent = (unsigned char)lPercent ;
|
|
}
|
|
}
|
|
|
|
/* ##F===================================================================================
|
|
NAME : HIE_fn_hGetSuperObjectLight
|
|
DESCRIPTION : return the handle of the light in the MSLight when the SO is an actor
|
|
INPUT : p_SuperObjPerso = Handle of SO Actor
|
|
=========================================================================================
|
|
LAST MODIFICATIONS : 24/08/98 Marc Trabucato
|
|
=======================================================================================*/
|
|
GLI_tdstLight *HIE_fn_hGetSuperObjectLight(HIE_tdxHandleToSuperObject p_SuperObjPerso)
|
|
{
|
|
if ( HIE_fn_ulGetSuperObjectType(p_SuperObjPerso) == HIE_C_ulActor )
|
|
{
|
|
MS_tdxHandleToMSLight hMSLight;
|
|
|
|
hMSLight = M_GetEngineObject(p_SuperObjPerso)->h_MSLight;
|
|
|
|
return ( hMSLight && fn_bMSLightGetLocalLight(hMSLight) ? fn_p_stMSLightGetLight(hMSLight) : NULL);
|
|
}
|
|
return NULL;
|
|
}
|