#ifndef LIGHT_MAPPER_H
#define LIGHT_MAPPER_H
//---------------------------------------------------------------------------
void  LMStart                           (void);
void  LMAddCollisionObject              (int iObjID);
void  LMBuildCollisionData              (void);
void  LMAddLightMapObject               (int iObjID);
void  LMBuildLightMaps                  (int iTexSize, float fQuality, int iBlur);   // Quality: 0.00001..10000, Blur: 0..3
void  LMSetBlendMode                    (int iNewMode);
void  LMAddPointLight                   (float posX, float posY, float posZ, float radius, float red, float green, float blue);
void  LMAddDirectionalLight             (float dirX, float dirY, float dirZ, float red, float green, float blue);
void  LMAddSpotLight                    (float posX, float posY, float posZ, float dirX, float dirY, float dirZ, float ang1, float ang2, float range, float red, float green, float blue);
void  LMClearLights                     (void);
void  LMClearCollisionObjects           (void);

// Commands 12-27
void  LMClearLightMapObjects            (void);
void  LMReset                           (void);
void  LMSetAmbientLight                 (float red, float green, float blue);
void  LMAddCustomPointLight             (float posX, float posY, float posZ, float radius, float attenuation, float attenuation2, float red, float green, float blue);
void  LMBuildLightMapsThread            (int iTexSize, float fQuality, int iBlur);
DWORD LMGetPercent                      (void);
DWORD LMGetStatus                       (DWORD szReturnString);
int   LMGetComplete                     (void);
void  LMAddLightMapObject               (int iObjID, int iBaseStage);
void  LMAddTransparentCollisionObject   (int iObjID, int iType);
void  LMSetMode                         (int iMode);
void  LMSetShadowPower                  (float fPower);
void  LMSetAmbientOcclusionOn           (int iIterations, float fRayDist, int iPattern);
void  LMSetAmbientOcclusionOff          (void);
void  LMSetLightMapName                 (DWORD pInString);
void  LMAddLightMapObject               (int iObjID, int iBaseStage, int iDynamicLight);

// Commands 28-36
void  LMTerminateThread                 (void);
void  LMAddShadedLightMapObject         (int iObjID, int iLightMapStage);
void  LMBoostCurvedSurfaceQuality       (float fMaxSize, float fBoost);
void  LMAddShadedLightMapObject         (int iObjID, int iLightMapStage, int iFlatShaded);
void  LMAddLightMapObject               (int iObjID, int iBaseStage, int iDynamicLight, int iFlatShaded);
void  LMBuildLightMapsThread            (int iTexSize, float fQuality, int iBlur, int iNumThreads);
void  LMBuildLightMaps                  (int iTexSize, float fQuality, int iBlur, int iNumThreads);
void  LMSetLightMapFolder               (DWORD pInString);
void  LMSetLightMapFileFormat           (int iFormat);                                                       // 0=png, 1=dds, 2=bmp

// These Commands were absent from the DLL Export List as indicated in LightMapper.rc
void  LMAddCollisionObject              (sObject *pObject, int iTransparent);
void  LMAddLightMapObject               (int iObjID, sObject *pObject, int iBaseStage, int iDynamicLight, int iShaded, int iFlatNormals);
void  LMUpdateObjects                   (void);
//---------------------------------------------------------------------------
#endif