// Filename:- skins.h
//
#ifndef SKINS_H
#define SKINS_H
#include "disablewarnings.h"
/*
class CAlternativeMaterial
{
protected:
string m_sName;
public:
CSkinMaterialShader(LPCSTR psName) {m_sName=psName;}
~CSkinMaterialShader() { OutputDebugString( va("~CSkinMaterialShader(): %s\n",m_sName.c_str()) ); }
};
*/
typedef struct
{
StringVector_t vSurfacesOn;
StringVector_t vSurfacesOff;
StringVector_t vSurfacesOffNoChildren;
} SurfaceOnOffPrefs_t;
typedef vector AlternativeShaders_t; // each string = shader name
typedef map ShadersForMaterial_t; // map key = (eg) "face", entry = alternative shader list
typedef map SkinSet_t; // map key = (eg) "white",entry = body component
typedef map SkinSets_t; // map key = (eg) "thug",entry = skin set
typedef map SkinSetsSurfacePrefs_t;
bool Skins_ApplyEthnic ( ModelContainer_t *pContainer, LPCSTR psSkin, LPCSTR psEthnic, bool bApplySurfacePrefs, bool bDefaultSurfaces);
bool Skins_ApplySkinShaderVariant(ModelContainer_t *pContainer, LPCSTR psSkin, LPCSTR psEthnic, LPCSTR psMaterial, int iVariant );
bool Skins_Validate ( ModelContainer_t *pContainer, int iSkinNumber );
bool Skins_ApplySkinFile(ModelContainer_t *pContainer, string strSkinFile, string strEthnic, bool bApplySurfacePrefs, bool bDefaultSurfaces, string strMaterial = "", int iVariant = -1);
bool Skins_FilesExist (LPCSTR psModelFilename);
bool Skins_Read (LPCSTR psModelFilename, ModelContainer_t *pContainer);
bool Skins_ApplyToTree (HTREEITEM hTreeItem_Parent, ModelContainer_t *pContainer);
void Skins_ApplyDefault (ModelContainer_t *pContainer);
bool Skins_FileHasSurfacePrefs(ModelContainer_t *pContainer, LPCSTR psSkin);
void Skins_KillPreCacheInfo(void);
GLuint AnySkin_GetGLBind( ModelHandle_t hModel, LPCSTR psMaterialName, LPCSTR psSurfaceName );
#endif // #ifndef SKINS_H
//////////////////// eof //////////////////////