diff --git a/Engine/source/T3D/player.cpp b/Engine/source/T3D/player.cpp index 15b57046a..7f537d65d 100644 --- a/Engine/source/T3D/player.cpp +++ b/Engine/source/T3D/player.cpp @@ -1953,6 +1953,7 @@ void Player::reSkin() { if ( isGhost() && mShapeInstance && mSkinNameHandle.isValidString() ) { + mShapeInstance->resetMaterialList(); Vector skins; String(mSkinNameHandle.getString()).split( ";", skins ); diff --git a/Engine/source/T3D/shapeBase.cpp b/Engine/source/T3D/shapeBase.cpp index 643a5955d..0541bce55 100644 --- a/Engine/source/T3D/shapeBase.cpp +++ b/Engine/source/T3D/shapeBase.cpp @@ -3689,6 +3689,7 @@ void ShapeBase::reSkin() { if ( isGhost() && mShapeInstance && mSkinNameHandle.isValidString() ) { + mShapeInstance->resetMaterialList(); Vector skins; String(mSkinNameHandle.getString()).split( ";", skins ); diff --git a/Engine/source/T3D/tsStatic.cpp b/Engine/source/T3D/tsStatic.cpp index 68b5333df..d88207eb0 100644 --- a/Engine/source/T3D/tsStatic.cpp +++ b/Engine/source/T3D/tsStatic.cpp @@ -537,6 +537,7 @@ void TSStatic::reSkin() { if ( isGhost() && mShapeInstance && mSkinNameHandle.isValidString() ) { + mShapeInstance->resetMaterialList(); Vector skins; String(mSkinNameHandle.getString()).split( ";", skins ); diff --git a/Engine/source/ts/tsShapeInstance.cpp b/Engine/source/ts/tsShapeInstance.cpp index 98d6b39ea..53167f1cf 100644 --- a/Engine/source/ts/tsShapeInstance.cpp +++ b/Engine/source/ts/tsShapeInstance.cpp @@ -307,18 +307,21 @@ void TSShapeInstance::reSkin( String newBaseName, String oldBaseName ) { // Try changing base const String &pName = materialNames[i]; - if ( pName.compare( oldBaseName, oldBaseNameLength, String::NoCase ) == 0 ) - { - String newName( pName ); - newName.replace( 0, oldBaseNameLength, newBaseName ); - pMatList->renameMaterial( i, newName ); - } + String newName( String::ToLower(pName) ); + newName.replace( String::ToLower(oldBaseName), String::ToLower(newBaseName) ); + pMatList->renameMaterial( i, newName ); } // Initialize the material instances initMaterialList(); } +void TSShapeInstance::resetMaterialList() +{ + TSMaterialList* oMatlist = mShape->materialList; + setMaterialList(oMatlist); +} + //------------------------------------------------------------------------------------- // Render & detail selection //------------------------------------------------------------------------------------- diff --git a/Engine/source/ts/tsShapeInstance.h b/Engine/source/ts/tsShapeInstance.h index c483c8792..627eb63ce 100644 --- a/Engine/source/ts/tsShapeInstance.h +++ b/Engine/source/ts/tsShapeInstance.h @@ -377,7 +377,7 @@ protected: } void reSkin( String newBaseName, String oldBaseName = String::EmptyString ); - + void resetMaterialList(); enum { MaskNodeRotation = 0x01,