97 lines
3.2 KiB
C
97 lines
3.2 KiB
C
/*=========================================================================
|
|
*
|
|
* RLISave.h - Saving functions for RLI file
|
|
*
|
|
* Version 1.0
|
|
* Revision date
|
|
*
|
|
*=======================================================================*/
|
|
#ifndef RLISAVE_H
|
|
#define RLISAVE_H
|
|
|
|
//--- Includes --------------------------------------------------------
|
|
|
|
#include "SCR.h"
|
|
|
|
#include "typedef.h"
|
|
|
|
#include "color.h"
|
|
#include "matrix.h"
|
|
#include "geoobj.h"
|
|
#include "sprobj.h"
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
#ifdef _WINDOWS
|
|
/********************************************************/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
/********************************************************/
|
|
#endif //_WINDOWS
|
|
|
|
|
|
//--- Globals ---------------------------------------------------------
|
|
|
|
extern long g_lLightIndex;
|
|
|
|
|
|
//--- Defines ---------------------------------------------------------
|
|
|
|
enum {SPHERICAL, AMBIENT, HOTSPOT, PARALLEL};
|
|
enum {L_RGB=0, L_PAINT=1, L_ALPHA=2};
|
|
|
|
|
|
//--- Structures ---------------------------------------------------------
|
|
|
|
typedef struct MLT_Light_
|
|
{
|
|
xString sName; // name
|
|
int iGeomType; // SPHERICAL, AMBIENT, ...
|
|
int iType; // RGB, PAINT, ALPHA
|
|
int iRLI; // affected RLI
|
|
int iState; // ON/OFF
|
|
MLT_tdstColor color;
|
|
float fNearFar[2];
|
|
float fAlphas[2];
|
|
MLT_tdstMatrix *Matrix;
|
|
BOOL bNotCompute;
|
|
}
|
|
MLT_Light;
|
|
|
|
|
|
//--- Functions ---------------------------------------------------------
|
|
|
|
// init functions
|
|
extern void MLT_vLoadLG2();
|
|
extern void MLT_LoadLGT();
|
|
extern void MLT_vCreateRLI();
|
|
extern void MLT_vDeleteAllLights();
|
|
// loading functions
|
|
extern SCR_tde_Anl_ReturnValue MLT_xLoadLight (SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType);
|
|
extern SCR_tde_Anl_ReturnValue MLT_xLoadMatrixRLI (SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType);
|
|
// compute functions
|
|
extern void MLT_vComputeFullRLI (MLT_tdstGeometricObject *obj, MLT_tdstColor *rli);
|
|
extern void MLT_vComputeSphericalRLI (MLT_tdstMatrix *p_stMatrix, MLT_Light *light, MLT_tdstGeometricObject *obj, MLT_tdstColor *rli);
|
|
extern void MLT_vComputeAmbientRLI (MLT_tdstMatrix *p_stMatrix, MLT_Light *light, MLT_tdstGeometricObject *obj, MLT_tdstColor *rli);
|
|
extern void MLT_vComputeHotSpotRLI (MLT_tdstMatrix *p_stMatrix, MLT_Light *light, MLT_tdstGeometricObject *obj, MLT_tdstColor *rli);
|
|
extern void MLT_vComputeParallelRLI (MLT_tdstMatrix *p_stMatrix, MLT_Light *light, MLT_tdstGeometricObject *obj, MLT_tdstColor *rli);
|
|
extern void MLT_vComputeOneRLI (MLT_tdxHandleToSuperObject hSupObj, MLT_tdstMatrix *p_stMatrix, MLT_tdstColor **rli, int nRLI, SCR_tdst_File_Description *p_stFile);
|
|
// light functions
|
|
extern int MLT_iGetLightType (char *type);
|
|
extern void MLT_vAddLightEffect (MLT_tdstColor *dst, MLT_tdstColor *src, float coef);
|
|
// level functions
|
|
extern MLT_Light * MLT_hGetLight (xString sStaticLight, MLT_Light **g_hLights);
|
|
extern void MLT_vComputeSector (MLT_tdxHandleToSuperObject hSupObj);
|
|
|
|
|
|
#ifdef _WINDOWS
|
|
/********************************************************/
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // __cplusplus
|
|
/********************************************************/
|
|
#endif //_WINDOWS
|
|
|
|
#endif // RLISAVE_H
|