reman3/Rayman_X/cpa/tempgrp/GAM/Actions/MSlight.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;
}