mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
adds a reloadModuleFiles(%moduleGroup); command
method checks last module.filename execution via getTimeStamp() the last time it was run, and compares fileModifiedTime to see if the next time that file had been altered. called in moduleExec
This commit is contained in:
parent
c6a1a42cf0
commit
1b1497d439
|
|
@ -4,8 +4,78 @@ $reportModuleFileConflicts=true;
|
|||
if (!isObject(ExecFilesList))
|
||||
new ArrayObject(ExecFilesList);
|
||||
|
||||
function reformatModTime(%modTime)
|
||||
{
|
||||
%date = getword(%modTime,0);
|
||||
%date = strreplace(%modTime,"/"," ");
|
||||
%date = getword(%date,2) SPC getword(%date,0) SPC getword(%date,1);
|
||||
%hourMinSec = getword(%modTime,1);
|
||||
%hourMinSec = strreplace(%hourMinSec,":"," ");
|
||||
%retTime = %date SPC %hourMinSec;
|
||||
for (%i=0;%i<6;%i++)
|
||||
{
|
||||
%nTry = getWord(%retTime,%i);
|
||||
if (%nTry<10)
|
||||
setWord(%retTime,%i,"0" SPC %nTry);
|
||||
}
|
||||
return %retTime;
|
||||
}
|
||||
|
||||
//example usage: reloadModuleFiles("game");
|
||||
function reloadModuleFiles(%moduleGroup)
|
||||
{
|
||||
//Get our modules so we can exec any specific client-side loading/handling
|
||||
%modulesList = ModuleDatabase.findModules();
|
||||
for(%i=0; %i < getWordCount(%modulesList); %i++)
|
||||
{
|
||||
%module = getWord(%modulesList, %i);
|
||||
if(%moduleGroup !$= "")
|
||||
{
|
||||
if(%module.group !$= %moduleGroup)
|
||||
continue;
|
||||
}
|
||||
if(isFile(%module.ModuleScriptFilePath))
|
||||
{
|
||||
%modTime = fileModifiedTime(%module.ModuleScriptFilePath);
|
||||
if (getWordCount(%modTime)>0)
|
||||
{
|
||||
%doExec = false;
|
||||
if ($lastReExecution $="")
|
||||
{
|
||||
%doExec = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
%modTime = reformatModTime(%modTime);
|
||||
if (strcmp(%modTime,$lastReExecution)>0)
|
||||
{
|
||||
//error("moded:"@ %modTime);
|
||||
//warn("execd:"@ $lastReExecution);
|
||||
%doExec = true;
|
||||
}
|
||||
}
|
||||
if (%doExec)
|
||||
{
|
||||
exec(%module.ModuleScriptFilePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$lastReExecution = getTimeStamp();
|
||||
//erase time seperators
|
||||
$lastReExecution = strreplace($lastReExecution,"_"," ");
|
||||
$lastReExecution = strreplace($lastReExecution,"-"," ");
|
||||
for (%i=0;%i<6;%i++)
|
||||
{
|
||||
%nTry = getWord($lastReExecution,%i);
|
||||
if (%nTry<10)
|
||||
setWord($lastReExecution,%i,"0" SPC %nTry);
|
||||
}
|
||||
}
|
||||
|
||||
function moduleExec(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6)
|
||||
{
|
||||
{
|
||||
reloadModuleFiles(%moduleGroup);
|
||||
//clear per module group file execution chain
|
||||
%execArray = new ArrayObject("callOn" @ %functionName @ "_" @ %moduleGroup);
|
||||
ExecFilesList.push_back(%execArray);
|
||||
|
|
|
|||
Loading…
Reference in a new issue