diff --git a/Templates/BaseGame/game/core/clientServer/scripts/client/client.tscript b/Templates/BaseGame/game/core/clientServer/scripts/client/client.tscript index 100b6b305..55fcc3b99 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/client/client.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/client/client.tscript @@ -20,7 +20,7 @@ function initClient() if ( isFile( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension ) ) exec( %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension ); - callOnModules("initClient"); + moduleExec("initClient"); // Copy saved script prefs into C++ code. setDefaultFov( $pref::Player::defaultFov ); diff --git a/Templates/BaseGame/game/core/clientServer/scripts/client/connectionToServer.tscript b/Templates/BaseGame/game/core/clientServer/scripts/client/connectionToServer.tscript index a182ff76a..cbd4b46cc 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/client/connectionToServer.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/client/connectionToServer.tscript @@ -32,7 +32,7 @@ function GameConnection::onConnectionAccepted(%this) // datablocks and objects are ghosted over. physicsInitWorld( "client" ); - callOnModules("onCreateClientConnection", "Game"); + moduleExec("onCreateClientConnection", "Game"); } function GameConnection::initialControlSet(%this) @@ -156,5 +156,5 @@ function disconnectedCleanup() // We can now delete the client physics simulation. physicsDestroyWorld( "client" ); - callOnModules("onDestroyClientConnection", "Game"); + moduleExec("onDestroyClientConnection", "Game"); } diff --git a/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript b/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript index 9d65ade2d..de92391af 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript @@ -53,7 +53,7 @@ function initServer() // Specify where the mission files are. $Server::MissionFileSpec = "data/levels/*.mis"; - callOnModules("initServer"); + moduleExec("initServer"); //Maybe this should be a pref for better per-project control //But many physically based/gameplay things utilize materials being detected @@ -169,8 +169,8 @@ function createServer(%serverType, %levelAsset) schedule(0,0,startHeartbeat); } - callOnModules("onCreateGameServer", "Core"); - callOnModules("onCreateGameServer", "Game"); + moduleExec("onCreateGameServer", "Core"); + moduleExec("onCreateGameServer", "Game"); // Let the game initialize some things now that the // the server has been created @@ -204,8 +204,8 @@ function onServerCreated() physicsStartSimulation("server"); loadDatablockFiles( DatablockFilesList, true ); - callOnModules("onServerScriptExec", "Core"); - callOnModules("onServerScriptExec", "Game"); + moduleExec("onServerScriptExec", "Core"); + moduleExec("onServerScriptExec", "Game"); // Keep track of when the game started $Game::StartTime = $Sim::Time; @@ -244,8 +244,8 @@ function destroyServer() deleteDataBlocks(); //Get our modules so we can exec any specific server-side loading/handling - callOnModules("onDestroyGameServer", "Game"); - callOnModules("onDestroyGameServer", "Core"); + moduleExec("onDestroyGameServer", "Game"); + moduleExec("onDestroyGameServer", "Core"); // Save any server settings %prefPath = getPrefpath(); diff --git a/Templates/BaseGame/game/core/utility/scripts/module.tscript b/Templates/BaseGame/game/core/utility/scripts/module.tscript index 5c52c3ea7..151cdb138 100644 --- a/Templates/BaseGame/game/core/utility/scripts/module.tscript +++ b/Templates/BaseGame/game/core/utility/scripts/module.tscript @@ -3,8 +3,8 @@ $traceModuleCalls=false; $reportModuleFileConflicts=true; if (!isObject(ExecFilesList)) new ArrayObject(ExecFilesList); - -function callOnModules(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6) + +function moduleExec(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6) { //clear per module group file execution chain %execArray = new ArrayObject("callOn" @ %functionName @ "_" @ %moduleGroup); @@ -46,6 +46,28 @@ function callOnModules(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %execArray.delete(); } +function callOnModules(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6) +{ + //Get our modules so we can exec any specific client-side loading/handling + %modulesList = ModuleDatabase.findModules(); + %modlist = "modlist:"; + for(%i=0; %i < getWordCount(%modulesList); %i++) + { + %module = getWord(%modulesList, %i); + %modlist = %modlist SPC %module.ModuleId; + if(%moduleGroup !$= "") + { + if(%module.group !$= %moduleGroup) + continue; + } + // match this to i/o signature + if(isObject(%module.scopeSet) && %module.scopeSet.isMethod(%functionName)) + %module.scopeSet.call(%functionName, %var0, %var1, %var2, %var3, %var4, %var5, %var6); + } + if ($reportModuleOrder) + warn(%modlist); +} + function loadModuleMaterials(%moduleGroup) { //Get our modules so we can exec any specific client-side loading/handling