//----------------------------------------------------------------------------- // Torque Game Engine // Copyright (C) GarageGames.com, Inc. //----------------------------------------------------------------------------- #include "ts/tsShape.h" 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::free() { // IflMaterials will duplicate names and textures found in other material slots // (In particular, IflFrame material slots). // Set the names to NULL now so our parent doesn't delete them twice. // Texture handles should stay as is... for (U32 i=0; i11) { for (i=0; i20) { for (i=0; i