//----------------------------------------------------------------------------- // V12 Engine // // Copyright (c) 2001 GarageGames.Com // Portions Copyright (c) 2001 by Sierra Online, Inc. //----------------------------------------------------------------------------- #include "ts/tsShape.h" // look for all ts materials in this subdirectory of TextureManager::csmTexturePrefix directory const char* TSMaterialList::csmTSTexturePrefix = "skins/"; // prepend this to materials of pre version 16 shapes before prepending the above... const char* TSMaterialList::csmOldTSTexturePrefix = ""; // prepend this to ifl materials const char* TSMaterialList::csmIFLTexturePrefix = "skins/"; TSMaterialList::TSMaterialList(U32 materialCount, const char **materialNames, const U32 * materialFlags, const U32 * reflectanceMaps, const U32 * bumpMaps, const U32 * detailMaps, const F32 * detailScales, const F32 * reflectionAmounts) : MaterialList(materialCount,materialNames), mNamesTransformed(false) { VECTOR_SET_ASSOCIATION(mFlags); VECTOR_SET_ASSOCIATION(mReflectanceMaps); VECTOR_SET_ASSOCIATION(mBumpMaps); VECTOR_SET_ASSOCIATION(mDetailMaps); VECTOR_SET_ASSOCIATION(mDetailScales); VECTOR_SET_ASSOCIATION(mReflectionAmounts); allocate(getMaterialCount()); dMemcpy(mFlags.address(),materialFlags,getMaterialCount()*sizeof(U32)); dMemcpy(mReflectanceMaps.address(),reflectanceMaps,getMaterialCount()*sizeof(U32)); dMemcpy(mBumpMaps.address(),bumpMaps,getMaterialCount()*sizeof(U32)); dMemcpy(mDetailMaps.address(),detailMaps,getMaterialCount()*sizeof(U32)); dMemcpy(mDetailScales.address(),detailScales,getMaterialCount()*sizeof(F32)); dMemcpy(mReflectionAmounts.address(),reflectionAmounts,getMaterialCount()*sizeof(F32)); } TSMaterialList::TSMaterialList() : mNamesTransformed(false) { VECTOR_SET_ASSOCIATION(mFlags); VECTOR_SET_ASSOCIATION(mReflectanceMaps); VECTOR_SET_ASSOCIATION(mBumpMaps); VECTOR_SET_ASSOCIATION(mDetailMaps); VECTOR_SET_ASSOCIATION(mDetailScales); VECTOR_SET_ASSOCIATION(mReflectionAmounts); } TSMaterialList::TSMaterialList(const TSMaterialList* pCopy) : MaterialList(pCopy) { VECTOR_SET_ASSOCIATION(mFlags); VECTOR_SET_ASSOCIATION(mReflectanceMaps); VECTOR_SET_ASSOCIATION(mBumpMaps); VECTOR_SET_ASSOCIATION(mDetailMaps); VECTOR_SET_ASSOCIATION(mDetailScales); VECTOR_SET_ASSOCIATION(mReflectionAmounts); mFlags = pCopy->mFlags; mReflectanceMaps = pCopy->mReflectanceMaps; mBumpMaps = pCopy->mBumpMaps; mDetailMaps = pCopy->mDetailMaps; mDetailScales = pCopy->mDetailScales; mReflectionAmounts = pCopy->mReflectionAmounts; mNamesTransformed = pCopy->mNamesTransformed; } TSMaterialList::~TSMaterialList() { free(); } void TSMaterialList::tsmlTransform() { if (mNamesTransformed) return; mNamesTransformed = true; for (U32 i = 0; i < mMaterialNames.size(); i++) { char* pName = mMaterialNames[i]; if (pName == NULL) continue; // fix slashes that face the wrong way S32 len = dStrlen(pName); for (U32 j=0; j11) { for (i=0; i20) { for (i=0; i