Browse Source

Adjusts getUtilizedAssets writeout so it more consistently prints out the dependent assets
Adds handling for prefabs with getUtilizedAssets

Areloch 5 years ago
parent
commit
c5bccd8ff4

+ 8 - 3
Engine/source/T3D/Scene.cpp

@@ -260,7 +260,14 @@ bool Scene::saveScene(StringTableEntry fileName)
 
    for (U32 i = 0; i < utilizedAssetsList.size(); i++)
    {
-      levelAssetDef->addAssetDependencyField("staticObjectAssetDependency", utilizedAssetsList[i]);
+      char depSlotName[50];
+      dSprintf(depSlotName, sizeof(depSlotName), "%s%d", "staticObjectAssetDependency", i);
+
+      char depValue[255];
+      dSprintf(depValue, sizeof(depValue), "@Asset=%s", utilizedAssetsList[i]);
+
+      levelAssetDef->setDataField(StringTable->insert(depSlotName), NULL, StringTable->insert(depValue));
+
    }
 
    saveSuccess = levelAssetDef->saveAsset();
@@ -280,8 +287,6 @@ void Scene::getUtilizedAssetsFromSceneObject(SimObject* object, Vector<StringTab
       for (U32 c = 0; c < group->size(); c++)
       {
          SceneObject* childObj = dynamic_cast<SceneObject*>(group->getObject(c));
-         if (childObj)
-            childObj->getUtilizedAssets(usedAssetsList);
 
          //Recurse down
          getUtilizedAssetsFromSceneObject(childObj, usedAssetsList);

+ 13 - 0
Engine/source/T3D/prefab.cpp

@@ -558,6 +558,19 @@ bool Prefab::buildExportPolyList(ColladaUtils::ExportData* exportData, const Box
    return true;
 }
 
+void Prefab::getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList)
+{
+   Vector<SceneObject*> foundObjects;
+   mChildGroup->findObjectByType(foundObjects);
+
+   for (S32 i = 0; i < foundObjects.size(); i++)
+   {
+      SceneObject* child = foundObjects[i];
+
+      child->getUtilizedAssets(usedAssetsList);
+   }
+}
+
 ExplodePrefabUndoAction::ExplodePrefabUndoAction( Prefab *prefab )
 : UndoAction( "Explode Prefab" )
 {

+ 2 - 0
Engine/source/T3D/prefab.h

@@ -100,6 +100,8 @@ public:
 
    bool buildExportPolyList(ColladaUtils::ExportData* exportData, const Box3F &box, const SphereF &);
 
+   virtual void getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList);
+
 protected:
 
    void _closeFile( bool removeFileNotify );

+ 3 - 2
Engine/source/T3D/tsStatic.cpp

@@ -1692,8 +1692,9 @@ void TSStatic::updateMaterials()
 
 void TSStatic::getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList)
 {
-   if(!mShapeAsset.isNull())
-      usedAssetsList->push_back_unique(mShapeAssetId);
+   if(!mShapeAsset.isNull() && mShapeAsset->getAssetId() != StringTable->insert("Core_Rendering:noShape"))
+      usedAssetsList->push_back_unique(mShapeAsset->getAssetId());
+
 }
 
 //------------------------------------------------------------------------

+ 1 - 1
Engine/source/terrain/terrData.cpp

@@ -1423,7 +1423,7 @@ void TerrainBlock::getMinMaxHeight( F32 *minHeight, F32 *maxHeight ) const
 void TerrainBlock::getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList)
 {
    if (!mTerrainAsset.isNull())
-      usedAssetsList->push_back_unique(mTerrainAssetId);
+      usedAssetsList->push_back_unique(mTerrainAsset->getAssetId());
 }
 //-----------------------------------------------------------------------------
 // Console Methods