mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 08:34:40 +00:00
clean up subscene load evaluators so that it doesn';t require a client if it's set to global
(allows spawnpoints to fill out prior to connections) also try and apply filtering prior to actual loading
This commit is contained in:
parent
e77c4b3a18
commit
a529e3ecc0
2 changed files with 12 additions and 14 deletions
|
|
@ -202,15 +202,12 @@ void Scene::processTick()
|
||||||
controlObj = gc->getCameraObject();
|
controlObj = gc->getCameraObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controlObj != nullptr)
|
if (mSubScenes[i]->testBox(controlObj != nullptr ? controlObj->getWorldBox() : Box3F::Zero))
|
||||||
{
|
|
||||||
if (mSubScenes[i]->testBox(controlObj->getWorldBox()))
|
|
||||||
{
|
{
|
||||||
//we have a client controlling object in the bounds, so we ensure the contents are loaded
|
//we have a client controlling object in the bounds, so we ensure the contents are loaded
|
||||||
hasClients = true;
|
hasClients = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -214,10 +214,11 @@ bool SubScene::evaluateCondition()
|
||||||
|
|
||||||
bool SubScene::testBox(const Box3F& testBox)
|
bool SubScene::testBox(const Box3F& testBox)
|
||||||
{
|
{
|
||||||
if (mGlobalLayer)
|
bool passes = mGlobalLayer;
|
||||||
return true;
|
|
||||||
|
if (!passes)
|
||||||
|
passes = getWorldBox().isOverlapped(testBox);
|
||||||
|
|
||||||
bool passes = getWorldBox().isOverlapped(testBox);
|
|
||||||
if (passes)
|
if (passes)
|
||||||
passes = evaluateCondition();
|
passes = evaluateCondition();
|
||||||
return passes;
|
return passes;
|
||||||
|
|
@ -346,22 +347,22 @@ void SubScene::load()
|
||||||
if (mSaving)
|
if (mSaving)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
GameMode::findGameModes(mGameModesNames, &mGameModesList);
|
||||||
|
if ((String(mGameModesNames).isNotEmpty() && mGameModesList.size() == 0) || !evaluateCondition())
|
||||||
|
{
|
||||||
|
mLoaded = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_loadFile(true);
|
_loadFile(true);
|
||||||
mLoaded = true;
|
mLoaded = true;
|
||||||
|
|
||||||
GameMode::findGameModes(mGameModesNames, &mGameModesList);
|
|
||||||
|
|
||||||
onLoaded_callback();
|
onLoaded_callback();
|
||||||
for (U32 i = 0; i < mGameModesList.size(); i++)
|
for (U32 i = 0; i < mGameModesList.size(); i++)
|
||||||
{
|
{
|
||||||
mGameModesList[i]->onSubsceneLoaded_callback(this);
|
mGameModesList[i]->onSubsceneLoaded_callback(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mOnLoadCommand.isEmpty())
|
|
||||||
{
|
|
||||||
String command = "%this = " + String(getIdString()) + "; " + mLoadIf + ";";
|
|
||||||
Con::evaluatef(command.c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SubScene::unload()
|
void SubScene::unload()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue