MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / saveScene

Method saveScene

Engine/source/T3D/Scene.cpp:248–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

246}
247
248bool Scene::saveScene(StringTableEntry fileName)
249{
250 //So, we ultimately want to not only save out the level, but also collate all the assets utilized
251 //by the static objects in the scene so we can have those before we parse the level file itself
252 //Useful for preloading or stat tracking
253
254 //First, save the level file
255 if (fileName == StringTable->EmptyString())
256 {
257 fileName = getOriginatingFile();
258 }
259
260 bool saveSuccess = save(fileName);
261
262 if (!saveSuccess)
263 return false;
264
265 //Get the level asset
266 StringTableEntry levelAsset = getLevelAsset();
267 if (levelAsset == StringTable->EmptyString())
268 return saveSuccess;
269
270 LevelAsset* levelAssetDef = AssetDatabase.acquireAsset<LevelAsset>(levelAsset);
271 levelAssetDef->clearAssetDependencyFields("staticObjectAssetDependency");
272
273 //Next, lets build out our
274 Vector<StringTableEntry> utilizedAssetsList;
275 for (U32 i = 0; i < size(); i++)
276 {
277 getUtilizedAssetsFromSceneObject(getObject(i), &utilizedAssetsList);
278 }
279
280 for (U32 i = 0; i < utilizedAssetsList.size(); i++)
281 {
282 char depSlotName[50];
283 dSprintf(depSlotName, sizeof(depSlotName), "%s%d", "staticObjectAssetDependency", i);
284
285 char depValue[255];
286 dSprintf(depValue, sizeof(depValue), "%s=%s", ASSET_ID_SIGNATURE, utilizedAssetsList[i]);
287
288 levelAssetDef->setDataField(StringTable->insert(depSlotName), NULL, StringTable->insert(depValue));
289
290 }
291
292 saveSuccess = levelAssetDef->saveAsset();
293
294 return saveSuccess;
295}
296
297void Scene::getUtilizedAssetsFromSceneObject(SimObject* object, Vector<StringTableEntry>* usedAssetsList)
298{

Callers 1

Scene.cppFile · 0.80

Calls 9

saveFunction · 0.85
dSprintfFunction · 0.85
EmptyStringMethod · 0.80
sizeFunction · 0.50
sizeMethod · 0.45
setDataFieldMethod · 0.45
insertMethod · 0.45
saveAssetMethod · 0.45

Tested by

no test coverage detected