diff --git a/Engine/source/T3D/tsStatic.h b/Engine/source/T3D/tsStatic.h index 80e1e60cc..1d1ff0673 100644 --- a/Engine/source/T3D/tsStatic.h +++ b/Engine/source/T3D/tsStatic.h @@ -284,6 +284,8 @@ public: void updateMaterials(); + bool isAnimated() { return mPlayAmbient; } + private: virtual void onStaticModified(const char* slotName, const char* newValue = NULL); protected: diff --git a/Engine/source/gui/worldEditor/worldEditor.cpp b/Engine/source/gui/worldEditor/worldEditor.cpp index 64b1512b4..e7ecfe3c6 100644 --- a/Engine/source/gui/worldEditor/worldEditor.cpp +++ b/Engine/source/gui/worldEditor/worldEditor.cpp @@ -3909,8 +3909,18 @@ bool WorldEditor::makeSelectionAMesh(const char *filename) for ( S32 i = 0; i < mSelected->size(); i++ ) { SceneObject *pObj = dynamic_cast< SceneObject* >( ( *mSelected )[i] ); - if ( pObj ) - objectList.push_back( pObj ); + if (pObj) + { + //Minor sanity check to avoid baking animated shapes + TSStatic* staticShape = dynamic_cast(pObj); + if (staticShape) + { + if (staticShape->isAnimated() && staticShape->hasAnim()) + continue; + } + + objectList.push_back(pObj); + } } if ( objectList.empty() ) @@ -3956,6 +3966,7 @@ bool WorldEditor::makeSelectionAMesh(const char *filename) for (S32 i = 0; i < objectList.size(); i++) { SceneObject *pObj = objectList[i]; + if (!pObj->buildExportPolyList(&exportData, pObj->getWorldBox(), pObj->getWorldSphere())) Con::warnf("colladaExportObjectList() - object %i returned no geometry.", pObj->getId()); }