mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Merge pull request #1446 from Areloch/disconnectCallFix
Fix disconnect function call behavior
This commit is contained in:
commit
0eafadb1a0
|
|
@ -111,8 +111,12 @@ function handleConnectionErrorMessage(%msgType, %msgString, %msgError)
|
|||
//-----------------------------------------------------------------------------
|
||||
// Disconnect
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
function disconnect()
|
||||
{
|
||||
callOnModules("disconnect");
|
||||
}
|
||||
|
||||
function Core_ClientServer::disconnect(%this)
|
||||
{
|
||||
// We need to stop the client side simulation
|
||||
// else physics resources will not cleanup properly.
|
||||
|
|
|
|||
|
|
@ -23,4 +23,13 @@ function ToolsModule::onCreate(%this)
|
|||
function ToolsModule::onDestroy(%this)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
function ToolsModule::disconnect(%this)
|
||||
{
|
||||
if ( isObject( Editor ) && Editor.isEditorEnabled() )
|
||||
{
|
||||
EditorGui.saveAs = false; //whatever edits we were doing are irrelevent now
|
||||
Editor.close(MainMenuGui);
|
||||
}
|
||||
}
|
||||
|
|
@ -164,40 +164,3 @@ function toggleEditor(%make)
|
|||
//------------------------------------------------------------------------------
|
||||
// The editor action maps are defined in editor.bind.tscript
|
||||
GlobalActionMap.bind(keyboard, "f11", fastLoadWorldEdit);
|
||||
|
||||
|
||||
// The scenario:
|
||||
// The editor is open and the user closes the level by any way other than
|
||||
// the file menu ( exit level ), eg. typing disconnect() in the console.
|
||||
//
|
||||
// The problem:
|
||||
// Editor::close() is not called in this scenario which means onEditorDisable
|
||||
// is not called on objects which hook into it and also gEditingMission will no
|
||||
// longer be valid.
|
||||
//
|
||||
// The solution:
|
||||
// Override the stock disconnect() function which is in game scripts from here
|
||||
// in tools so we avoid putting our code in there.
|
||||
//
|
||||
// Disclaimer:
|
||||
// If you think of a better way to do this feel free. The thing which could
|
||||
// be dangerous about this is that no one will ever realize this code overriding
|
||||
// a fairly standard and core game script from a somewhat random location.
|
||||
// If it 'did' have unforscene sideeffects who would ever find it?
|
||||
|
||||
package EditorDisconnectOverride
|
||||
{
|
||||
function disconnect()
|
||||
{
|
||||
if ( isObject( Editor ) && Editor.isEditorEnabled() )
|
||||
{
|
||||
EditorGui.saveAs = false; //whatever edits we were doing are irrelevent now
|
||||
%mainMenuGUI = ProjectSettings.value("UI/mainMenuName");
|
||||
if (isObject( %mainMenuGUI ))
|
||||
Editor.close( %mainMenuGUI );
|
||||
}
|
||||
|
||||
Parent::disconnect();
|
||||
}
|
||||
};
|
||||
activatePackage( EditorDisconnectOverride );
|
||||
|
|
|
|||
Loading…
Reference in a new issue