Tweaks the Scene and SubScene save calls to handle simGroups to call onto their children

This commit is contained in:
Areloch 2024-09-05 13:49:13 -05:00
parent 6ff92f61bb
commit a931e9a308
2 changed files with 32 additions and 7 deletions

View file

@ -296,11 +296,28 @@ bool Scene::saveScene(StringTableEntry fileName)
//Inform our objects we're saving, so if they do any special stuff
//they can do it before the actual write-out
for (U32 i = 0; i < mPermanentObjects.size(); i++)
for (SimGroup::iterator itr = begin(); itr != end(); itr++)
{
SimGroup* sg = dynamic_cast<SimGroup*>(*itr);
if (sg)
{
ConsoleValue vars[3];
vars[2].setString(fileName);
sg->callOnChildren("onSaving", 3, vars);
}
SceneObject* sO = dynamic_cast<SceneObject*>(*itr);
if (sO)
{
sO->onSaving_callback(fileName);
}
}
/*for (U32 i = 0; i < mPermanentObjects.size(); i++)
{
SceneObject* obj = mPermanentObjects[i];
obj->onSaving_callback(fileName);
}
}*/
//Inform our subscenes we're saving so they can do any
//special work required as well

View file

@ -309,15 +309,23 @@ bool SubScene::save()
for (SimGroup::iterator itr = begin(); itr != end(); itr++)
{
//Just in case there's a valid callback the scene object would like to invoke for saving
SceneObject* gc = dynamic_cast<SceneObject*>(*itr);
if (gc)
//Inform our objects we're saving, so if they do any special stuff
//they can do it before the actual write-out
SimGroup* sg = dynamic_cast<SimGroup*>(*itr);
if (sg)
{
gc->onSaving_callback(mLevelAssetId);
ConsoleValue vars[3];
vars[2].setString(mLevelAssetId);
sg->callOnChildren("onSaving", 3, vars);
}
SceneObject* scO = dynamic_cast<SceneObject*>(*itr);
if (scO)
{
scO->onSaving_callback(mLevelAssetId);
}
SimObject* sO = static_cast<SimObject*>(*itr);
if (!sO->save(levelPath))
{
Con::errorf("SubScene::save() - error, failed to write object %s to file: %s", sO->getIdString(), levelPath);